2008-09-23 48 views
3

運行cvs update之後有沒有簡單的方法獲得衝突摘要?如何在命令行上執行cvs更新時獲得我的cvs衝突的摘要?

我在一個大型項目上工作,在做了一些工作之後,我需要進行更新。從cvs update命令返回的更改列表長達幾頁,我只想看到在cvs update命令輸出結尾處重複出現的衝突列表(以'C'開頭)。

該解決方案需要從命令行工作。

如果我的正常輸出是:

M src/file1.txt 
M src/file2.txt 
cvs server: conflicts found ... 
C src/file3.txt 
M src/file4.txt 
M src/file5.txt 

我想我的新的輸出是:

M src/file1.txt 
M src/file2.txt 
cvs server: conflicts found ... 
C src/file3.txt 
M src/file4.txt 
M src/file5.txt 

Conflict Summary: 
C src/file3.txt 

我想這是一個命令(可能是一個簡短的腳本或別名),其輸出正常的cvs輸出,然後是衝突總結。

回答

3

根據規範,似乎您需要稍微改編Martin York的解決方案(因爲它只顯示衝突而不顯示正常的日誌信息)。像這樣的東西 - 可能被稱爲'cvsupd':

tmp=${TMPDIR:-/tmp}/cvsupd.$$ 
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15 
cvs update "[email protected]" | tee $tmp 
if grep -s '^C' $tmp 
then 
    echo 
    echo Conflict Summary: 
    grep '^C' $tmp 
fi 
rm -f $tmp 
trap 0 
exit 0 

trap命令確保日誌文件不會被留下。它捕獲正常信號 - HUP,INT,QUIT,PIPE和TERM(分別),並捕獲任何其他從shell中退出的信號。

+0

謝謝,這就是它。 – 2008-10-16 16:22:31

0

我沒有的CVS得心應手什麼是CVS更新輸出的精確格式

我似乎記得ç<名>
如果是這樣,你可以使用:

CVS更新| tee log | grep「^ C」

將cvs的完整輸出保存到日誌中供其他點使用。 然後我們grep所有行開始'C'

希望有幫助。