3

実行後に競合の概要を取得する簡単な方法はありcvs updateますか?

私は大規模なプロジェクトに取り組んでおり、いくつかの作業を行った後、更新を行う必要があります。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 出力を出力し、その後に競合の要約を出力したいと考えています。

4

2 に答える 2

3

仕様を考えると、Martin York のソリューションを少し変更する必要があるようです (競合のみが表示され、通常のログ情報は表示されないため)。このようなもの - 'cvsupd' と呼ばれるかもしれません:

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

トラップ コマンドは、ログ ファイルが残らないようにします。通常のシグナル - HUP、INT、QUIT、PIPE、および TERM (それぞれ) をキャッチし、0 はシェルからのその他の出口をトラップします。

于 2008-10-04T02:00:55.323 に答える
1

便利な cvs がありません。cvs update の出力の正確な形式は何ですか

C <filename> を覚えているよう
です。

cvs アップデート | ティーログ | grep "^C"

cvs の完全な出力は、別の時点で使用するためにログに保存されます。次に、'C' で始まるすべての行を grep します。

それが役立つことを願っています。

于 2008-09-23T17:06:48.907 に答える