我正在调查使用TFS 2012作为Matlab的源代码控制提供商,在Windows 7上。这需要安装VS 2012 shell/TFS客户端,以及64位的MSSCCI提供程序,可以从微软免费下载。我已经设置了所有这些,它工作正常。
但是,存在文件差异和合并的问题。如果我查看VS 2012源代码管理资源管理器的差异,VS 2012 Diff工具可以正常运行。如果我从Matlab中尝试相同的操作(使用源代码控制菜单),我会得到一个错误"无法执行配置的工具"。在解决冲突时,"合并工具中的合并更改"按钮也会发生同样的事情:在VS 2012中,它可以工作,从Matlab中,它不会。
这似乎是一个已知的问题,至少与其他工具试图驱动TFS。有一个解决方法,那就是将VS 2012配置为使用外部差分实用程序。我试过了,效果很好。此外,我发现,如果您将外部差异实用程序配置为VS 2012自己的"内部"差异工具,则内部工具将从Matlab中正确调用。
diff命令为:
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDEdevenv.exe
和必需的参数是:
/Diff %1 %2 %6 %7
(即。原文件、修改文件、原文件标签、修改文件标签)。这里有相关的文档。
合并工具更有问题。我在它的命令行上找不到任何具体的文档。到目前为止最接近的是
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDEvsDiffMerge.exe
我很确定它是正确的,但是我使用的参数是
%1 %2 %1 %2 %3 %4 /m
不太正确—文件标签不同,差异显示的格式也不同(与正常的内置工具不同)。我从一些git相关的文档中反向设计了这个命令行,但是我对git一无所知,也不会说意大利语。有人能帮我找到正确的命令行选项吗?
添加
这里有一个MSDN讨论似乎与这个问题有关。看起来它发生在其他工具上,并不局限于Matlab:我已经相应地重新标记了这个问题
添加
Diff功能的首选命令行是:
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDEvsDiffMerge.exe
和命令行参数是:
/t %1 %2 %6 %7
对应的Merge功能不起作用:这是一个内部bug &微软已经承认了这一点。
vsDiffMerge.exe工具似乎可以同时用于差异合并和三向合并。我成功地将VS diff/merge工具与Perforce客户端进行了合并和集成。
提供给工具的参数(至少对于Perforce)是:
Diff
vsDiffMerge.exe /t %1 %2
地点:
- /t(在临时选项卡中打开,在永久选项卡中打开)
- %1(第一个文件)
- %2(第二个文件)
合并:
vsDiffMerge.exe /m %1 %2 %b %r
地点:
- /m(合并操作,离开做diff)
- %1(他们的/源文件)
- %2(你的/目标文件)
- %b(基本文件)
- %r(结果文件)
注意:"%"的解释来自performance文档:http://www.perforce.com/perforce/doc.current/manuals/p4v/Configuring_display_preferences.html#Diff
编辑:对不起大家,我不知道我是怎么搞混的。根据我今天的测试Mark Sowul是完全正确的。我已经确定了我的答案。同时,对于没有在第一个评论发布时纠正这个问题,我表示歉意。我刚从国外旅行回来。我找到了与合并选项一起发生的错误的解决方案。我创建了应该用于合并文件的文件。在我的评论中查看更多细节:http://www.codeproject.com/Articles/649736/Solving-the-resx-Merge-Problem-in-TFS?msg=4745473#xx4745473xx