[讨论] 共用程式码管理

楼主: ripple0129 (perry tsai)   2020-02-24 00:53:54
抛砖引玉一下
看看各家对于共用程式码的管理方式
先说痛点
在不同的服务中
有必须共用的程式码
譬如说DB schema的model
譬如说常用的utils
相同的商业逻辑但不同服务都需要使用到
如果不整理起来就会变成是
当一处更新就要复制贴上到每个服务
目前我主要处理方式为
git submodule
在每个服务下建立一个共用的submodule
一个服务有更新其他服务就git pull即可
共用也牵涉到很多问题
最常遇到的就是依赖问题
A服务与B服务共用一个class
但是C服务不需要
而这个class依赖某个套件
则可能逼迫C服务必须安装此套件
但如果共用的submodule要细分
则可能要变成AB用AC用BC用ABC用
四个submodule
管理起来不会更容易
是说还有没有更优雅的解决方式
作者: x000032001 (版废了该走了)   2020-02-24 01:08:00
monorepo
作者: NDark (溺于黑暗)   2020-02-24 01:14:00
我提供我的解法. 基本上跟你的尝试很类似.用git submodule但是每个模组都独立放一个branch.并搭配不同的资料夹.master 就是所有模组的集合.如果单只要一个功能. pull的时候就只checkout那个branch.如果需要复合的功能. 可以checkout out多个repo.也可以 merge一个复合型branch来供应这个专案需求.测试也是另一个branch.这样专案使用就不需要引入测试专案.
作者: ssccg (23)   2020-02-24 09:53:00
用build来管理相依性,不用版控来管理
作者: APTON (玮玮)   2020-02-24 19:14:00
好奇大家怎么处理!
作者: newsbielt703 (3o'clock)   2020-02-24 21:07:00
Lerna manorepo?
作者: Phenomenon (Kuma)   2020-02-25 20:59:00
Monorepo
作者: alan3100 (BOSS)   2020-02-26 21:14:00
dependency management,没有明确最小buildsize需求不建议自己搞, runtime加载很容易怎么死都不知道下游自己客制维护又费时费力,autotest跟monitor要很强壮

Links booklink

Contact Us: admin [ a t ] ucptt.com