前の章で、ブランチとマージについて学び始めました。どのようにしてプロジェクトの複数のブランチを 管理したり変更を適用するために whats-missing, update, そして replay のようなコマンドを使うことができるのかを見てきました。
この章では"パッチログ"について少し説明します: それはプロジェクトツリーの履歴 を管理するのに利用される仕組みです。それは複雑なマージに利用することが できる履歴の一部も含んでいます。
以前の章で最初にパッチログが出て来たことを思い出してください。 (たとえば、プロジェクトツリーを最初に初期化した時です。 第8章参照)。この章では パッチログについてより詳しく説明していきます。
アーカイブ中の全ての最初のインポート、タグリビジョン、そしてチェンジセットリビジョン はそれに関連したログメッセージを持つことを思い出してください。そのメッセージは importやcommitのようなコマンドに明示的に渡す ヘッダとボディー、そしてarchによって自動的に生成されるヘッダからなります。
プロジェクトツリーが最初にアーカイブにインポートされるとき、新しいリビジョンの ためのパッチログエントリがツリーに追加されます。 コミット処理全体の一部として、commitが起こると、新しいリビジョン のログエントリがツリーに追加されます。tagコマンドによって 作成されたリビジョンをgetする場合、そのタグリビジョンのための パッチログエントリを含んでいることがわかるでしょう。
パッチログエントリは蓄積されます。それで例えばそれぞれのコミット は新しいログエントリを追加し、以前のすべてのログエントリは保存されたままです。 それぞれのタグリビジョンはそのタグのためのエントリのみを含むのではなく、 タグづけされたリビジョンから受け付いたすべてのログエントリを含んでいます。
前の例に戻って、アリスとボブのpatch-2リビジョンを見てみましょう:
% cd ~/wd [... remove directories from earlier examples ...] % larch get -A lord@emf.net--2003-example \ hello-world--mainline--0.1--patch-2 \ hw-AnB-2 [...] % cd ~/hw-AnB-2
最初にパッチログは arch のバージョン名でソートされることに注意 してください。このツリーは一つのバージョンのみからのログを持っています:
% larch logs lord@emf.net--2003-example/hello-world--mainline--0.1
そのログ中で、最初のインポートのログと、ふたつのチェンジセットがあります:
% larch log-ls -A lord@emf.net--2003-example \ --summary \ hello-world--mainline--0.1 base-0 initial import patch-1 Fix bugs in the "hello world" string patch-2 commented return from main
特にこのようなログエントリの一つについて調べてみます:
% larch cat-log -A lord@emf.net--2003-example \ hello-world--mainline--0.1--patch-2 Revision: hello-world--mainline--0.1--patch-2 Archive: lord@emf.net--2003-example Creator: Tom (testing) Lord <lord@emf.net> Date: Wed Jan 29 12:46:50 PST 2003 Standard-date: 2003-01-29 20:46:50 GMT Summary: commented return from main Keywords: New-files: \ {arch}/[...]/hello-world--mainline--0.1/[...]/patch-log/patch-2 Modified-files: main.c New-patches: \ lord@emf.net--2003-example/hello-world--mainline--0.1--patch-2 Added a comment explaining how the return from main relates to the exit status of the program.
例えば、patch-2チェンジセットはmain.cを修正し、 新しいファイルとログエントリ自身を追加しました。(上の出力中ではその名前は省略して あります)。
別の例はキャンディスのツリーからのものを考えると良いです。 彼女はpatch-1リビジョンでアリスとボブのツリーから分岐する ためにタグを使ったことを思い出してください。それで:
% cd ~/wd % larch get -A lord@emf.net--2003-candice \ hello-world--candice--0.1--patch-2 \ hw-C-0 [...] % cd ~/hw-C-0 % larch logs lord@emf.net--2003-candice/hello-world--candice--0.1 lord@emf.net--2003-example/hello-world--mainline--0.1 % larch log-ls -A lord@emf.net--2003-example \ --summary \ hello-world--mainline--0.1 base-0 initial import patch-1 Fix bugs in the "hello world" string % larch log-ls -A lord@emf.net--2003-candice \ --summary \ hello-world--candice--0.1 base-0 tag of \ lord@emf.net--2003-example/hello-world--mainline--0.1--patch-1