为什么在Visual Studio 2012中默认情况下自动解决冲突?

Sha*_*son 8 version-control tfs visual-studio-2012

我们最近安装了Visual Studio 2012,我正在与我们团队的另一名成员一起开展一个全新的项目,使用Team Foundation Server 2010进行源代码管理.我最近注意到我的一些文件在我办理登机手续时被随机破坏.然后在输出窗口中注意到有关冲突的通知,这些冲突自动解决了!?

事实证明这是Visual Studio 2012中的默认设置!

我在MSDN上发现了一篇关于如何关闭这个心理设置的文章(http://msdn.microsoft.com/en-gb/library/vstudio/ms181432.aspx#automatic_options),但我很好奇是否有人知道为什么这样做潜在的破坏性设置默认会打开?

Edw*_*son 7

因为它是大多数其他工具的默认设置,而且来到Team Foundation Server的人发现令人沮丧的是他们必须明确告诉工具自动注册.更重要的是,人们甚至没有发现很明显他们必须明确地告诉工具自动注册并抱怨通过合并分支产生的大量冲突,因为在许多工具中,用户甚至没有被告知"合并冲突"直到它无法自动化.因此,Team Foundation Server似乎无法正确进行三向合并.

显然,这里正确的默认值是判断调用.我没有成功,但我支持它.

但我担心,默认情况下的这种更改会在合并工作流程中暴露一些问题.Automerge 绝对可以产生人类不会产生的结果,毫无疑问.但它是一个完善的标准,通常被认为是安全的,有用的并且通常是正确的.

如果这在某种程度上是"危险的",那么你的过程应该在你办理登机手续之前抓住这么久.希望你在本地建造并在你办理登机手续之前运行一个完整的测试通行证,你的持续集成构建也会抓住这些错误如果你没有这样做.

如果automerge产生不正确的输出,您始终可以手动合并文件.当然,您也可以将automerge选项设置为"off".

  • 在以前的VS版本中,automerge会比不支持更频繁地失败,并且可以以微妙的方式(例如,某些资源仅在XAML中引用从项目文件中丢失)这样做会经常无法获取多年.相比之下,一个人可以手动合并,接近100%的准确度,并可以对合并负责(而不是责怪工具),因此我在我的团队中禁止自动化.将它作为默认设置给了我一个非常令人讨厌的惊喜,因为我在没有问我的情况下丢失了我的本地更改,这一定是错的. (3认同)