合并vcproj文件 - SCM的地狱

26 version-control merge visual-studio

合并项目/解决方案文件是开发人员/ SCM管理员在其源代码管理中执行合并的众所周知的灾难.

举例来说,一个常见的场景:开发是在两个不同分支的项目/解决方案上完成的.当合并回主要开发线时,VCPROJ(和SLN)之间的相似性非常小.

原因是,Visual Studio可能会更改(并更改)这些文件中各种类似XML的元素的位置.例如,Configurations Debug和Release可以在proj文件上的每次保存操作时交换顺序.这使得无法轻松地合并来自每个开发分支的更改,甚至不考虑自动合并.

我可以假设Microsoft正在使用一些perl散列系统来保存vcproj结构,因此在保存操作时不会对文件进行渲染.

我首先想问:有没有人找到一些优雅的方法来解决这个问题?

其次,我想提出两点建议:

  • 请微软重新实现上述文件,并将它们限制为某些严格的元素排序.

  • 找到一个工具(或写一个),按字母顺序,递归地(元素中的所有元素等)对vcproj(xml格式)和sln(sln格式...)文件进行排序.在源文件和目标文件上使用此工具可以轻松指向(并合并)更改,希望Visual Studio读取已排序的合并项目或sln文件.

欢迎任何其他想法和想法.

Von*_*onC 1

您可能需要考虑将您的工具与 SCM 中的触发器相关联(例如 SVN 的重新提交挂钩),以便在这些文件中强制执行重新排序。

然后您将有机会有效地将这些元素合并在一起。