为多个客户管理多个git发布分支

时间:2016-08-19 09:29:38

标签: git branch

我公司有一个我们向多个客户销售的软件。 但每个客户都有一些不同的要求(不仅仅是“将我们的徽标放在这里”)。所有这些核心都是相同的,但有些不需要某些模块,其他需要它们包括修改。

我想在一个git存储库中管理所有这些,所以我对它们都有相同的核心,但我不太确定如何以最佳方式执行此操作。

我读到了Git Flow,以及如何创建单个项目succesful regarding branches,它提供了这样的分支模型:

http://nvie.com/img/git-model@2x.png

现在,我们有多个客户,因此有多个release分支(release-customer1-v1.2release-customer2-v3.8,...),但它们都建立在同一个master分支上

有没有策略来管理这种混乱?

2 个答案:

答案 0 :(得分:2)

感谢@AnimiVulpis。他/她的回答给了我一个暗示。 这是我的解决方案:(也基于nvie的策略)

1.从项目中提取确切的公共部分。创建一个名为shared / develop

的分支

2.基于共享/开发,创建customer1的分支

git checkout -b local/customer1/develop origin/shared/develop
#push this new branch to remote
git push origin local/customer1/develop:origin/customer1/develop
git push origin local/customer1/develop:origin/customer1/master

3.与步骤2同步。创建其他客户的分支。

4.所有客户使用的所有常用部件都应该在共享/开发分支上工作。

4.所有针对customerN的功能开发都应该在自己的customerN / develop分支上工作。应该注意所有客户的分支应该在新功能之前从shared / develop分支合并 编码

答案 1 :(得分:1)

我认为一个简单可行的解决方案可能是为每个客户提供developrelease分支。

修改:之前的句子中develop曾被称为master,但我喜欢更好地发展

  • 所有常见的事情都会存在于共享的develop分支
  • 每个客户都拥有自己的developrelease分支机构

您必须格外小心,进行影响共享develop中所有客户的更改以及仅影响其各自分支机构的特定客户的更改。

情景I

您为客户A 开发功能A ,为客户B 开发功能B

如果这些功能不共享代码,则应将其保留在相应的develop-*分支中,例如功能A 将在develop-customer-A功能B develop-customer-B

中开发

如果这些功能共享代码,则应在共享develop上开发共享部分,并在其各自的分支develop-*

中为客户提供特定部分