29.1.3.2 ロックでの基本的なバージョンコントロール
ロックベースのバージョンコントロールシステム(SCCSやRCSのデフォルトモードなど)では、C-x v vは以下のことを行います:
- VCファイルセットに1つ以上のファイルがあり、そのファイルがバージョンコントロール状態と矛盾する場合、エラーをシグナルします。ファイルセットのファイルが欠落している(ファイルシステムから削除されたものの依然としてバージョンコントロールによって追跡されている)場合にもエラーをシグナルします。
- VCファイルセットに、バージョンコントロールシステムに登録されたファイルがない場合、ファイルセットの新たに追加されたファイルを登録します。バージョンコントロールへのファイルの登録を参照してください。Emacsが登録すべきシステムを見つけられない場合、レポジトリタイプの入力を求め、新しいレポジトリを作成して、VCファイルセットをそれに登録します。明示的にシステムを指定することもできます。C-x v vの高度な制御を参照してください。
- 各ファイルが登録されていてロックされていなければファイルをチェックアウト(書き込み可能にするためにロックして編集を開始できるように)します。
- 各ファイルのロックを獲得していて、それらが変更を含む場合にはその変更をコミットします(“チェックイン”とも呼ばれる)。これを行うことにより、Emacsは*vc-log*バッファーをポップアップするので、新しいリビジョンのログエントリーをタイプしてから、C-c
C-cでコミットします(Log Entryバッファーの機能を参照してください)。
- 各ファイルのロックをすでに獲得していて変更がない場合には、ファイルを再び読み取り専用にするためにロックを開放します。これはチェックアウト以降に変更されていないファイルにたいする以前のチェックアウト操作も取り消します。
- 各ファイルが他のユーザーによりロックされている場合、ロックを横取りする(steal the
lock)か、確認を求めます。これにyesと応えると、あなたがロックを獲得して、その前にファイルをロックしていたユーザーに、警告メッセージが送られます。
- ファイルセット内のファイルがロックされていないにも関わらず、それらの最後のリビジョンから変更されている場合には、そのようなファイルそれぞれにたいするロックの要求、もしくは最後にチェックインされたリビジョンへのファイルのリバートを提案します(これは例外的な状況であり通常なら起こり得ない筈)。
このルールは、CVSがロックの横取りをサポートしない点をのぞき、CVSをロックモードで使用している場合も適用されます。