衝突の解消
===========

ワークフロー
-------------

マージプロセスの間にそれぞれの衝突を解消することを強制する他のいくつかのツール\
とは異なり、Bazaarはできる限りマージしてから衝突を報告します。
これによって衝突の解消をより扱いやすくします。
解消すべき方法を決めることを手助けするためにポストマージツリー全体の内容が\
利用可能だからです。
それぞれの解消もしくはグループがよい状態であることを確認するためにテストを\
いくつか選んで実行することもよいでしょう。

衝突の一覧を表示する
---------------------

``merge`` コマンドで報告されるのと同様に、\
突出した衝突の一覧は ``conflicts`` コマンドを使用することでいつでも表示されます。
これは ``status`` コマンドから出力の一部として含めることも可能です。

衝突を解消する
--------------

衝突に遭遇したら、 ``merge`` コマンドは解決されていない領域を表示する\
埋め込みマーカーをそれぞれのファイルに追加します。
1つの衝突を持つそれぞれのファイルに対して3つのファイルも作ります:

 * foo.BASE
 * foo.THIS
 * foo.OTHER

``foo`` は衝突したファイルの名前です。
多くの場合、問題になっているそれぞれのファイルを手作業で編集し、\
関連領域を修正し衝突マーカーを除去することで衝突を解消できます。

衝突の中のすべてのファイルを修正し、マーカーを削除した後で、
``resolve`` コマンドを使用してBazaarにそれらを解決したものとしてマークするように頼みます::

  bzr resolve

代わりに、それぞれのファイルを修正した後で、これを解消したものとしてマークできます::

  bzr resolve foo

``resolve`` コマンドは作業ツリーからBASE, THIS, OTHERファイルをクリーンナップします。

remergeコマンドを使う
---------------------

いくつかの場合、任意のファイルに対して異なるマージアルゴリズムを試したいことがあります。
これを行うためには、ファイルを次のように指定して ``remerge`` コマンドを使います::

  bzr remerge --weave foo

``foo`` はファイルで ``weave`` オプションは利用可能なマージアルゴリズムです。
いわゆる ``criss-cross`` (十字遺伝)マージが検出されたときに、
たとえば、2つのブランチが同じものをマージしてからお互いをマージするときに、\
このアルゴリズムはとりわけ便利です。
詳細については ``criss-cross`` と ``remerge`` のオンラインヘルプを参照してください。

衝突を解消するために外部ツールを利用する
-----------------------------------------

衝突を解消するためにGUIツールを利用したいのであれば、
*extmerge* プラグインをインストールしてください。次のようにインストールできます::

  bzr extmerge foo

``foo`` は衝突したファイルです。
解消するファイルの一覧を提供するよりも、すべての衝突ファイルを暗黙の内に指定するために ``--all`` オプションを利用できます。

``extmerge`` コマンドは ``bazaar.conf`` ファイルの中の ``external_merge`` 設定によって指定されるツールを使います。
設定されていなければ、 ``kdiff3`` もしくは ``opendiff`` のような人気のあるマージツールが設定されます。
後者はOS XのFileMergeのコマンドラインインターフェイスです。
