Emacsは通常、バージョン管理されているソースファイルのバックアップファイルを保存しません。バージョン管理されているファイルであってもバックアップファイルを作成したい場合は、変数
vc-make-backup-files に nil 以外の値を設定してください。
シンボリックリンクを介してバージョン管理対象のファイルを編集する場合、元のファイルがバージョン管理対象であることに気づかなければ、予期しない結果を招く可能性があります。変数
vc-follow-symlinks
は、バージョン管理対象のファイルを指すシンボリックリンクにアクセスしようとした際の Emacs の動作を制御します。値が ask(デフォルト)の場合、Emacs は確認を求めます。nil の場合は、単に警告メッセージが表示されます。t
の場合は、Emacs は自動的にリンクを辿り、代わりに実際のファイルにアクセスします。
vc-suppress-confirm が nil 以外の場合、C-x v v と C-x v i は確認なしに現在のバッファを保存でき、C-x v u
も確認なしに動作します。
VCモードは、適切なバージョン管理システム用のシェルコマンドを実行することで処理の大部分を行います。vc-command-messages の値が log
である場合、VCはどのシェルコマンドを実行したかを示すメッセージを *Messages*
バッファに記録し、コマンドの実行が完了するとさらにメッセージを記録します。変数が nil
以外の値である場合、Emacs はこれらのメッセージを記録するとともに表示します。
VCモードでは、特定のシェルコマンドを非同期で実行するため、コマンドの完了を待つ間もEmacsを他の用途に使い続けることができます。これは主に、分散VCSのプルやプッシュなど、ネットワークにアクセスするコマンドで利用されます(ブランチへの変更のプル/プッシュを参照)。コマンドが開始されると、VCはコマンドの出力が書き込まれるバッファを表示します。vc-display-failed-async-commandsがnilでない場合、VCはさらに、コマンドの実行が完了したものの失敗した場合に、このバッファが表示されるようにします。これにより、コマンドのバッファを表示しているウィンドウを自由に閉じても、コマンドの実行に失敗した際には再びポップアップで表示されることが分かります。
通常、チェックイン操作は同期的に行われます。つまり、Emacsはチェックインが完了するまで待機し、その後に他の処理を行います。これは、非常に大きなファイルの変更をチェックインするGitリポジトリや、ファイル数が極めて多いMercurialリポジトリのように、チェックイン操作に時間がかかるリポジトリでは不便な場合があります。
これをサポートするバックエンドでは、vc-async-checkin に nil
以外を設定することで、チェックイン操作を非同期で行うようになります。これは、チェックイン操作に時間がかかるリポジトリにおいて、ディレクトリローカル変数として特に有用です(GNU Emacs Lisp Reference Manual の Directory
Local Variables を参照)。
非同期のチェックイン処理が進行中に、C-x C-s を使用して現在の VC ツリー内の任意のファイルを参照するバッファを保存しようとすると、その処理は同期チェックインに戻り、Emacs は処理が完了するまで待機してからバッファを保存します。これは、具体的にどのような変更がチェックインされるかに関する非決定性を避けるためです。