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

时间:2015-06-25 17:40:43

标签: git svn tortoisesvn

当我处理一个项目时,我有这个想法,这个项目通过一个Web软件包提供给许多客户,并且每个客户端都可能有一些新的更改请求,所以我将不得不使用一个repo(或分支) )对于一个客户端,所以我可以继续更新它自己的请求。然后,只要有越来越多的客户,我将不得不保留尽可能多的副本,它会变得筋疲力尽......

它们是软件中的两种类型的更改,一种是系统错误,将在所有副本中修复,一种是来自不同客户端的每个请求的更改,并且应仅针对其副本进行更新。

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

  • 保存软件的基本代码库
  • 如果一个文件仅针对一个客户端更改规范进行了任何更改,我们只需要为他保存更改的文件,并且所有其他文件仍然与基础共享

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用具有主分支的git作为主代码,然后使用每个客户端的子分支。

进入每个客户端分支进行一次性更改并将其保持分开。

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

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

答案 1 :(得分:0)

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

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

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