如何管理源控件中由多个开发人员更改的.vcproj文件?

时间:2008-10-03 13:18:25

标签: visual-studio svn merge

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

如何合并这些更改?

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

我能想到的方法是

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

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

对于源文件,自动合并功能在大多数情况下都能正常工作,并且我们不会遇到很多冲突。

7 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

您可能会发现Project: MergeTools for SLN file有用

答案 2 :(得分:1)

这是一个棘手的问题,我认为Visual Studio体系结构存在缺陷。我们发现它的方式是根本没有源代码控制中的proj文件,并且有一个处理配置设置的构建脚本。

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

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

答案 3 :(得分:1)

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

对此只有一点需要注意:经常办理登机手续!如果对项目结构进行重大更改并且不立即检查它们,则这些更改可能会开始加剧以后合并的复杂性。如果我对项目的结构做出重大改变,我通常会让每个人都站起来。我会让他们所有人检查他们目前的工作,然后自己处理合并。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:-1)

我们使用差异工具(WinMerge)来合并更改。项目文件(大部分)是非常简单的XML。但是,关键在于合并时不应该有任何意外,因为良好的沟通是有效源控制的基石。

只要人们沟通,对项目的同时更改就完全没问题。