2010-01-18 69 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。它会找出合适的版本控制系统,并以不错的语法高亮显示差异。