V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pureGirl
V2EX  ›  程序员

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

  •  
  •   pureGirl · 2024-09-01 14:59:12 +08:00 · 7837 次点击
    这是一个创建于 379 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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


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

    很多工具类都得单独写一套
    Biggoldfish
        22
    Biggoldfish  
       2024-09-02 08:06:10 +08:00
    monorepo 就没那么多事了
    timelessg
        23
    timelessg  
       2024-09-02 08:17:21 +08:00 via Android
    主工程基本上就是个壳,具体业务都在模块里,管理方式像 ios 就是魔改的 pod ,source/.a 可以根据需要配置,你有这个库的权限就可以拉到 source 否则就用.a ,提交代码也是按模块提交,jk 打包通过后合并代码编译.a ,更新主工程 pod
    zoharSoul
        24
    zoharSoul  
       2024-09-02 09:49:26 +08:00
    @logic2 #9 京东也是这种
    shaozelin030405
        25
    shaozelin030405  
       2024-09-02 10:18:09 +08:00
    monorepo 加分 owner 吧。
    tanranran
        26
    tanranran  
       2024-09-02 10:23:47 +08:00
    @winterbells 可以的。大点的项目,有几千个 module ,module 又分为 公共 module 、业务 module 、平台 module
    yinshaojun96
        27
    yinshaojun96  
       2024-09-02 10:51:15 +08:00
    @GeekGao 这扭曲的线是拿 plantuml 画的吧?
    unco020511
        28
    unco020511  
       2024-09-02 11:09:47 +08:00
    分模块,可以拆分为多个仓库,中台提供类似容器及相关的基础库
    sampeng
        29
    sampeng  
       2024-09-02 11:51:12 +08:00
    看老板
    R4rvZ6agNVWr56V0
        30
    R4rvZ6agNVWr56V0  
       2024-09-02 12:51:17 +08:00
    echoechoin
        31
    echoechoin  
       2024-09-02 18:29:19 +08:00
    每个模块都打包成 rpm
    HuskyYellow
        32
    HuskyYellow  
       2024-09-03 14:17:41 +08:00
    前端是 Monorepo
    a7851578
        33
    a7851578  
       2024-09-03 14:59:27 +08:00
    @winterbells 内部开源
    debugksir
        34
    debugksir  
       2024-09-03 17:15:12 +08:00
    分成 N 个小程序的话,那如何用到共享状态怎么办?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:16 · PVG 10:16 · LAX 19:16 · JFK 22:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.