2009-02-14 69 views

回答

16

訣竅是cygwin路徑與Windows路徑不一樣,因此您需要一個腳本將cygwin路徑轉換爲Windows路徑,然後將它們作爲參數傳遞給WinMerge。

這裏是如何做到這一點:

(1)/usr/bin/winmerge創建一個shell腳本如下:

#!/bin/sh 
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3` 

注:cygpath轉換路徑名。如果WinMerge不在默認位置,請在此處更改路徑。

(2)使該文件可執行

chmod +x /usr/bin/winmerge 

(3)以下內容添加到您的~/.hgrc文件:

[ui] 
merge = winmerge 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 

注意!你可能已經有一個名字在其中的[ui]部分。請記住將我的更改與您的更改合併,不要只添加新的[ui]部分。例如,我的.hgrc如下所示:

[ui] 
username = Joel Spolsky <[email protected]> 
merge = winmergeu 

[extensions] 
fetch = 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 
+0

你現在可以接受你自己的答案了吧? – 2009-02-14 05:23:09

0

以下是適用於Subversion/cygwin/WinMerge的shell腳本行。主要區別是使用哪些參數。

/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" & 

注意,這個例子也設置了描述字段並啓動比較的背景下,讓所有的差異時立即啓動。如果你不喜歡,請刪除'&'。

如果您不知道您的修訂控制程序通過了什麼,請嘗試將'echo $ @'添加到您的shell腳本中。它將打印傳遞給腳本的參數。

相關問題