2

別の質問で、各コミットをマークする CVSNT によって自動生成された一意のコミット ID への参照を見ました。私の部署のほとんどの人は、CVSNT またはそのフロントエンドを使用していると思います。

CVSNT のマニュアルに記載されているコミット ID を見つけましたが、ファイルの特定のリビジョンに対する CVSNT コミット ID を特定する方法についての説明はありません。これを行う方法はありますか?他の人のチェックイン用に生成されているコミット識別子を調べて、コミットに関連するファイルをグループ化できるようにしたいと考えています。

4

1 に答える 1

3

CVS コマンドの log と rlog はどちらも、ファイルの個々のリビジョンのコミット識別子を示します。この識別子を使用して情報を取得する CVS コマンドについては知りませんが、単一のコミット内のすべてのファイルが同じ識別子を共有していることは確認できます。

commit-id を使用して、単一のコミットの影響を受けるファイルをグループ化する独自のログ ファイル パーサーがあります (たとえば、変更履歴は日付でソートされ、ファイルは単一のコミットにグループ化されます)。

リンクを読んだら、おそらく「log -r @commit-id」のようなものを指定して、コミット識別子を共有する影響を受けるファイルのリストを取得できます。コマンド ラインにはさらに調整が加えられている可能性がありますが、次の例ではある程度の成功が得られます (少しうるさいです)。

c:\> cvs -q log -N "-r @fd049d34574117b"

=============================================================================

RCS file: /folder/file.xml,v
Working file: folder/file.xml
head: 1.3
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 4;     selected revisions: 1
description:
=============================================================================

RCS file: /folder/file2.xml,v
Working file: /folder/file2.xml
head: 1.2
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2;     selected revisions: 0
description:
=============================================================================

最初のファイルには、コミットがファイルのバージョンに対応することを意味する「選択されたリビジョン: 1」が含まれていることに注意してください。

  1. おそらく正規表現を使用して、「選択されたリビジョン: 0」エントリ (一連の「===============」で区切られた複数行の reg) を除外することができます。
  2. 次に、結果の「作業ファイル」エントリのみを抽出して、ファイル リストを作成します。

独自のツールを使いたくない場合は、"cvs changeset" を探してみてください:

于 2010-06-09T14:59:56.700 に答える