2013-05-06 62 views

回答

1

我在SVN写了一个函数前一阵子把分差对库 - 基本目标是“写回购版本的文件,然后打开vim的差异,然后再删除文件”

function diff(){ 
    file=${!#} 
    tmpfile=/tmp/repo/${!#} 
    mkdir -p `dirname $tmpfile` 
    svn cat [email protected] > $tmpfile 
    vimdiff $file $tmpfile 
    rm -rf /tmp/repo/ 
} 

我“M不习惯的Git,但这里有一个想法:

function multiDiff(){ 
    fname=$1 
    shift 
    files="" 
    while (("$#")) 
    do 
     tmpfile="/tmp/repo/$1/$fname" 
     mkdir -p `dirname $tmpfile` 
     git show HEAD~$1:$fname > $tmpfile 
     files="$files $tmpfile" 
     shift 
    done 
    vimdiff $files 
    rm -rf /tmp/repo 
} 

的函数保存一个版本的每个文件到临时目录中,然后DIFFS所有文件。它会被调用multidiff index.html 2 3 4你甚至可以编写一个方便的功能做序列:

function multiDiffSeq(){ 
    multiDiff $1 `seq $2 $3` 
} 

这将转化multiDiffSeq index.html 2 4multiDiff index.html 2 3 4

这种配置的这最大的好处是,文件的扩展名被保留,这意味着你的语法高亮将被保留。

如果是在GIT处理一些错误,对不起 - 我现在还没有一个git回购练对抗。希望那些帮助。

2

您可以使用${array_variable[index]}访问bash数组元素。在bash数组索引从0开始。

所以

revs=(2 3); f=index.html; vimdiff <(git show HEAD~${revs[0]}:"$f") <(git show HEAD~${revs[1]}:"$f")