星期四, 6月 18, 2009

[Note]cvs diff with meld

公司還在用 CVS,Windows 下有 wincvs 這個方便的軟體,Linux 下,我還是習慣用 console 介面,console 介面下,很多事情就要自己來了。

wincvs 可以選用自訂的軟體來比對。但在 console 下,只能用 cvs diff,cvs diff 的話,只會列出 diff 的結果,沒辦法以視覺化的方式呈現比對結果。

所以只好刻一個,簡單的說就是利用 cvs update -p -r(revision) 將結果輸出到暫存檔,再用 meld 來比對這暫存檔與目前檔案:

#!/bin/bash
# author: elleryq
# version: 0.1
# distro: ubuntu
# dependency: cvsnt

if [ ! -e $1 ]; then
echo "$1 is not existed, run 'cvs update $1' first!"
exit -1
fi

[ -z $DIFF ] && DIFF=meld

function usage() {
prog=`basename $0`
echo "Usage:"
echo " $prog filename revision"
exit 0
}

[ -z $1 ] && usage
if [ -z $2 ]; then
revision=`cvs log $1 | grep head | awk '{print $2;}'`
else
revision=$2
fi

tmpfile=/tmp/$1.$revision
cvs update -r $revision -p $1 > $tmpfile
$DIFF $tmpfile $1
rm -f $tmpfile

exit 0


你可以自訂 diff 軟體,只要設置好 DIFF 這個環境變數即可,預設是 meld

沒有留言: