27

を実行するcvs updateと、リポジトリの状態の優れた概要が得られます。たとえば、次のようになります。

M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt

実際に更新せずにこれを取得する方法はありますか? があることは知っていますがcvs status、これは冗長にする方法です:

===================================================================
File: file6.txt        Status: Up-to-date

Working revision:    1.2
Repository revision: 1.2     /var/cvs/cvsroot/file6.txt,v
Sticky Tag:          (none)
Sticky Date:         (none)
Sticky Options:      (none)

もちろん、後者から前者への変換を行うスクリプトを作成することもできますが、cvs は明らかに前者を生成できるため、時間の無駄に思えます。

4

4 に答える 4

40

-n フラグを使用すると、実際にファイルを更新せずに更新出力を取得できます。-q (quiet) を追加して、サーバー メッセージを抑制することもできます。

cvs -q -n update
于 2008-10-17T11:40:44.977 に答える
4

誰かに役立つかもしれないいくつかのエイリアスがあります:

alias cvsstatus_command='cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | \
    grep -v "\.so" | grep -v "\.[c]*project"'

alias cvsstatus_color='nawk '"'"'BEGIN \
    { \
        arr["Needs Merge"] = "0;31"; \
        arr["Needs Patch"] = "1;31"; \
        arr["conflicts"] = "1;33"; \
        arr["Locally Modified"] = "0;33"; \
        arr["Locally Added"] = "0;32" \
    } \
    { \
        l = $0; \
        for (pattern in arr) { \
            gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
        } \
        print l; \
    }'"'"

alias cvsstatus='cvsstatus_command | cvsstatus_color'

これにより、ファイル名とそのステータスのみが表示され、すべての最新のファイルが無視され、すべての Eclipse プロジェクト ファイルと共有オブジェクトが削除され、ステータスに応じて異なる色で線が印刷されます(たとえば、ローカルにはオレンジがあります)。変更済み、マージが必要なファイルは赤、ローカルに追加されたものは緑など)

于 2013-11-21T13:20:42.150 に答える
4

@jmcnamara: 良いヒントです!

そして、これまでずっとこのbashスクリプトを使用してきました:

cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'
于 2008-10-17T12:17:35.200 に答える
2

CVSNT を使用している場合はcvs status -q、通常の status コマンドよりもはるかに短い出力を生成することもできます (ファイルごとに 1 行のみ)。最新のバージョンcvs status -qqでは、最新のファイルをスキップすることもできます。

于 2008-11-06T23:25:37.967 に答える