对VS 2012合并工具的命令行访问

时间:2013-06-20 11:42:45

标签: visual-studio-2012 tfs tfs2012

我正在调查在Windows 7上使用TFS 2012作为Matlab的源代码控制提供程序。这需要安装VS 2012 shell / TFS客户端,以及可从Microsoft免费下载的64位MSSCCI提供程序。我把所有这些都设置好了,它运作正常。

但是,文件差异和合并存在问题。如果我查看与VS 2012 Source Control Explorer的差异,则VS 2012 Diff工具可以正常运行。如果我在Matlab中尝试相同的操作(使用Source Control菜单),我会收到错误“无法执行已配置的工具”。在解决冲突时,“合并工具中的合并更改”按钮会发生同样的事情:在VS 2012中,它起作用,来自Matlab,它没有。

这似乎是一个已知问题,至少与其他试图驱动TFS的工具有关。有一种解决方法,即配置VS 2012以使用外部差异实用程序。我试过这个并且它有效。此外,我发现如果将外部差异实用程序配置为VS 2012自己的“内部”差异工具,则可以从Matlab正确调用内部工具。

diff命令是:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe

并且必需的参数是:

 /Diff %1 %2 %6 %7

(即原始文件,修改文件,原始文件标签,修改后的文件标签)。有关此here的文档。

合并工具更成问题。我在命令行上找不到任何特定的文档。我到目前为止最接近的是

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\vsDiffMerge.exe

我非常肯定是对的,但我正在使用的论点

%1 %2 %1 %2 %3 %4 /m

不太正确 - 文件标签不同,差异显示的格式不同(与普通的内置工具不同)。我从一些与git相关的文档here反向设计了这个命令行,但我对git一无所知,也不会说意大利语。有人可以帮我找到正确的命令行选项吗?

编辑添加

有一个MSDN讨论似乎与此问题here有关。看起来它与其他工具一起发生并且不仅限于Matlab:我已相应地重新标记了这个问题

编辑添加

Diff功能的首选命令行是:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\vsDiffMerge.exe

,命令行参数为:

/t %1 %2 %6 %7

合并功能的等效功能不起作用:这是一个内部错误&微软承认了这一点。

2 个答案:

答案 0 :(得分:7)

vsDiffMerge.exe工具似乎适用于差异和三向合并。我成功地将VS差异/合并工具与Perforce客户端集成,以进行合并和集成。

要提供给工具的参数(至少对于Perforce)是:


DIFF

vsDiffMerge.exe /t %1 %2

其中:

  • / t(在临时标签中打开,不要在永久标签中打开)
  • %1(第一档)
  • %2(第二档)

合并:

vsDiffMerge.exe /m %1 %2 %b %r

其中:

  • / m(合并操作,离开做差异)
  • %1(他们的/源文件)
  • %2(您/目标文件)
  • %b(基本文件)
  • %r(结果文件)

注意:“%”解释来自Perfore文档:http://www.perforce.com/perforce/doc.current/manuals/p4v/Configuring_display_preferences.html#Diff

编辑:对不起大家,我不知道我是如何混合那个的。 Mark Sowul今天的测试完全正确。我已经解决了我的问题。此外,对于第一条评论发布后没有得到纠正的道歉。我刚从海外旅行回到家。

答案 1 :(得分:0)

我找到了与merge选项一起出现的错误解决方案。 我创建了应该用于合并文件的文件。 请在我的评论中查看更多详细信息:http://www.codeproject.com/Articles/649736/Solving-the-resx-Merge-Problem-in-TFS?msg=4745473#xx4745473xx