ほとんどのバージョン管理システムでは、バージョン管理対象のツリーの特定のバージョンにリビジョンタグを付与できます。現代的なチェンジセットベースのバージョン管理システムにおいて、リビジョンタグは単に特定のリビジョンに対する記号的な名称に過ぎません。CVSのような旧来のファイルベースのシステムでは、各タグがバージョン管理対象のファイル群全体に追加され、それらを一つの単位として扱うことができます。リビジョンタグは一般的に、ユーザーに配布されるリリースを識別するために使用されます。
タグに関する基本的なコマンドは2つあり、一方は指定した名前のタグを作成し、もう一方は指定したタグを取得します。
C-x v s name RET ¶カレントディレクトリ以下に登録されているすべてのファイルの作業リビジョンを、name (vc-create-tag) という名前のタグとして定義する。
C-x v r name RET ¶現在のディレクトリレベル以下のすべての登録済みファイルについて、タグ付きリビジョン name
を取得します。name がブランチ名であり、かつ使用している VCS
がブランチとタグを区別している場合、このコマンドはブランチに切り替わります。(vc-retrieve-tag)。
このコマンドは、何も変更することなく、カレントディレクトリ以下にロックされたファイルがある場合にエラーを報告します。これは、作業中のデータを上書きしてしまうのを防ぐためです。
C-x v = または C-x v ~ の引数として、タグ名やブランチ名を指定できます(旧リビジョンの確認と比較 を参照)。これにより、タグ付きバージョンを現在のファイルと比較したり、2つのタグ付きバージョン同士を比較したりすることができます。
SCCSでは、VCが独自にタグを実装しており、これらのタグはVC経由でのみ確認できます。その後のほとんどのシステム(CVS、Subversion、bzr、git、hgなど)には標準のタグ機能が備わっており、VCは利用可能な場合にそれを使用します。これらのタグは、VCを介さずにアクセスした場合でも確認可能です。
ファイルベースのバージョン管理システムでは、登録済みのファイル名を変更する際、マスターファイルも併せてリネームする必要があります。コマンド C-x v R (vc-rename-file)
を使用すると、この操作が自動的に行われます(バージョン管理対象ファイルの削除とリネーム
を参照)。SCCSを使用している場合は、タグのレコードも更新して、ファイルを新しい名前で参照させる必要があります(C-x v R
でもこの操作が可能です)。記録された名前で既に存在しないマスターファイルを参照している古いタグは無効となり、VC
では取得できなくなります。タグを手動で更新する方法を説明するには、RCS や SCCS
について十分な解説を行うことは本マニュアルの範囲を超えてしまいます。C-x v R
を使用すると、タグは取得可能な有効な状態に保たれますが、すべての問題が解決するわけではありません。例えば、プログラム内の一部のファイルは、おそらく他のファイルを名前で参照しています。少なくとも、makefile
ではリネームしたファイルが参照されているはずです。古いタグを取得した場合、リネームされたファイルは新しい名前で取得されますが、これは makefile
が想定している名前ではありません。そのため、取得した状態ではプログラムが正常に動作しません。