使用cygwin + vim作为TFS差异实用程序的问题

时间:2016-04-28 21:48:22

标签: vim tfs tfs2012

我正在尝试在cymwin上设置vim作为我在TFS(2012)中的自定义差异工具,并且我遇到问题,临时文件在vim可以查看之前消失。我将首先介绍我到目前为止所尝试的内容:

当我注意到我的问题时,我尝试使用原生Windows vim.exe,并且在Windows控制台下使用以下设置正常工作:

using vim.exe as diff tool in TFS

我也可以使用windows控制台内的vim run的cygwin副本来正常工作:

using cygwin's vim, still under cmd.exe

但是一旦我尝试使用mintty,我就会在vim中打开空文件,并且TFFSemp目录中不存在由TFS传递给vim的文件:

use mintty to run vim under cygwin

vim sees nonexistent files

我认为C:\ Users \ me \ AppData \ Local \ Temp \ TFSTemp目录中存在一些Windows魔术。在前两种情况下,我可以导航到Windows资源管理器中的该目录,并找到传递给vim的文件。但是,当我使用mintty时,文件不会显示在资源管理器中。我怀疑这与TFS如何处理其临时文件有关。也许薄荷提供的间接层在某种程度上被TFS误解为我关闭了diff实用程序?

我对Windows或TFS的内部工作方式不太熟悉,知道为什么会发生这种情况,但我的google-fu已经产生了一个似乎与我的问题有关的结果: http://www.scootersoftware.com/vbulletin/showthread.php?5538-Beyond-Compare-and-TFS-Problems-with-temporary-files

第一张海报与beyondcompare diff实用程序有相同的丢失文件问题,公司响应表明正在使用错误的可执行文件。显然,两个同名的可执行文件中的一个将为每个比较保持一个单独的进程,而另一个只使用一个进程,如果您使用TFS的单进程可执行文件,则会发生丢失的文件问题。我不确定这是如何映射到我的问题的。

这就是我在这个问题上所能找到的,所以任何帮助都表示赞赏。目前我正在尝试制作一个解决方法.bat文件,以便在启动mintty之前将临时文件保存在不同的目录中,但这对我来说似乎有点麻烦(而且我的批处理脚本技能非常简陋/不存在)。

更新 我已经提出了一个带有批处理脚本的可用解决方案来启动mintty,然后使用sleep命令。这样可以保持文件打开足够长的时间,以便vim可以为它们打开缓冲区,这对我来说已经足够了(我只是查看差异)。睡眠命令完成后,文件被删除(我假设是TFS)。如果我使用pause命令结束脚本,文件将保留在TMP文件夹中,直到我按下cmd.exe窗口中的某个键。

1 个答案:

答案 0 :(得分:0)

TFS如何使用其他文件夹处理临时文件应该没有什么不同。

缩小范围:

  • 您可以使用某些Windows临时文件夹或VS临时文件夹
  • 重试
  • 您也可以尝试更改TFS临时文件夹,例如set TMP=D:\Temp set TEMP=%TMP% md %TMP%详细步骤,请参阅博客 来自MSDN:Change TFS Temp Folder