2016-04-28 35 views
1

我試圖在mintty上將cygwin設置爲我在TFS(2012)中的自定義比較工具,並且我遇到了臨時文件在vim可以看到它們之前消失的問題。我先通過什麼我試過到目前爲止運行:使用cygwin + vim作爲TFS diff實用程序的問題

當我發現我的問題,我想只使用本機窗口的vim.exe,並在Windows控制檯下的正常工作與以下設置:

using vim.exe as diff tool in TFS

我也可以得到它的做工精細用vim運行的Windows控制檯內的cygwin的副本:

using cygwin's vim, still under cmd.exe

但一旦我嘗試使用mintty我得到空文件在vim打開,並通過TFS傳遞給VIM文件在TFSTemp目錄不存在:

use mintty to run vim under cygwin

vim sees nonexistent files

我認爲有某些Windows魔法與C回事:\用戶\ me \ AppData \ Local \ Temp \ TFSTemp目錄。在前兩種情況下,我可以導航到Windows資源管理器中的該目錄,並查找傳遞給vim的文件。但是,當我使用mintty時,這些文件不會顯示在資源管理器中。我懷疑這與TFS如何處理臨時文件有關。也許由mintty提供的間接層在某種程度上被TFS誤解爲我正在關閉diff實用程序?

我不是Windows或TFS的內部運作非常熟悉,知道爲什麼發生這種情況,但我的谷歌福取得了一個單獨的結果,這似乎是與我的問題: http://www.scootersoftware.com/vbulletin/showthread.php?5538-Beyond-Compare-and-TFS-Problems-with-temporary-files

第一張海報與beyondcompare diff實用程序具有相同的缺失文件問題,公司響應表明正在使用錯誤的可執行文件。顯然,他們的兩個類似命名的可執行文件中的一個將爲每次比較保留一個單獨的進程,另一個將只使用一個進程,並且如果使用TFS的單進程可執行文件,則會發生丟失的文件問題。我不知道這是如何映射到我的問題。

這就是我在這個問題上能找到的所有東西,所以任何幫助表示讚賞。目前,我正在嘗試製作一個變通方法.bat文件,以便在啓動mintty之前將臨時文件保存在其他目錄中,但這對我來說似乎有點笨拙(而且我的批處理腳本技能還很不成熟/不存在)。

更新: 我想出了一個批處理腳本可維修的解決方案開始mintty然後使用睡眠命令之後。這使文件打開的時間足夠長,以便vim可以打開緩衝區,這對我來說已經足夠了(我只是在查看diff)。睡眠命令完成後,文件被刪除(我假設由TFS)。如果我使用暫停命令結束腳本,則文件將保留在TMP文件夾中,直到我在cmd.exe窗口中按下某個鍵爲止。

回答

0

TFS如何處理與其他文件夾的臨時文件應該沒有什麼不同。

爲了縮小它:

  • 你可以用一些窗口的臨時文件夾或VS temp文件夾
  • 再試您也可以嘗試更改TFS臨時文件夾,如set TMP=D:\Temp set TEMP=%TMP% md %TMP%具體步驟請參考的博客 來自MSDN:Change TFS Temp Folder
+1

我想過這樣做,但我想我會避免在其他程序可能使用它時更改該環境變量的潛在問題。之後,我使用批處理腳本啓動mintty,然後使用sleep命令將文件打開足夠長的時間,以便vim可以爲它們打開緩衝區。睡眠命令完成後,文件被刪除(我假設由TFS)。如果我使用暫停命令結束腳本,則文件將保留在TMP文件夾中,直到我在cmd.exe窗口中按下某個鍵爲止。 – DrEsperanto

+0

建議您將解決方案作爲單獨的答案添加並標記,而不是將其添加到更新中。這也可以幫助其他人獲得更好的搜索結果。 –