GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Old-Revisions.html ・ emacs-doc.conao3.com

30.1.6 旧リビジョンの確認と比較

C-x v =

現在のVCファイルセット内の作業ファイルと、開始時点のバージョン(vc-diff)を比較します。接頭辞引数を指定すると、現在のVCファイルセットの2つのリビジョンの入力を求め、それらを比較します。また、このコマンドをDiredバッファから呼び出すことも可能です(ファイル操作を参照)。

M-x vc-ediff

C-x v =と同様ですが、Ediffを使用します。The Ediff ManualのEdiffを参照してください。

C-x v D

ワーキングツリー全体を、開始したリビジョン (vc-root-diff) と比較します。プレフィックス引数を指定すると、2つのリビジョンの指定を求め、それぞれのツリーを比較します。

C-x v ~

現在のファイルの修正を促すプロンプトを表示し、別のバッファでそのファイルを開く (vc-revision-other-window)。

C-x v g

現在のファイルの注釈付きバージョンを表示します:各行について、変更が行われた最新のリビジョン(vc-annotate)を表示します。

C-x v = (vc-diff) は、現在の VC ファイルセット内の各作業ファイルを、編集を開始したバージョン(複数可)と比較する diff を表示します。この diff は、*vc-diff* という名前の Diff モードバッファ(Diff モード を参照)という別のウィンドウに表示されます。このバッファでは、通常の Diff モードコマンドが利用可能です。特に、g (revert-buffer) コマンドを実行すると、ファイル比較が再度行われ、新しい diff が生成されます。

現在のVCファイルセットにおける任意の2つのリビジョンを比較するには、プレフィックス引数 C-u C-x v = を指定して vc-diff を呼び出します。これにより2つのリビジョンID(バージョン管理の概念を参照)の入力が求められ、それらのバージョン間のファイルセットの差分が表示されます。バージョン管理システムがチェンジセットベースではなくファイルベースである場合(例:CVS)、異なるファイルのリビジョンID間に意味のある関連性がないため、複数のファイルからなるVCファイルセットでは正常に動作しません。

リビジョンIDの代わりに、他の形式でリビジョンを指定できるバージョン管理システムもあります。例えば、BazaarではC-u C-x v =(および関連コマンド)の引数に‘date:yesterday’と入力することで、昨日以降にコミットされた最初のリビジョンを指定できます。詳細はバージョン管理システムのドキュメントを参照してください。

Diredバッファ(Dired, the Directory Editorを参照)からC-x v =またはC-u C-x v =を呼び出すと、現在の行に表示されているファイルが現在のVCファイルセットとして扱われます。また、VCファイルセットにはマークされた複数のファイルを含めることも可能です。

M-x vc-ediff は C-x v = と同様に動作しますが、Ediff セッションを使用します。The Ediff Manual の Ediff を参照してください。

C-x v D (vc-root-diff) は C-x v = と同様ですが、現在のワーキングツリー全体(すなわち、現在の VC ファイルセットを含むワーキングツリー)の変更内容を表示します。Dired バッファからこのコマンドを実行すると、そのディレクトリを含むワーキングツリーに適用されます。

ツリー全体の任意の2つのリビジョンを比較するには、接頭辞引数 C-u C-x v D を指定して vc-root-diff を呼び出します。これにより2つのリビジョンIDの入力が求められ(バージョン管理の概念を参照)、バージョン管理対象のディレクトリツリー全体におけるそれらのバージョン間の差分が表示されます(RCS、SCCS、CVS、およびSRCはこの機能をサポートしていません)。

C-x v = および C-x v D が差分生成に使用する diff オプションをカスタマイズできます。使用されるオプションは、変数 vc-backend-diff-switches、vc-diff-switches、diff-switches のうち、最初に出現する nil 以外の値から順に取得されます(ファイルの比較 を参照)。ここで、backend は該当するバージョン管理システムを表し、例えば bzr は Bazaar を指します。nil はシーケンス内の次の変数を確認することを意味するため、最初の2つの変数のいずれかで t という値を使用して、一切の切り替えを行わないように指定できます。ほとんどの vc-backend-diff-switches 変数のデフォルト値は nil ですが、一部は t がデフォルトとなっています。これらは、Subversion のように、diff の実装が一般的な差分オプションを受け付けないバージョン管理システム向けです。

ファイルの旧バージョンを直接確認するには、作業ファイルに移動して C-x v ~ revision RET (vc-revision-other-window) と入力します。これにより、revision に対応するファイルバージョンが取得され、filename.~revision~ に保存された上で、別ウィンドウで開かれます(display-buffer の仕組みを参照)。

多くのバージョン管理システムでは、C-x v g (vc-annotate) と入力することで、行ごとのリビジョン情報が注釈付けされたファイルを表示できます。これにより、ファイルのテキストを表示する新しい「annotate」バッファが作成され、各行がその古さに応じて色分けされます。赤色のテキストは新しく、青色は古く、中間色はその中間の古さを示します。デフォルトでは、色は古さの全範囲にわたって段階的に設定されており、最も古い変更は青色、最新の変更は赤色になります。変数 vc-annotate-background-mode が nil 以外の場合、各行の古さを表す色が背景色に適用され、前景色はデフォルトの色のままになります。

vc-backend-annotate-switches と vc-annotate-switches をカスタマイズすることで、C-x v g が使用する annotate オプションをカスタマイズできます。これらは、前述の vc-backend-diff-switches や vc-diff-switches と同様に機能します。

C-x v g にプレフィックス引数を指定すると、Emacs はミニバッファを用いて 2 つの引数を読み込みます。一つは(現在のファイル内容の代わりに)表示および注釈付けを行うリビジョン、もう一つはカラー範囲がカバーすべき日数単位の期間です。

「アノテーション」バッファからは、これらやその他のカラースケーリングオプションを「VC-Annotate」メニューから利用できます。また、このバッファでは、以下のキーを使用して過去のリビジョンのアノテーションを閲覧したり、差分を表示したり、ログエントリを表示したりすることも可能です。

p

直前のリビジョン(つまり、現在アノテーションされているリビジョンのひとつ前のリビジョン)にアノテーションを付けます。数値のプレフィックス引数は繰り返し回数を指定するため、C-u 10 p とすると10リビジョン前に戻ります。

n

次のリビジョン(すなわち、現在アノテーションされているリビジョンの次のリビジョン)にアノテーションを付与します。数値の接頭辞引数は繰り返し回数を指定します。

j

現在の行が示すリビジョンに注釈を付けてください。

a

現在の行が示す箇所より前のリビジョンに注釈を付けてください。これにより、現在の行で変更が行われる前のファイルの状態を確認できます。

f

現在の行で示されているファイルリビジョンをバッファに表示する。

d

現在の行のリビジョンと直前のリビジョンの差分を表示します。これにより、現在の行のリビジョンでファイルのどこが実際に変更されたかを確認できます。

D

チェンジセット内の全ファイルについて、現在の行のリビジョンと直前のリビジョンの差分を表示します(チェンジセットをサポートするVCシステムの場合)。これにより、現在の行のリビジョンがツリー内で実際に何を変更したのかを確認できます。

l

現在の行のリビジョンのログを表示します。これにより、現在の行のリビジョンにおける変更内容に関する作成者の説明を確認できます。

w

作業中のリビジョン(編集中のリビジョン)に注釈を付けてください。p や n を使って他のリビジョンを参照した場合は、このキーで作業中のリビジョンに戻ってください。

v

アノテーションの表示/非表示を切り替えます。アノテーションに気を取られず、ファイルの内容だけを確認する際に便利です。