我的公司为客户创建了一个Web应用程序,并在一年多前成功部署了它。源代码存储在一个git仓库中。
现在许多其他有不同需求的客户希望通过他们自己的(很少或很大,取决于客户)自定义来获得这个Web应用程序。我所说的不仅仅是外观和感觉,还包括在现有和正在运行的Web应用程序之上专门为他们开发的新功能。
在某些方面,我们有一个基础工作“产品”,我们希望根据客户的需求进行定制,我们无法使用开/关开关管理这些自定义,它们会太多而且会很麻烦。
现在问题是我们如何以有效的方式管理源代码?
我们正在考虑为每个客户创建一个不同的repo,以便将自定义和配置保持良好分离,每个新客户都将拥有基本Web应用程序的分支。这导致一些问题。仅举一例:当我们必须修复常见问题或添加/更改常用功能时,我们必须手动复制N repos上的修复/更改。
为了简单起见,我们可以应用任何模式,最佳实践,方法或工具吗?
答案 0 :(得分:0)
通常有两种方法可以在不同的客户之间管理类似的代码:
如果客户可以拥有回购级别的权限而不是拥有某个分支的权限,那么您最好在单独的回购中管理源代码,以便客户隐私不会泄露。
对于基于公共仓库更新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。