解决大型csproj文件中的合并冲突

时间:2014-06-11 08:11:04

标签: visual-studio version-control merge perforce

.csproj文件采用xml格式,似乎Visual Studio以随机顺序添加元素。 Perforce merge将.csproj文件视为文本文件(订单很重要)。这导致了合并的噩梦。有没有办法如何:

  1. (首选)强制perforce合并来处理像.xml文件一样的.csproj文件(节点的顺序并不重要)
  2. 强制Visual Studio在.csproj中保留某种xml元素的排序(也许是插件?)
  3. 更新

    似乎已经有功能请求 - http://p4ideax.com/ideas/585/intelligent-support-for-xml-when-doing-merges 虽然它还没有足够的票数。

    更新2 似乎perforce人们已经改变了他们的投票系统,新的网址是 https://perforce.ideas.aha.io/ideas/P4D-I-77

2 个答案:

答案 0 :(得分:5)

我刚刚在GitHub上创建了一个名为CsProjArrange的项目。我创建它来修复我的git存储库中的合并问题。还有一些需要解决的问题,所以如果你看到任何可以改进的东西,我会接受一些拉动请求。

您只需将其设置为git中的.csproj文件的干净过滤器。

答案 1 :(得分:1)

我见过一个已知的VS问题,关于支持项目文件中的文件模式。你指的是这个问题吗? http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4512873-vs-ide-should-support-file-patterns-in-project-fil

是的,在Perforce中,您可以使用typemap表指定每个文件所需的文件类型类型,但我不确定这是否是您要查找的内容。例如:

http://answers.perforce.com/articles/KB_Article/Perforce-File-Type-Options
http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_typemap.html

实施例

如果您希望将.csproj文件视为Perforce二进制文件,   您可以将以下行添加到typemap表中:

  binary //....csproj

这样可以确保您的typemap表设置所有内容 服务器上的文件为二进制文件。

对于所有当前文件,以下是您需要运行的命令:

 p4 edit -t binary //....csproj
 p4 submit -d "Changing all of csproj to binary etc"

您可以使用'编辑'重新打开'来更改文件类型。并且'添加'命令:

- p4编辑 http://www.perforce.com/perforce/doc.current/manuals/cmdref/edit.html#1040665

- p4重新开放 http://www.perforce.com/perforce/doc.current/manuals/cmdref/reopen.html#1040665

- p4添加 http://www.perforce.com/perforce/doc.current/manuals/cmdref/add.html#1040670