2010-01-18 68 views
4

而不是運行「svn diff」,「hg diff」等......我們可以編寫一個相應地調用svn/hg/git的命令嗎? diff輸出可以變得漂亮嗎?VCS獨立差異

編輯:首選命令行工具(不是GUI)。

+1

更適合於SO? – Sathya 2010-01-18 06:04:48

回答

3

如果您不得不再次輸入「svn diff」或「hg diff」,只是爲了以較少的值對頁面進行分頁。此外,當文本編輯器很可能會語法高亮顯示時,終端中的差異輸出不應該以適當的顏色突出顯示。

alt text http://img25.imageshack.us/img25/8597/colordiff.png

您需要colordiff可以通過apt或使用MacPorts安裝。

下面的bash函數將使您能夠在您選擇的VCS的工作目錄下鍵入'dif'(不需要指定它是hg還是svn)。

function dif { 
    if [ -d .hg ]; then 
     VC='hg' 
    elif [ -d .svn ]; then 
     VC='svn' 
    else 
     echo "cannot find VC type" 
     return 1 
    fi 
    $VC diff $1 | colordiff | less -R 
} 

它應該很容易增加對其他VCS工具支持(GIT,CVS等)

此外,如果您已經安裝UVC(按瑞安威爾考克斯的答案),上面的腳本可以簡化爲:

function dif { 
    uvc diff $1 | colordiff | less -R 
} 
+2

你可以摺疊你的'test'和'if'語句:'if [-d .hg];那麼'你也應該用'if ... elif ... else'(或者使用'case'語句)來平衡你的'if'。 – 2010-01-18 10:26:29

+0

Thx,我修改了代碼。 – 2010-01-18 22:45:36

3

還有一些「將所有常用VCS命令包裝到一個實用程序」項目中。想到了pyvcsUVC。也許這些會做你想要的?

+0

'pyvcs'包似乎沒有安裝任何腳本;它只提供一個抽象的API嗎? – 2010-01-19 07:24:02

+0

哇,但我想你是對的。我的錯。 – RyanWilcox 2010-01-19 23:49:41

+0

謝謝你的UVC參考,我已經更新了我的腳本以使用UVC。 – 2010-01-20 17:26:08

0

嘗試Diffuse。它會找出合適的版本控制系統,並以不錯的語法高亮顯示差異。