9

我正在为我们的团队(1 到 2 名开发人员)评估版本控制系统,并且想知道 TFS 2012 版本控制与 Mercurial 在合并和分支方面的比较。我们没有一个庞大的团队,可能只有我和另一个开发人员,所以我们可能不需要 DVCS 提供的强大的分支/合并功能。就其功能而言,我无法找到有关 TFS 2012 版本控制的太多信息。任何人都可以指点我指南或突出一些功能吗?请注意,我们只能在 VS 专业版上访问 TFS 2012 的独立版本。

谢谢

4

4 回答 4

7

Mercurial 分支在一个关键方面与 TFS 不同。TFS 将您的分支存储在文件空间的不同部分,而 Mercurial 将它们存储在历史记录本身中。这大大减少了分支和合并中涉及的摩擦。例如,这意味着:

  • 分支是隐式创建的,只需更新到最新版本以外的版本,然后在此之上提交。
  • 分支也被隐式地关闭,再次,简单地通过合并。
  • 可以隐式地重新打开分支,就像您首先创建它们一样。
  • Mercurial 让您可以非常轻松地在原地切换分支。您不需要设置单独的工作区映射,也不需要从一个目录更改到另一个目录。
  • 分支可以是匿名的。
  • 尽管 TFS 具有“无根据的合并”(这基本上意味着它与不处于直接父/子关系的分支存在大量问题),但 Mercurial 中没有这样的事情。总是有可能在两个修订版之间找到一个共同的起源,无论它们各自的分支相距多远。
  • TortoiseHg 中的分支图形视图与您的项目历史集成在一起,让您更容易理解分支和合并的实际工作原理。

分支和合并有几个优点,甚至适用于小型团队或单独的开发人员。一个这样的例子是即使您在开发中还有其他功能,也能够修复生产系统上的错误。另一个例子是探索性或实验性开发:如果一种方法行不通,您可以轻松地回滚到开始并尝试第二种不同的方法,同时仍然保留原始方法以防万一您需要参考它。

于 2012-12-13T11:21:42.430 回答
2

之前的“答案”有些奇怪。TFS 2012 中的分支和合并工作与您期望的完全一样,具有 GUI 和命令行实现。这是一个很好的文档,相当完整地涵盖了该主题:

ALM 游侠指南 已更新

于 2012-11-09T19:30:07.143 回答
0

前言:

我与 TFS 没有任何关系,也从未使用过它

脸:

最新的“tfs2012”问题,至少有一些(如何设置 TFS 以迎合多个客户的多个项目TFS 2012:将二进制文件与构建和源代码相关联TFS 2012 禁用多重签出不起作用),向我们展示了问题,其中我从来没有考虑过 Mercurial 中的问题(有时会添加一些外部工具)。但您也可以理解,TFS 定位为完整的 ALM 工具,而不是 Mercurial 的纯 SCM。

James McKay的“Team Foundation Server 是版本控制工具的 Lotus Notes”并不是最新的文章(2011 年 2 月),但我认为至少有些陈述仍然有效。

分支合并的数量仅与团队规模相关,主要取决于开发风格,开发人员的习惯

于 2012-10-31T16:37:44.827 回答
0

如果您在一个小团队中,毫无疑问选择 Mercurial。

Mercurial 对于您将使用的特定开发工作流程来说是轻量级和灵活的。它更适合较小的团队,事实上,它甚至适合单人开发,因为它不会带来任何管理开销。

关于合并的必要性,它实际上并不是您所暗示的高级功能:它是大多数(全部?)非分布式 VCS 无法正确处理的非常基本的功能。你现在可能不需要它,但如果你需要它,你会在 Mercurial 中拥有它并且它可以正常工作。

于 2012-11-03T23:59:13.987 回答