1

新しいバージョンのCVSはcommitidを使用していることに気づきました。

これは最近の追加だと思います。「昔は」そのようなことはなかったからです。

グーグルで調べてみると、主にCVSNTに関連するコメントが見つかりますが、commitidは標準のオープンソースCVSにも存在しているようです。

(標準のCVSで)commitid機能を利用するにはどうすればよいですか?

例えば:

  • commitidとの差分を表示するにはどうすればよいですか?
  • 特定のcommitidに関連付けられているファイル/バージョン番号を一覧表示するにはどうすればよいですか?
4

1 に答える 1

1

CVS 自体には、commitid を設定する以外に何かを行うものはないようです。

ドキュメントの内容は次のとおりです ( info cvs):

ではcommit、一意の commitid がリポジトリ内の RCS ファイルに配置されます。一度にコミットされたすべてのファイルは、16 進数のみで構成される文字列である同じ commitid を取得します (通常、GNU CVS では 16、MirBSD および MirDebian GNU CVS では 19)。FSF GNU CVS 1.11、MirOS GNU CVS 1.11、および OpenBSD OpenCVS は、まだコミット ID をサポートしていません。commitid はlogandstatusコマンドで取得できます。*note log:: および *note File status:: を参照してください。

他のツールは、出力を解析しcvs logて、特定のコミットの commitid を決定できます。特に、単一のcvs commitコマンドでコミットされた変更は、同じ commitid になります。CVS リポジトリを SVN や Git などの他のシステムに変換するツールに役立つと想像できます。

しかし、そのようなツールは、この機能を持たない古いバージョンの CVS によって作成されたリポジトリを許可する必要があります。たとえば、私が CVS で維持している 1 つのファイルには 211 個のコミットがあり、そのうち最初の 186 個にはコミット ID がありません。どうやらそれは私が CVS の新しいバージョン (2007 年後半か 2008 年前半) に切り替えたときのようです。

一緒にコミットされた変更も同じタイムスタンプを共有する必要がありますが、信頼性は低くなります。タイムスタンプを作成者と組み合わせると、もう少し信頼性が高くなりますが、それでも完全ではありません.

于 2013-02-14T00:32:03.347 に答える