version-control - 为什么在 Visual Studio 2012 中默认启用自动解决冲突?

标签 version-control tfs visual-studio-2012

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

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

我在 MSDN 上找到了一篇详细介绍如何关闭此设置的文章 ( http://msdn.microsoft.com/en-gb/library/vstudio/ms181432.aspx#automatic_options ),但我很好奇是否有人知道为什么默认情况下会启用这种具有潜在破坏性的设置?

最佳答案

因为它是大多数其他工具的默认设置,而使用 Team Foundation Server 的人们发现他们必须明确告诉该工具进行自动合并令人沮丧。更重要的是,人们甚至没有发现他们必须明确告诉工具自动合并并提示合并分支产生的大量冲突,因为在许多工具中,用户甚至没有被告知“合并冲突”,直到它不能被自动合并。因此,Team Foundation Server 似乎未能正确执行三向合并。

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

不过,我担心默认值的这种更改会暴露您的合并工作流程中的一些问题。 Automerge 可以 absolutely produce results that a human wouldn't produce ,对此毫无疑问。但它是一个完善的标准,通常被认为是安全、有用和正确的。

如果这在某种程度上是“危险的”,那么您的过程应该在您 checkin 之前很久就被捕获。希望您在 checkin 之前很久就已经在本地构建并运行完整的测试通过,如果您未能成功,您的持续集成构建也会捕获这些错误这样做。

如果自动合并产生错误的输出,您可以随时手动合并文件。而且,当然,您也可以将自动合并选项设置为“关闭”。

关于version-control - 为什么在 Visual Studio 2012 中默认启用自动解决冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438530/

相关文章:

version-control - Pharo - 如何在版本控制中共享静态资源?

svn - 将 Subversion 集成到具有简单文件存档的应用程序中是否有点过分?

visual-studio-2010 - TFS 2010版本控制

c++ - getline 错误

c# - 如何打开项目中的源文件?

version-control - 差异文件查看器?

git - Git 中的分支是什么?

sql-server - Team foundation Server 2012 数据库大小

version-control - Team Foundation Server - 随历史移动源

javascript - 为什么 jslint 限制一行中的字符数?