VCディレクトリバッファには、バージョン管理対象ファイルの一覧と、それぞれのバージョン管理状態が格納されています。ここには、カレントディレクトリ(C-x v dを呼び出した際に指定されたディレクトリ)およびそのサブディレクトリ内のファイルのうち、特筆すべき状態にあるもののみがリストアップされます。最新の状態にあるファイル(すなわちリポジトリと同じ状態のファイル)や、無視されているファイルは除外されます。サブディレクトリ内のすべてのファイルが最新の状態である場合、そのサブディレクトリ自体もリストアップされません。例外として、VCコマンドの直接的な結果としてファイルが最新の状態になった場合は、デフォルトでリストアップされます。
以下は、VCディレクトリバッファの一覧の例です。
./
edited configure.ac
* added README
unregistered temp.txt
src/
* edited src/main.c
2つの作業ファイルが変更されましたが、まだコミットされていません。現在のディレクトリにある configure.ac と、src/ サブディレクトリにある main.c です。README という名前のファイルは追加されましたが、まだコミットされていません。また、temp.txt はバージョン管理下にありません(ファイルのバージョン管理への登録を参照してください)。
README および src/main.c のエントリの横にある「*」という文字は、ユーザーがこれらのファイルを現在の VC ファイルセットとしてマークしたことを示しています(VC ディレクトリコマンドを参照)。
上記の例は、Bazaar、Git、Mercurialといった分散型バージョン管理システムに典型的なものです(分散型リポジトリと集中型リポジトリを参照)。他のシステムでは、異なるステータスが表示される場合があります。例えば、CVSでは、リポジトリに変更があるもののそれが作業ファイルに適用されていない場合、‘needs-update’というステータスが表示されます。RCSやSCCSでは、ファイルをロックしているユーザー名がステータスとして表示されます。
前述の通り、デフォルトでは、VC
Directoryバッファが最初に表示された後に最新状態となった、あるいは無視されるようになったファイルやディレクトリは、表示されたままになります。こうしたファイルを自動的に表示から削除するには、変数
vc-dir-auto-hide-up-to-date を値 t に設定してください。また、値 revert
に設定することも可能で、その場合は g を入力するなどしてVC
Directoryの表示を更新したときにのみ、これらのファイルが削除されます(VC Directory Commands を参照)。
CVSでは、通常 vc-dir
コマンドがリポジトリ(リモートマシン上にある場合もあります)に接続し、更新の有無を確認します。変数 vc-cvs-stay-local を nil
に変更すると(CVS固有のオプション を参照)、Emacs は
VC Directory
バッファを生成する際にリモートリポジトリへの接続を行わなくなります(ただし、コミット時など必要に応じて接続は行われます)。これは、オフラインで作業している場合や、ネットワーク速度が遅い場合に有効です。
VC Directoryバッファでは、変数 vc-directory-exclusion-list
に列挙されているサブディレクトリが除外されます。そのデフォルト値には、バージョン管理システムで内部的に使用されるディレクトリが含まれています。
バッファの上部に、Emacsは使用中のバックエンド名や作業ディレクトリなど、リポジトリに関する情報をいくつか表示します。さらに、分散型VCSにおいて、アウトゴーイングコミット(VC Change Logを参照)がある場合、Emacsは
"Outgoing : N unpushed revisions"
という行を表示します。ここで N は数値です。このテキストをクリックすると、vc-root-log-outgoing コマンドを実行できます(VC Change Logを参照)。