June 18,2009

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


Posted by elleryq at 樂多Roodo! │00:24 │回應(0)引用(0)資訊相關Idea與筆記
樂多分類:網路/3C 共同主題:scm(software configu 工具:編輯本文
標籤:linux,cvs,scm,diff
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/9256919