Version control 哪个版本控制支持在多个版本中合并?

Version control 哪个版本控制支持在多个版本中合并?,version-control,merge,branch,branching-and-merging,Version Control,Merge,Branch,Branching And Merging,假设您有一个大型软件项目,您必须同时支持多个分支(版本)。例如,您在网站上有一个生产版本,一个当前由客户测试的集成测试版本,一个用于本地系统测试的测试版本,以及一个开发版本,其中您的开发人员正在破解新功能 什么版本控制系统能够很好地支持此设置?我主要担心的是,它应该支持不同版本之间的合并-如果您在生产版本中修复了一个紧急的bug,那么您不希望检查所有其他版本,并手动修复该bug 5次 如果你有一个答案,我想听听你应用它的项目有多大,你有什么经验。我正在寻找一个明确支持 由开发人员合并-解决方案与

假设您有一个大型软件项目,您必须同时支持多个分支(版本)。例如,您在网站上有一个生产版本,一个当前由客户测试的集成测试版本,一个用于本地系统测试的测试版本,以及一个开发版本,其中您的开发人员正在破解新功能

什么版本控制系统能够很好地支持此设置?我主要担心的是,它应该支持不同版本之间的合并-如果您在生产版本中修复了一个紧急的bug,那么您不希望检查所有其他版本,并手动修复该bug 5次

如果你有一个答案,我想听听你应用它的项目有多大,你有什么经验。我正在寻找一个明确支持 由开发人员合并-解决方案与应用的脚本 构建经理等不会帮助我们。(太危险了,应该合并 由开发人员立即执行,因为他/她最清楚该做什么。)
非常感谢

可以配置以支持这种设置

好的一点是,如果文件在这些版本中保持不变,则所有“更高”的版本都会自动更新,而无需开发人员或构建管理器操作。如果修改后的文件发生了更改,则签入时会立即通知开发人员,并且必须合并这些内容。它支持将相关更改分组为任务和更改请求,并具有相关的跟踪系统

缺点是它非常大而且速度慢,需要大量的buildmanager时间,而且eclipse集成几乎无法使用。您可能需要一个全职的buildmanager,每个5到10名开发人员。

将处理多个分支和修订,并在任何/所有这些分支和修订之间进行合并。您可以随意定义分支,根据需要进行标记,并与这些分支合并。不用说,这会变得异常复杂,IBM提供了一个解决方案来帮助您。您可以以图形方式显示分支(如果有帮助的话)


Clearcase功能惊人,但管理起来却相当复杂和耗时

P>Team Foundation Server支持任意数量的分支,并进行合并。虽然它相当不错,但2010版的特性使分支更加引人注目。请参阅。

根据我的经验,与subversion合并是可行的,但相当痛苦(尽管我听说新版本在这方面更好)。Git和Mercurial确实能够正确地合并,没有任何问题。

我认为大多数(如果不是全部的话)现代SCM都可以做到这一点。不一定是自动的,尽管有些脚本可以以一种非常轻松的方式处理它

在工作中,我们使用Perforce,并手工进行集成(通过一个Perl脚本来复制变更列表信息)。我们谨慎地选择要发布的变更列表(例如,我们可以放弃有风险的变更列表)。

对于大多数分布式VCS(Mercurial、Bazaar,可能是Git等),使用多个分支(或克隆)是自然的工作流程。

如果您真的想处理多个版本,但又不想承受Clearcase带来的痛苦,您应该尝试类似或的方法

Accurev在处理数据流时非常强大,你必须习惯它们,但一旦你习惯了,它就会非常强大

塑料在处理无限数量的分支(及其相应的合并)方面更强大,说起来容易做起来难。你已经提到了所有的灵活性,好的ol CC,但没有神秘的命令或奇怪的配置

在这里,您可以看到分支资源管理器跟踪多个分支


这个问题的答案是流程第一,工具链第二

您需要决定您希望如何访问已知版本(例如,“生产中有什么?”),如何对这些版本进行更改,以及如何将更改传播到其他版本

大多数Subversion或更好的VCS系统将支持通用工作流。以下是一个常见的例子:

  • 发展正在进行中
  • 当需要释放时,标记行李箱,例如1.3.0
  • 在您制作的标记处创建主干的分支,例如1.3.x
  • 根据“标签”发布代码(如1.3.0)
  • 恢复主干上新功能的开发
  • 如果您需要修复生产中的错误,请查看分支并修复它。正常情况下释放该标签,创建新标签(如1.3.1)
  • 根据需要将分支中的更改合并回主干
  • 根据需要重复步骤6和7,直到下一版本
  • 以下是另一种常见做法:

  • 发展正在进行中
  • 到了释放的时候,给行李箱贴上标签
  • 根据“标签”(如1.3.0)发布生产
  • 如果发现一个bug,创建一个分支来修复标签上的bug
  • 在新分支上提交,并重新标记(例如1.3.1)
  • 把那个分支合并回主干
  • 每当发现bug时,重复步骤4、5和6

  • 这些是非常常见且易于实现/理解的;大多数版本控制系统都很容易支持它们。如果您得到更复杂的流程,您将减少可用的工具集,但可能会有更多的功能。

    分支在TFS 2005中对我来说非常有用(大多数时间…)我使用了TFS 2008,但我不知道这是否是版本之间发生变化的原因。开发人员是在签入时合并,还是稍后合并为buildmanager?(后者可能不理解这些更改,所以我认为应该是开发人员)您可以签入一个分支,然后完全独立于签入进行前后合并。您应该(当然)了解合并的结果:-)(为了澄清上述内容,我认为您不必指定角色-开发人员与构建经理等)。这种传统方法的问题是,合并必须由进行标记的构建经理完成,而