• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pureGirl
V2EX  ›  程序员

没去过大厂,好奇大厂这种比较复杂的 app 是如何给每个部门划分代码权限的

  •  
  •   pureGirl · Sep 1, 2024 · 9262 views
    This topic created in 796 days ago, the information mentioned may be changed or developed.

    然后怎么提交合并,怎么管理的呢

    34 replies  •  2024-09-03 17:15:12 +08:00
    tcper
    tcper
    Sep 1, 2024❤️1
    1
    不是把代码放在一个仓库里,分很多项目
    基础设施部门搞一个 runtime ,比如类似小程序的 runtime
    其它每个部门的 app ,都是独立开发独立部署
    最后有一个部门,一般是开发和运营决定什么时候发布
    这个需要开发很多配套的系统,比如内部的开发测试框架,内部 app 的发布审批系统等等。
    iOCZS
    iOCZS
    Sep 1, 2024
    2
    很多都小程序化了,把容器开发好,配置入口即可
    povsister
    povsister
    Sep 1, 2024
    3
    NA 客户端一定是 mono repo 最好,拆仓是自讨苦吃。搞动态化搞 web 的另说。
    服务端早就微服务了,除了一套鸡架外业务仓随你怎么划
    7gugu
    7gugu
    Sep 1, 2024 via iPhone
    4
    React Native 化时候,就只是分成了三个仓库,React (所有业务代码都放一个大仓里,然后从大仓里构建产物发布),Native 分成两个仓库,对应 iOS 和 Android 各自的客户端实现。
    layxy
    layxy
    Sep 1, 2024
    5
    我不是 app 开发,但是之前和 app 开发问过相似的问题,他们 app 是分模块的,每个模块可以单独启动和测试,最终发版会整合到一起,他们没有完整的项目代码权限,只有他们负责的模块的权限,至于怎么协调和交互的没仔细问题,甚至每个模块调用的网关都不是同一个
    Erniu
    Erniu
    Sep 1, 2024
    6
    分模块,每个模块一个应用,应用开发成员有 push 代码的权限,其他的 仓库成员 只有查看权限
    Erniu
    Erniu
    Sep 1, 2024
    7
    我说的是服务端
    vituralfuture
    vituralfuture
    Sep 1, 2024 via Android
    8
    一个基础库,里面提供文件访问,事件驱动,网络请求,json 操作等基础能力。另一个仓库里是产品源码,包括所有端,所有产品线的源码,只是他们入口或者上层壳工程不一样
    muam
    muam
    Sep 1, 2024❤️2
    9
    app 做一个套壳,然后内部每个页面都是 小程序化了,然后公共会给一个版本的壳,然后前端在自己部门的页面填坑,填完之后会有流水线 自动打包一套 app 出来 做集成测试,

    至少我知道携程内部是这么干的,毕竟功能太多了
    muam
    muam
    Sep 1, 2024
    10
    @logic2 每个业务线 等于一个小程序,都有自己的仓库,需要一些 app 提供的原生功能,基本上公共也做好了,业务部门只管调用就完了
    plp
    plp
    Sep 1, 2024 via iPhone❤️1
    11
    说出来你可能不信 有专门一个团队负责总合并 部署 review…. 不能直接提交 你想提交要发起提交请求 不合规或者违反相关规范这个团队会给你打回来 你得改好了再次提交
    zu1y
    zu1y
    Sep 1, 2024
    12
    代码加保密等级,最低等级的就所有人都有权限,高等级的按需申请呗。绝大多数工程代码都是屎,没啥好看的
    golangLover
    golangLover
    Sep 1, 2024 via Android
    13
    app 的话 decompile 都能看到。分拆的意义在哪里。
    leconio
    leconio
    Sep 1, 2024 via iPhone
    14
    原生的话业务代码可能分多个库,每个人都有相关所有代码权限,和自己不相关的能读不能写,写了也没人给你评,和自己相关的评了才入仓。
    基础代码,比如网络、埋点、升级、日志这类的。都是 sdk 集成,出问题拉群解决,解决不了上升。
    页面内 h5 ,他们要什么能力或者就提过来。我们没有前端仓库的权限,发版流程也不参与。
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Sep 1, 2024
    15


    假如都是同一个团队,老板偏好是利用同一个仓库的话:会划分不同的版本、features 。
    CI/CD 系统必备,有专门的人来配置维护。
    小组成员可以拉相关分支在本地开发,然后用发布系统发布(简单理解为 CI/CD 即可)
    wow0o
    wow0o
    Sep 1, 2024 via Android
    16
    默认互相不给权限,只需要实现好申请权限流程就行了
    securityCoding
    securityCoding
    Sep 2, 2024 via Android
    17
    没那么严格,你要用就申请。。。
    devfeng
    devfeng
    Sep 2, 2024 via Android❤️1
    18
    17L 已经说完了,要用就申请权限,提代码就走 merge request ,最多就是复杂一点的项目会搞多仓,这时候无非就是多申请几个权限。。。
    mahaoqu
    mahaoqu
    Sep 2, 2024
    19
    事实就是小程序化的 app 用户体验会直线下滑,甚至还不如直接用微信小程序。
    WildCat
    WildCat
    Sep 2, 2024
    20
    微软:乱搞,挖坑,最后没人维护,看看 onedrive ios 就知道了
    300
    300
    Sep 2, 2024 via Android
    21
    我好奇的是分拆了是不是就不能共用代码了

    很多工具类都得单独写一套
    Biggoldfish
    Biggoldfish
    Sep 2, 2024
    22
    monorepo 就没那么多事了
    timelessg
    timelessg
    Sep 2, 2024 via Android
    23
    主工程基本上就是个壳,具体业务都在模块里,管理方式像 ios 就是魔改的 pod ,source/.a 可以根据需要配置,你有这个库的权限就可以拉到 source 否则就用.a ,提交代码也是按模块提交,jk 打包通过后合并代码编译.a ,更新主工程 pod
    zoharSoul
    zoharSoul
    Sep 2, 2024
    24
    @logic2 #9 京东也是这种
    shaozelin030405
    shaozelin030405
    Sep 2, 2024
    25
    monorepo 加分 owner 吧。
    ByteRan
    ByteRan
    Sep 2, 2024
    26
    @winterbells 可以的。大点的项目,有几千个 module ,module 又分为 公共 module 、业务 module 、平台 module
    yinshaojun96
    yinshaojun96
    Sep 2, 2024
    27
    @GeekGao 这扭曲的线是拿 plantuml 画的吧?
    unco020511
    unco020511
    Sep 2, 2024
    28
    分模块,可以拆分为多个仓库,中台提供类似容器及相关的基础库
    sampeng
    sampeng
    Sep 2, 2024
    29
    看老板
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Sep 2, 2024
    30
    echoechoin
    echoechoin
    Sep 2, 2024
    31
    每个模块都打包成 rpm
    ZhaokunZhang
    ZhaokunZhang
    Sep 3, 2024
    32
    前端是 Monorepo
    a7851578
    a7851578
    Sep 3, 2024
    33
    @winterbells 内部开源
    debugksir
    debugksir
    Sep 3, 2024
    34
    分成 N 个小程序的话,那如何用到共享状态怎么办?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2186 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 03:05 · PVG 11:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.