Next: , Previous: , Up: バージョンコントロール   [Contents][Index]


28.1.6 古いリビジョンの調査と比較

C-x v =

カレントVCファイルセットの作業ファイルと、編集を開始したバージョンを比較します(vc-diff)。プレフィクス引数を指定した場合、カレントVCファイルセットの2つのリビジョンの入力を求め、それらを比較します。このコマンドをDiredバッファーから呼び出すこともできます(Dired (ディレクトリーエディター)を参照してください)。

M-x vc-ediff

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

C-x v D

編集を開始したリビジョンの、作業ツリー全体を比較します(vc-root-diff)。プレフィクス引数を指定した場合、2つのリビジョンの入力を求め、それらのツリーを比較します。

C-x v ~

カレントファイルのリビジョンの入力を求め、それを別のバッファーでvisitします(vc-revision-other-window)。

C-x v g

カレントファイルの、注釈付きのバージョンを表示します。各行には、その行が変更された最新のリビジョンが表示されます(vc-annotate)。

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

カレントVCファイルセットの、任意の2つのリビジョンを比較するには、C-u C-x v =のようにプレフィクス引数を指定して、vc-diffを呼び出します。これは2つのリビジョンID(バージョンコントロールの概念を参照してください)の入力を求め、ファイルセットのそれらのバージョンの間のdiffを表示します。このコマンドは、バージョンコントロールシステムが変更セットベースではなくファイルベースの場合(たとえばCVS)に、複数ファイルのVCファイルセットにたいして確実に動作しません。なぜなら同じリビジョンIDをもつ異なるファイル同士を、意味のある方法で関連させることができないからです。

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

Diredバッファー(Dired (ディレクトリーエディター)を参照してください)でC-x v =またはC-u C-x v =を呼び出すと、カレント行にリストされたファイルが、カレントVCファイルセットとして扱われます。

M-x vc-ediffは、C-x v =と同じように機能しますが、Ediffセッションを使用します。Ediff in The Ediff Manualを参照してください。

C-x v D (vc-root-diff)は、C-x v =と似ていますが、カレント作業ツリー全体の変更を表示します(たとえばカレントVCファイルセットを含む作業ツリー)。このコマンドをDiredバッファーから呼び出すと、そのディレクトリーを含む作業ツリーに適用されます。

ツリー全体の任意の2つのリビジョンを比較するには、C-u C-x v =のようにプレフィクス引数を指定してvc-root-diffを呼び出します。これは2つのリビジョンID(バージョンコントロールの概念を参照)の入力を求めて、バージョンコントロールされたディレクトリー全体のバージョン間のdiffを表示します(RCS、SCCS、CVS、SRCはこの機能をサポートしない)。

C-x v =およびC-x v Dが、diffを生成するために使用するdiffオプションをカスタマイズできます。オプションには、変数vc-backend-diff-switchesvc-diff-switchesdiff-switches(ファイルの比較を参照)の順に、最初の非nilの値が使用されます。ここでbackendは、関連するバージョンコントロールシステムで、たとえばBazaarの場合はbzrです。nilは順番に次の変数をチェックすることを意味するので、スイッチを指定しない場合は最初の2つの値をtにします。ほとんどのvc-backend-diff-switches変数のデフォルトはnilですが、いくつかのbackendのデフォルトはtです。Subversionのように、これらのバージョンコントロールシステムのdiff実装は、一般的なdiffオプションを受け付けません。

ファイルの古いバージョンを直接調べるには、作業ファイルをvisitして、C-x v ~ revision RET (vc-revision-other-window)とタイプします。これはrevisionに対応するバージョンのファイルを取得して、それをfilename.~revision~に保存してから、別のウィンドウでvisitします。

多くのバージョンコントロールシステムでは、C-x v g (vc-annotate)とタイプして、行ごとにリビジョン情報の注釈付き(annotated)でファイルを閲覧できます。これは新しい“annotate”バッファーを作成して、各行に古さを示すカラーをつけて、ファイルのテキストを表示します。赤いテキストは新しく、古いものは青、その中間色は中間のバージョンを示します。デフォルトでは、一番古い変更を青、一番新しい変更を赤で、すべてのバージョンレンジにカラーをスケーリングします。変数vc-annotate-background-modeが非nilの場合、各行の世代を表すカラーはバックグラウンドカラーに適用され、フォアグラウンドカラーはデフォルトのカラーのままです。

C-x v gが使用するannotateオプションはvc-backend-annotate-switchesvc-annotate-switchesでカスタマイズできます。これらの関数は上述したvc-backend-diff-switchesおよびvc-diff-switchesと同じように機能します。

C-x v gにプレフィクス引数を指定した場合には、Emacsはミニバッファーを使って、表示および注釈つけする(カレントファイル内容のかわりの)リビジョンと、カラーレンジがカバーすべきタイムスパンという2つの引数を読み取ります。

“annotate”バッファーでは、‘VC-Annotate’メニューから、これら、または他のカラースケールオプションが利用可能です。このバッファーでは、過去のリビジョンの注釈の表示、diffの閲覧、ログエントリーの閲覧を行うために、以下のキーを使うこともできます:

p

前のリビジョン(たとえば現在の注釈付きのリビジョンの1つ前のリビジョン)に注釈を付けます。数引数は繰り返し回数となるので、C-u 10 pは10個前のリビジョンに注釈を付けます。

n

次のリビジョン(たとえば現在の注釈付きのリビジョンの1つ後のリビジョン)に注釈を付けます。数引数は繰り返し回数です。

j

カレント行に示されたリビジョンに解釈を付けます。

a

カレント行に示されたリビジョンの、1つ前のリビジョンに注釈を付けます。これはカレント行が変更される前の状態のファイルを見るとき便利です。

f

カレント行に示されたリビジョンのファイルを、バッファーに表示します。

d

カレント行のリビジョンと、その前のリビジョンの間のdiffを表示します。これはカレント行のリビジョンが実際にどのように変更されたか、ファイルを見るとき便利です。

D

カレント行のリビジョンと、その前のリビジョンの間で、(変更セットをサポートするバージョンコントロールシステムの)変更セットのすべてのファイルのdiffを表示します。これはカレント行のリビジョンが、実際にどのように変更されたかツリー内を見るとき便利です。

l

カレント行のリビジョンのログを表示します。これはカレント行のリビジョンの変更にたいする執筆者(author)の説明を見るのに便利です。

w

作業中のリビジョン(編集中のもの)に注釈を付けます。pnを使って他のリビジョンを表示している場合、このキーで作業中のリビジョンに戻ることができます。

v

注釈の表示・非表示を切り替えます。これは邪魔になる注釈抜きでファイル内容だけを見たいとき便利です。