衝突の解消¶
ワークフロー¶
マージプロセスの間にそれぞれの衝突を解消することを強制する他のいくつかのツールとは異なり、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のコマンドラインインターフェイスです。