星型マージ — 一般的な開発ブランチマージ問題の解決

開発ブランチマージ問題の一般的にな完全な解決策を説明するのは このチュートリアルの範囲を少し越えています。上で見せた二つの解決策は 二つの場合について示していますが、時にはもう少し違った解決方法が 必要な場合もあります。

知っておくべきことは、単純な開発ブランチがある場合には (簡単な開発ブランチ項参照)、 star-merge コマンドは、不要なマージ衝突を起こすことなく それらの間でどのようにマージすれば良いかを知っているということです。

star-merge (ここで示すように––in-place オプションつきの ばあい)は三つの引数をとります: ふたつの arch バージョンとプロジェクトツリー です(名前は ./で始まる必要があります)。これらの引数の順序は それぞれのソースからの変更の順序を決めます。

たとえば、前の節の二つの解決策は以下のようにしても達成することができます:


        # giving the mainline branch precedence over the candice
        # branch:
        # 

        % larch star-merge --in-place \
                  lord@emf.net--2003-example/hello-world--mainline--0.1 \
                  lord@emf.net--2003-candice/hello-world--candice--0.1 \
                  ./hw-C-4


        # giving the candice branch precedence over the mainline
        # branch:
        # 

        % larch star-merge --in-place \
                  lord@emf.net--2003-candice/hello-world--candice--0.1 \
                  lord@emf.net--2003-example/hello-world--mainline--0.1 \
                  ./hw-C-4

利用に関する注意: 以前に説明したマージの解決策は両方とも二つのチェンジセットの適用を含んでいた ことに注意してください。一般的に、そのようなものの片方、または両方は パッチの衝突を起こすかも知れません。もし最初のマージの後衝突が起こった場合は star-merge は中断し、その衝突を解決するチャンスが与えられます。 star-mergeに対する––finish オプション を使って、二番目のチェンジセットを適用します。 (see larch star-merge ––help参照)。

利用に関する注意: star-mergeを使う前に、get/set-tree-version/commit の トリックを使ってキャンディスから主系への 最初のマージ戻しをしました。 (基本的なブランチから、より複雑なブランチへ項参照)。 一般的に、基本的なブランチから、親ブランチへ戻す形の最初のマージは常にこのような方法で 行われるべきです。 (時々、ユーザから star-merge は そのような「組み込みの」トリックを持つべきだという要求があります。 多分、いつかそのようになるでしょう。)