Next: , Up: Emerge


20.14.1 emergeの概要

以下の4つのコマンドのいずれかでemergeを実行します。

M-x emerge-files
指定した2つのファイルを併合する。
M-x emerge-files-with-ancestor
共通の祖先を参照しながら、指定した2つのファイルを併合する。
M-x emerge-buffers
2つのバッファを併合する。
M-x emerge-buffers-with-ancestor
3番目のバッファに入っている共通の祖先を参照しながら、2つのバッファを併合する。

emergeコマンドは、2つのファイル、あるいは、2つのバッファを比較して、 比較結果を3つのバッファ、つまり、 各入力テキストに1つずつ(AバッファBバッファ)と、 併合を実施するバッファ(併合バッファ)に表示します。 併合バッファには、比較によって得られる差分だけでなく、 併合したテキスト全体が表示されます。 2つの入力テキストが相違している箇所については、 どちらのテキストを併合バッファに含めるか選択できます。

既存のバッファを入力源とするemergeコマンドでは、 入力バッファがナロイングされていると、 バッファの参照可能な部分だけを使います(see Narrowing)。

併合したい2つのテキストのもとである共通の祖先にあたる版を利用できるときには、 emergeはそれを使ってどちらの選択肢が正しいのか推測します。 一方の入力と祖先との一致部分がどこかにあれば、 もう一方の入力には併合結果に残すべき意図的な変更がなされていると推測します。 共通の祖先のテキストを指定するには、 名前に‘with-ancestor’の付いたコマンドを使ってください。 これらのコマンドは、A版、B版、共通の祖先に対応する 3つのファイル名かバッファ名を読み取ります。

入力を比較してバッファの準備を終えると、つぎは対話的な併合作業が始まります。 併合バッファで特別な併合コマンドを打って併合作業を制御します。 併合バッファには、単なる差分ではなく併合したテキスト全体が表示されます。 入力テキストの各相違箇所に対して、どちら側を残すか選択したり、 両者をもとにして編集できます。

併合バッファでは、emergeモードと呼ばれる特別なメジャーモードが使われ、 これらを選択するコマンドがあります。 もちろん、通常のEmacsコマンドでバッファを編集することもできます。

emergeの注意は、いつでも注目相違箇所と呼ばれる 相違箇所に向けられています。 3つのバッファ内では、注目相違点はつぎのように印が付けられます。

     vvvvvvvvvvvvvvvvvvvv
     text that differs
     ^^^^^^^^^^^^^^^^^^^^

emergeはすべての相違箇所に順に番号をふります。 さらに、モード行にはつねに注目相違箇所の番号が表示されます。

通常、併合バッファはA版の内容で始まります。 しかし、A版の内容が共通の祖先の内容と一致するときには、 併合バッファはB版の内容で始まります。

emergeを終えると、併合バッファにはその時点の併合済みテキストが残ります。 emerge終了時には、C-x C-wでファイルに保存できます。 emerge-filesemerge-files-with-ancestorに 数引数を指定すると、ミニバッファで出力ファイル名を読み取ります。 (どちらの場合でも、これがいちばん最後に聞かれるファイル名。) すると、emerge終了時には、併合済みのテキストがその出力ファイルに保存されます。

emergeを終えると、通常、emergeコマンドが併合バッファをファイルに保存します。 emergeをC-]でアボートするとemergeコマンドは併合バッファを保存しませんが、 必要ならばユーザー自身で保存できます。