ほとんどのバージョンコントロールシステムは、バージョンコントロールされたツリーの特定のバージョンにたいして、リビジョンタグ(revision tag)を適用できます。現代的な変更セットベースのバージョンコントロールシステムでは、リビジョンタグは単に特定のリビジョンにたいするシンボリック名です。CVSのようなファイルベースの古いシステムで、各タグははバージョンコントロールされた一連のファイル全体に追加され、それらを1つの単位として処理できるようにします。リビジョンタグは一般的にユーザーに配布されるリリースを識別するのに使用されます。
タグにたいする2つの基本的なコマンドがあります。1つは与えられた名前でタグを作成し、もう1つは名前がつけられたタグを取得するコマンドです。
C-x v s name RET
¶カレントディレクトリーまたはその配下のディレクトリーの、すべての登録されたファイルの作業リビジョンにたいする、nameという名前のタグを定義します(vc-create-tag
)。
C-x v r name RET
¶カレントディレクトリーまたはその配下のディレクトリーの、すべての登録されたファイルにたいして、リビジョンのタグがnameのものを取得します。nameがブランチ名で、バージョンコントロールシステムがタグからブランチを区別する場合、このコマンドはブランチを切り替えます。(vc-retrieve-tag
).
カレントディレクトリーまたは配下のディレクトリーのファイルがロックされている場合、このコマンドは何もせずにエラーを報告します。これは作業中の上書きを避けるためです。
C-x v =またはC-x v ~の引数として、タグまたはブランチ名を与えることができます (古いリビジョンの調査と比較を参照してください)。 したがって、カレントファイルとタグ付けされたバージョンを比較したり、タグ付けされたバージョン同士を比較することができます。
SCCSでは、VC自身がタグを実装しているので、VCを通じてのみタグを見ることができます。それより新しいほとんどのシステム(CVS、Subversion、bzr、git、hgを含む)は、ネイティブのタグ機能をもっており、利用可能な場合、VCはそれを使用します。これらのタグは、VCを通さなくても見ることができます。
ファイルベースのバージョンコントロールシステムでは、登録されたファイルをリネームするとき、それのマスターもリネームする必要があります。コマンドvc-rename-file
は、これを自動的に行います
(バージョンコントロールされたファイルの削除とリネームを参照してください)。
SCCSを使用している場合、、そのファイルが新しい名前になったことを告げるために、タグの記録も更新しなければなりません(vc-rename-file
もこれを行います)。記録された名前では、すでに存在しないマスターファイルを参照する古いタグは無効になります。VCはそれを取得しません。RCSおよびSCCSでのタグの手修正は、このマニュアルの範囲を超えるでしょう。vc-rename-file
を使用することにより、ファイルを取得できる有効なタグを作成できますが、それですべての問題が解決されるわけではありません。たとえば、プログラムのいくつかのファイルは、他のファイルを名前で参照するかもしれません。少なくともmakefileはリネームしたファイルを参照するでしょう。古いタグを取得した場合、リネームされたファイルは、makefileが期待しない新しい名前で取得されます。そのため、プログラムはうまく機能しないでしょう。