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