如何管理不同客户的常见产品自定义的源代码

时间:2017-12-08 09:32:24

标签: git version-control repository git-fork

我的公司为客户创建了一个Web应用程序,并在一年多前成功部署了它。源代码存储在一个git仓库中。

现在许多其他有不同需求的客户希望通过他们自己的(很少或很大,取决于客户)自定义来获得这个Web应用程序。我所说的不仅仅是外观和感觉,还包括在现有和正在运行的Web应用程序之上专门为他们开发的新功能。

在某些方面,我们有一个基础工作“产品”,我们希望根据客户的需求进行定制,我们无法使用开/关开关管理这些自定义,它们会太多而且会很麻烦。

现在问题是我们如何以有效的方式管理源代码?

我们正在考虑为每个客户创建一个不同的repo,以便将自定义和配置保持良好分离,每个新客户都将拥有基本Web应用程序的分支。这导致一些问题。仅举一例:当我们必须修复常见问题或添加/更改常用功能时,我们必须手动复制N repos上的修复/更改。

为了简单起见,我们可以应用任何模式,最佳实践,方法或工具吗?

1 个答案:

答案 0 :(得分:0)

通常有两种方法可以在不同的客户之间管理类似的代码:

  • 选项1:在同一个仓库中的单独分支中管理每个客户的代码。
  • 选项2:在不同的存储库中管理每个客户的dode。

如果客户可以拥有回购级别的权限而不是拥有某个分支的权限,那么您最好在单独的回购中管理源代码,以便客户隐私不会泄露。

对于基于公共仓库更新N repos的问题,您可以分别从公共仓库中挑选最后一次提交到N repos:

# In a local customer repo
git remote add common <URL for the common repo> -f
git cherry-pick common/master -X theris

而且,由此引起的,你可以通过脚本同时从普通回购中提取到N repos。