【发布时间】:2013-06-20 11:42:45
【问题描述】:
我正在研究在 Windows 7 上使用 TFS 2012 作为 Matlab 的源代码控制提供程序。这需要安装 VS 2012 shell/TFS 客户端,以及可从 Microsoft 免费下载的 64 位 MSSCCI 提供程序。这一切我都设置好了,一切正常。
但是,文件差异和合并存在问题。如果我查看与 VS 2012 Source Control Explorer 的差异,则 VS 2012 Diff 工具运行正确。如果我在 Matlab 中尝试相同的操作(使用源代码控制菜单),我会收到错误“无法执行配置的工具”。解决冲突时,“合并工具中的合并更改”按钮也会发生同样的事情:在 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:我已经相应地重新标记了这个问题
编辑添加
区分功能的首选命令行是:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\vsDiffMerge.exe
命令行参数是:
/t %1 %2 %6 %7
合并功能的等效功能不起作用:这是一个内部错误,Microsoft 已承认这一点。
【问题讨论】:
-
您是否尝试设置外部差异工具?试试WinMerge 或类似的。
-
是的。我已经尝试过 MKS Toolkit vdiff32.exe(其用户界面在 1999 年左右停留在某个地方)和 Tortoise Subversion 的等价物。两者都没有给人留下深刻的印象,而 VS 2012 合并工具实际上非常好......