如何在版本控制系统中更好地处理这种情况?
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
...
您可以使用 Subversion,将 thunk 作为主要代码(或主要不稳定代码的特殊分支和常见 QA'ed 的主干),然后为每个客户端创建分支
...
您可以通过两种方式使用 Mercurial:
- 多分支工作流程(与 Git|SVN 相同)- 经典命名分支或书签类型匿名
- 带有 MQ 扩展的单分支模式(默认分支是具有永久变更集的主代码),每个客户特定的变更都是单个整体独立的 MQ 补丁(没有手动合并全局变更,仅更新补丁与更改的基线发生冲突的情况)
我在处理一个项目时有这样的想法,它提供给许多客户一个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 ...
您可以使用 Subversion,将 thunk 作为主要代码(或主要不稳定代码的特殊分支和常见 QA'ed 的主干),然后为每个客户端创建分支 ...
您可以通过两种方式使用 Mercurial:
- 多分支工作流程(与 Git|SVN 相同)- 经典命名分支或书签类型匿名
- 带有 MQ 扩展的单分支模式(默认分支是具有永久变更集的主代码),每个客户特定的变更都是单个整体独立的 MQ 补丁(没有手动合并全局变更,仅更新补丁与更改的基线发生冲突的情况)