这种情况应该建分支还是建仓库

2019-05-23 15:34:10 +08:00
 shuang
一个 toB 的 SaaS 系统,包含一个通用版,还有若干大客户定制版。定制版是在通用版的基础上开发的,用于满足客户的个性化需求,不同客户对同一功能的需求可能是有冲突的。
之前是用 svn 管理代码的,每个版本都是一个独立的仓库。有时候某个功能有 bug,所有版本都要修复;定制版上线了一个功能,通用版可能也想要。只能手动复制代码,每个仓库提交一遍。

现在准备切换到 git,是应该在同一个 repo 下建多个不同的 branch,还是建多个不同的 repo ?

https://www.v2ex.com/t/404373
https://www.v2ex.com/t/553604
相关讨论帖里提到了一些方案
开关控制:通用平台目前有这样做,但也仅限小的差异
模块化:结合我司的产品和研发资源来看可能做不到
4395 次点击
所在节点    git
22 条回复
shuang
2019-05-23 15:46:05 +08:00
@iguoji
@daodao116
你们现在是怎么做的呢
swulling
2019-05-23 15:47:38 +08:00
最好是一套代码库,功能区别用配置文件解决。

把 diff 全都做成可配置的,如果是两套代码,迟早分裂
shuang
2019-05-23 16:29:10 +08:00
@swulling
目前通用版和定制版已经分裂了,应该选哪种方案
ryanking8215
2019-05-23 16:40:44 +08:00
如果通用版和定制版分别要区分 master 分支,develop 分支,feature 分支,release 分支,hotfix 分支等(这些概念取自 gitflow), 建议使用多仓库方式管理。
index90
2019-05-23 16:47:32 +08:00
同一个 repo 方便 cherrypick 和 bugfix,不同 repo 就只能人工 copy 代码了。

如果各自演进,互不相干就分开吧。既然分裂了,分 repo 只是时间问题。
shuang
2019-05-23 16:53:40 +08:00
@ryanking8215
想过用 masterA developA masterB developB 这种方式,就是分支看起来有点乱

@index90
目前就是在纠结是否要分 repo
同一 repo 多个分支方便合并代码,但是分支有点乱
不同 repo 分支好维护,合并代码很麻烦
mooncakejs
2019-05-23 16:55:11 +08:00
拆分 module,公共部分单独 repo (可能多个), 不同定制版 submodule 引入 公共的 repo
hhhsuan
2019-05-23 16:57:37 +08:00
如果不打算合回来的话,那就分仓库
annielong
2019-05-23 16:58:26 +08:00
我手头上是分模块,核心通用的做 master,定制部分做分支,反正适合自己用就行
xfriday
2019-05-23 17:22:29 +08:00
建议做成 N+1 个项目,其中 1 作为公共服务以微服务的方式给其他 N 个项目调用
chaleaochexist
2019-05-23 17:27:31 +08:00
分支.
最起码有 cherry-pick.
pmispig
2019-05-23 17:43:39 +08:00
不同的分支,因为涉及到代码合并,有时候通用版的功能要合并到定制版
index90
2019-05-23 17:57:18 +08:00
@shuang branch 可以建“文件夹”啊,管理怎么乱呢?
strongcoder
2019-05-23 17:57:46 +08:00
多分支 不要多 repo 就像上面很多人说 最起码有个 cherry-pick 好用
dremy
2019-05-23 18:00:35 +08:00
分仓库啊,合并的事情,不是可以通过 pull upstream 来解决么
Xbluer
2019-05-23 18:15:58 +08:00
git flow 里面有 support 类型的分支。应该是符合你的需求的
shuang
2019-05-23 18:57:24 +08:00
@dremy 分仓库有哪些优点呢。我对 git 还不是太熟,上游的一部分代码合并到下游,下游的一部分代码合并到上游,这些都能实现吗

@Xbluer support 只是人为约定的分支名称吧
shuang
2019-05-23 18:59:38 +08:00
@index90
siteA/master
siteA/develop
siteB/master
siteB/develop

是这样吗
pangliang
2019-05-23 19:04:17 +08:00
对于 git 来说多仓库只是不同的 remote 而已
zibber
2019-05-23 20:12:58 +08:00
两个 repo 耦合的用 submodule

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/566979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX