如何在版本控制系统中更好地处理这种情况?

How to handle this situation in Version Control System better?

我在处理一个项目时有这样的想法,它提供给许多客户一个web软件包,每个客户都可能有一些新的变更请求,所以我将不得不使用一个repo(或分支)为一个客户,所以我可以根据他们自己的要求不断更新它。然后只要客户端越来越多,我就得维护多少份,就累死了...

软件的改动有两种,一种是系统bug,会在所有副本中修复,一种是根据不同客户端的请求进行改动,应该只更新自己的副本。

当我尝试更新系统错误修复时,我正在使用 Win-merge 比较每个副本与基础副本之间的差异,我在想我们是否可以这样做:

所以每次如果在基本代码中发现错误,我只需要修复错误,所有代码也会更新,如果错误只在特定客户端的一个更改文件中,我也必须做 Win-merge,但仍然会节省时间..

我想知道这是否可以在某些 VCS 中实现,例如 git 或 SVN?或者合并和我们目前拥有的 VCS 的任何功能,对于这种情况是否有更好的解决方案?

您可以使用 git 将 master 分支作为主要代码,然后为每个客户端创建子分支。

进入每个客户分支机构进行一次性更改并将其分开。

然后对于较大的更改,进入一个开发分支来测试和完成您的代码 QA 将开发分支合并到 master 中,然后您可以为 运行 创建一个 git 命令别名所有

git checkout ClientBranch1 && git merge master && git push git checkout ClientBranch2 && git merge master && git push ...

  1. 您可以使用 Subversion,将 thunk 作为主要代码(或主要不稳定代码的特殊分支和常见 QA'ed 的主干),然后为每个客户端创建分支 ...

  2. 您可以通过两种方式使用 Mercurial:

    • 多分支工作流程(与 Git|SVN 相同)- 经典命名分支或书签类型匿名
    • 带有 MQ 扩展的单分支模式(默认分支是具有永久变更集的主代码),每个客户特定的变更都是单个整体独立的 MQ 补丁(没有手动合并全局变更,仅更新补丁与更改的基线发生冲突的情况)