0

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

什么版本控制系统可以很好地支持这种设置?我主要担心的是它应该支持不同版本之间的合并 - 如果您在生产版本中修复紧急错误,您不想检查所有其他版本并手动修复错误 5 次。

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

4

7 回答 7

4

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

在工作中,我们使用 Perforce,并且我们手动进行集成(借助 Perl 脚本来复制更改列表信息)。我们仔细选择要发布的变更列表(例如,我们可以丢弃有风险的变更列表)。
对于大多数分布式 VCS(Mercurial、Bazaar,可能是 Git 等),使用多个分支(或克隆)是自然的工作流程。

于 2009-04-07T11:40:45.427 回答
2

以我的经验与颠覆作品合并,但非常痛苦(尽管我听说新版本在这方面更好)。Git 和 Mercurial 可以正确合并,没有任何问题。

于 2009-04-07T11:25:11.690 回答
1

如果您真的想处理多个版本但又不想遭受 Clearcase 的痛苦,您应该尝试使用 AccurevPlasticSCM 之类的东西。

Accurev 处理它的流非常强大,你必须习惯它们,但一旦你习惯了它,它就会非常非常强大。

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

在这里,您有跟踪多个分支的分支资源管理器

替代文字

于 2009-04-13T23:00:22.533 回答
1

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

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

大多数 Subversion-Or-Better 的 VCS 系统将支持常见的工作流。这是一个常见的:

  1. 发展在主干
  2. 当发布时,标记主干,例如 1.3.0
  3. 在您制作的标签处创建一个主干分支,例如 1.3.x
  4. 发布基于“标签”的代码(例如 1.3.0)
  5. 恢复主干上新功能的开发
  6. 如果您需要修复生产中的错误,请检查分支并修复它。正常释放它,创建一个新标签(例如 1.3.1)。
  7. 根据需要将分支中的更改合并回主干
  8. 根据需要重复步骤 6 和 7,直到您的下一个版本。

这是另一种常见的做法:

  1. 发展在主干
  2. 当发布的时候,标记主干
  3. 基于“标签”发布到生产环境(例如 1.3.0)
  4. 如果发现错误,则创建一个分支以针对标签修复该错误
  5. 提交新分支并重新标记(例如 1.3.1)
  6. 将该分支合并回主干
  7. 每当发现错误时重复步骤 4、5 和 6

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

于 2009-04-15T22:34:34.717 回答
1

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

Clearcase 非常强大,但管理起来也相应复杂且耗时。

于 2009-04-07T11:14:25.040 回答
1

Team Foundation Server 通过合并支持任意数量的分支。它虽然很不错,但是 2010 版本的功能使分支更加引人注目。请参阅第 10-4 集第 4 集:不再有并行开发的痛苦

于 2009-04-07T11:14:47.050 回答
0

可以配置Telelogic CM Synergy/CM以支持这样的设置。

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

缺点是它真的又大又慢,需要大量的 buildmanager 时间,而且 eclipse 集成几乎无法使用。您可能需要每 5 或 10 名开发人员配备一名全职构建经理。

于 2009-04-07T11:08:34.350 回答