2

cvsを使用してファイルのリビジョンを取得する簡単な方法が必要です。ファイルを使って入手できCVS/Entriesます。それは安全ではなく、別の方法があるに違いないと思います。cvs log必要以上に印刷します。cvsコマンドを使用して一部のファイルのリビジョン番号のみを取得するにはどうすればよいですか。

4

1 に答える 1

4

cvs log -hヘッダー情報のみを表示します。バージョンだけを取得するには、sed、awk、またはPerlでフィルタリングするのは簡単です。

これにより、リポジトリ内のバージョンがわかります。チェックアウトされたファイルのバージョンが必要な場合は、ident(RCSの一部)を使用できますが、ファイルに適切なキーワードが含まれている場合に限ります。(これはバイナリではうまく機能しません。)

たとえば、チェックインする前にファイルに次のようなものを追加した場合:

# $Id:$
# $Source:$

次に、ident foo.txt次のように出力します。

foo.txt:
     $Id: foo.txt,v 1.3 2011/10/17 22:49:45 kst Exp $
     $Source: /path/to/repo/sandbox/foo.txt,v $

使用できるキーワードは他にもたくさんあります。詳細については、CVSマニュアルのキーワード置換のセクションを参照してください。

これはさまざまな方法でうまくいかない可能性があります。たとえば、チェックアウト後にファイルを編集した場合、展開されたキーワードは必ずしも意味のあるものを反映しているとは限りません。cvs diffチェックアウト後にファイルが変更されたかどうかを判断するために使用できます。

先に述べたように、バイナリファイルでこれを行おうとすると、ファイルが破損する可能性があります(そのため、ファイルがバイナリであることをCVSに通知すると、キーワード置換は行われません)。

このidentコマンドはCVSではなくRCSの一部であるため、RCSがまだインストールされていない場合は、システムにインストールする必要があります。(コマンドがあるのは理にかなっているでしょうcvs ident。なぜそれがないのかわかりません。)

より「最新の」ソース管理システムは、この機能を提供しない傾向があります。

于 2013-03-25T15:26:40.837 に答える