8

我们使用 Subversion 作为我们的源代码控制系统,并将 VisualStudio 项目文件 (vcproj) 存储在源代码控制系统中,我认为这是正常的。在 Subversion 中,我们不使用任何形式的文件锁定,因此如果两个开发人员同时在同一个项目上工作,并且都向项目中添加文件或更改设置,那么第二个提交的人必须合并更改。

您如何合并这些更改?

vcproj 文件只是文本文件,因此可以手动编辑它们,但它们不太适合手动编辑,尤其是初级开发人员。

我能想到的方法是

  • 从 svn 获取最新版本并手动重新添加所有本地更改
  • 手动编辑文件以解决自动合并的任何冲突
  • 实施某种形式的锁定方案以防止同时更改
  • 在开发人员之间达成协议,这样他们就不会同时进行更改

目前我们正在使用手动重新添加所有更改的第一个选项,但这很耗时,我想知道是否有更好的方法。

对于源文件,自动合并功能大部分时间都有效,我们不会遇到很多冲突。

4

7 回答 7

4

我发现选项 2(手动编辑文件)通常效果很好,只要您使用好的差异工具(我使用WinMerge)。我遇到的主要问题是 Visual Studio 有时会重新排序文件。但是,如果你有一个好的 diff/merge 工具,那么它应该能够区分更改的内容和移动的内容。这可以有很大帮助。

于 2008-10-03T13:22:44.213 回答
3

您可能会发现Project: MergeTools for SLN 文件很有用

于 2010-10-23T05:41:49.997 回答
1

这是一个棘手的问题,我认为是 Visual Studio 体系结构的一个弱点。我们找到的方法是根本没有源代码控制中的项目文件,并有一个处理配置设置的构建脚本。

替代方案非常混乱,我们无法保证开发人员之间的构建或环境一致。这导致了大量的下游集成问题,最终我们采取了从源代码控制中删除项目文件的严厉步骤。

开发人员的环境仍然可能会出现偏差,但是当他们尝试自己构建东西时就会出现这种情况。

于 2008-10-03T13:26:43.003 回答
1

在这里使用 TFS,但我认为这没有什么不同。
我们也不锁定,有时还要处理合并项目文件。我从来没有发现它是那么复杂或很大的问题。我们很少遇到无法自动合并的问题,手动合并过程非常简单。

对此只有一个警告:经常检查!如果您对项目结构进行了重大更改并且没有立即将它们签入,那么这些更改可能会开始加剧以后合并的复杂性。如果我对项目结构进行重大更改,我通常会提醒每个人。我会要求他们都检查他们当前的工作,然后自己处理合并。

于 2008-10-03T13:43:54.217 回答
1

我最近发现了这个:http: //www.codeproject.com/KB/macros/vcproj_formatter.aspx 如果您在 vcproj 文件及其修改版本上运行此工具,那么您可以轻松地将它们与您喜欢的文本合并一起合并工具,此外,结果是一个更紧凑漂亮的 vcproj 文件。

于 2010-12-05T22:12:28.117 回答
0

选项 1 和 2 不是相互排斥的 - 如果开发人员是初级水平,让他们使用选项 1(重新获取项目文件并重新进行更改),如果这对他们来说更舒服的话。对于更高级的开发人员,选项 2(使用合并工具进行合并)非常好。

我认为这是目前没有灵丹妙药的情况 - 有时合并是一种痛苦。

于 2008-10-04T00:02:50.663 回答
-1

我们使用差异工具 ( WinMerge ) 来合并更改。项目文件(大部分)是非常直接的 XML。不过,这里的关键是,合并时绝不应该有任何意外,因为良好的沟通是有效源代码控制的基石的一部分。

只要人们进行交流,同时对项目进行更改是完全可以的。

于 2008-10-03T13:23:35.397 回答