第23章 より進んだブランチ — 星型マージスタイルの共同作業

目次

基本的なブランチから、より複雑なブランチへ
簡単な開発ブランチ
開発ブランチのマージ問題
replay は、開発ブランチマージ問題を解決しません
update は開発ブランチマージ問題を解決しません
開発ブランチマージ問題を解くための一つの方法
星型マージ — 一般的な開発ブランチマージ問題の解決

前の章でhello-world を拡張した例を見てきました。

アリスとボブがプロジェクトの主な開発者であるとして、 ひとつのアーカイブから始めて、そこにいくつかのリビジョンを作ったと しましょう。

そのプロジェクトのユーザであるキャンディスは自分自身をアーカイブを作り、 hello-worldプロジェクトをブランチを始め、 自分自身のローカルな修正を管理し始めたとします。

この章では、実際の世界でのフリーソフト開発のもっと典型的な状況を考えて いきます。ここで、アリスとボブは公開プロジェクトの管理者で、 キャンディスはそのプロジェクトに対する主要なリモート貢献者であると します。そのような状況であらたに必要になるリビジョン管理システムの 機能を特定し、そのような要求を満たすのを助けるようなarch のコマンドのいくつかを見ていきます。

基本的なブランチから、より複雑なブランチへ

いままで、例にそって読み進めてきたのなら、キャンディスは基本的なブランチを 持っているはずです。彼女は主系からブランチを作り、ローカルな修正を加え、 アリスとボブの主系の最新の内容を自分のブランチに反映しました。

この時点で、アリスとボブはキャンディスの変更を主系にマージしたいと 思っているとします。

実際にはそのようなマージ作業はすでに済んでいます。キャンディスの 最後のリビジョンはまさにアリスとボブがほしいと思っているもの だからです。キャンディスの最後のリビジョンを彼ら自身の主系に コミットすることによって、アリスとボブは非常に簡単に そのようなマージすることができます。

        % larch get -A lord@emf.net--2003-candice \
                    hello-world--candice--0.1 \
                    hw-C
        [...]


        % cd hw-C

        % larch set-tree-version -A lord@emf.net--2003-example \
                    hello-world--mainline--0.1

        % larch make-log
        ++log.hello-world--mainline--0.1--lord@emf.net--2003-example

        [... edit log file (consider larch log-for-merge) ... ]

        % cat ++log.hello-world--mainline--0.1--lord@emf.net--2003-example
        Summary: merge from Candice's Branch
        Keywords: 

        Patches applied:

          * lord@emf.net--2003-candice/hello-world--candice--0.1--patch-2
             merge from mainline sources

          * lord@emf.net--2003-candice/hello-world--candice--0.1--patch-1
             Punctuated the output correctly

          * lord@emf.net--2003-candice/hello-world--candice--0.1--base-0
             tag of 
              lord@emf.net--2003-example/hello-world--mainline--0.1--patch-1

        % larch commit
        [....]

注意。よく読んでください: いま使った"トリック"に注意してください。キャンディスの最後のリビジョンはアリスとボブが まさに欲しいと思っているものでした — 彼らはgetset-tree-version と組み合わせて、キャンディスのツリーを彼らの主系に簡単にコミットでるようなものに変えました。