Previous: Renaming and VC, Up: Miscellaneous VC


12.7.8.3 版管理ヘッダの挿入

版を識別する文字列を作業ファイルへ直接入れておくと便利なこともあります。 版管理ヘッダと呼ばれる特別な文字列は、 各版ごとにその版番号で置き換えられます。

RCSを使っていて、かつ、作業ファイルに版管理ヘッダが入っていれば、 Emacsは、版管理ヘッダを使って現在の版とファイルのロック状態を決定できます。 これは、版管理ヘッダがないときにマスタファイルを参照するより、 信頼できます。 複数の枝を使う環境では、 VCが正しくふるまうためには版管理ヘッダが必要です (see Multi-User Branching)。

版管理ヘッダの探索は、変数vc-consult-headersで制御されます。 nil以外ならば、編集中の版番号を決定するためにEmacsはヘッダを探します。 nilを設定すると、この機能はオフになります。

適切なヘッダ文字列を入れるには、コマンドC-x v hvc-insert-headers)を使います。

C-x v h
版管理システムで使うヘッダをファイルに挿入する。

デフォルトのヘッダ文字列は、 RCSでは‘$Id$’、SCCSでは‘%W%’です。 変数vc-header-alistに設定すれば、他のヘッダを指定できます。 この値は、(program . string)の形式の 要素から成るリストです。 ここで、programRCSまたはSCCSであり、 stringは使用する文字列です。

1つの文字列のかわりに、文字列のリストを指定することもできます。 そうすると、リストの各文字列は、別々の行に別のヘッダとして挿入されます。

この変数に入れる文字列を書くときには、『余分な』バックスラッシュを 使う必要がよくあります。 この文字列を含むEmacs Lispファイルが版管理の下に置かれているときに、 定数中の文字列がヘッダと解釈されることを防ぐためです。

各ヘッダは、ポイント位置の新しい行に、 コメント区切りの内側にタブで囲んで挿入されます。 通常、現在のモードのコメント開始文字列とコメント終了文字列を使いますが、 特定のモードでは、この目的のための特別なコメント区切りがあります。 変数vc-comment-alistがそれらを指定します。 このリストの各要素は (mode starter ender)という形式です。

変数vc-static-header-alistは、 バッファ名に基づいた追加の文字列を指定します。 この値は、(regexp . format)の形式の 要素から成るリストでなくてはいけません。 regexpがバッファ名に一致するたびに、 formatをヘッダの一部として挿入します。 バッファ名に一致する各要素とvc-header-alistに指定された各文字列ごとに ヘッダ行を挿入します。 vc-header-alistの文字列を要素の書式formatで処理して ヘッダ行を作ります。 vc-static-header-alistのデフォルト値はつぎのとおりです。

     (("\\.c$" .
       "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
     #endif /* lint */\n"))

これは、つぎのようなテキストを挿入します。

     
     #ifndef lint
     static char vcid[] = "string";
     #endif /* lint */

上のテキストは空行で始まっていることに注意してください。

複数の版管理ヘッダをファイルに入れる場合には、 ファイル内ではそれらを一緒にまとめて入れておきます。 revert-bufferのマーカを保存する機構は、 2つの版管理ヘッダのあいだに置かれたマーカを扱えないこともあります。