8

私はこのコマンドを知っています: cvs log -N -w<userid> -d"1 day ago"

残念ながら、これは、ファイル パス、ファイル バージョン、およびコメント テキストがすべて別の行にあるように、多くの改行を含む書式設定されたレポートを生成します。したがって、すべてのコメント テキスト (grep など) をスキャンして、一致をファイル/バージョンに関連付けるのは困難です。

(cvs のみがネイティブにフィルタリングを実行できる場合、ログ出力は完全に受け入れられることに注意してください。)

編集: サンプル出力。各リポジトリ ファイルについて、次のようなテキスト ブロックが報告されます。

RCS ファイル: /data/cvs/dps/build.xml,v
作業ファイル: build.xml
ヘッド: 1.49
ブランチ:
ロック: 厳格
アクセス リスト:
キーワード置換: kv
総リビジョン: 57; 選択したリビジョン: 1
説明:
----------------------------
リビジョン 1.48
日付: 2008/07/09 17:17:32; 作者:ノエック; 状態: Exp; 行: +2 -2
src.jar 参照を修正
----------------------------
リビジョン 1.47
日付: 2008/07/03 13:13:14; 作者:ノエック; 状態: Exp; 行: +1 -1
common-src.jar 参照を修正しました。
================================================== ===========================
4

7 に答える 7

9

オプションは、-wオプションを使用するとよりうまく機能するよう-Sです。それ以外の場合、ユーザー ID に関連していないように見える追加の結果があります。おそらく誰かがそれを説明できるでしょう。

cvs log -N -S -w<userid> -d"1 day ago"

それで、私はそれをgrepにパイプすることでかなりの成功を収めています:

cvs log -N -S -w<userid> -d"1 day ago" | grep -B14 "some text" > afile

cvs ログにノイズが多く、ログを静かにする方法がわからないため、出力をファイルにリダイレクトしています。別の方法は、stderr を にリダイレクトすることだと思います/dev/null

于 2008-12-19T19:32:38.393 に答える
4

CVS履歴からパッチセットを生成するcvspsが必要です。次に、cvsps出力にコメントのインスタンスを1つだけ含める必要があり、その下にファイルがきちんとリストされています。

于 2009-11-17T22:55:55.723 に答える
2

私が最初に考えたのは、egrep (または grep -E だと思います) を使用して、次のような複数のパターンを検索することでした。

<Cmd> | egrep 'Filename:|Version:|Comment:'

しかしその後、あなたがもっとインテリジェントにフィルタリングしたいと思っていることに気付きました。

そのために、awk (または perl) を使用して出力を 1 行ずつ処理し、関心のあるセクションが見つかったらエコー変数を設定します。ここに疑似コード:

# Assume the sections are of the format:
#   Filename: <filename>
#   Version:  <version>
#   Comment:  <comment>
#             <more comment>

Set echo to false
While more lines left
    Get line
    If line starts with "Filename: " and <filename> is of interest
        Set echo to true
    If line starts with "Filename: " and <filename> is not of interest
        Set echo to false
    If echo is true
        Output line
End while
于 2008-09-23T00:25:10.267 に答える
1

このコマンドと gawk スクリプトは、各ログ エントリのファイル名、日付、およびコメント行のみを見つけるのに役立ちます。

cvs log -N -S -b -w<userid> -d ">1 day ago" 2>/dev/null | gawk 'BEGIN{out=0;} /^Working file:/ { print $0; } /^date:/ { out=1; } /^===/ { print ""; out=0; } (out==1){print $0;}'
于 2015-12-17T16:05:51.293 に答える
0

これはやり過ぎかもしれませんが、git-cvsimportを使用して CVS 履歴を Git リポジトリにインポートし、Git のツールを使用して検索することができます。コミット メッセージ内のテキストを検索できるだけでなく、リポジトリ内のファイルに追加または削除されたコードを検索することもできます。

于 2008-09-23T00:17:51.377 に答える
0

CVSSearchが役立つかもしれませんが、これは CGI アプリケーションです :'(

于 2008-09-23T00:19:15.447 に答える