分散構成管理は、比較的新しい領域であり、未開の地を切り開こうとする人々の意欲によって、発展著しいものがあります。
私が分散構成管理に関して筆を執っているのは、この分野が手引き書を書く価値のある重要なテーマであるという確信からです。執筆の題材として Mercurial を選択したのは、分散構成管理の概要を学習するのに適した容易さと、他の多くの構成管理ツールでは適用の難しい実践の場からの要望への適用性の、2つを併せ持っているためです。
本書は、読者の役に立つことを願って、執筆途中から公開しています。その一方で、読者が本書を利用することが、一種の査読として機能することも期待しています。
本書では、コードのサンプルに関して、通例とは異なる手法を採用しています。全てのサンプルは “生きた”— シェルスクリプトにより実際に Mercurial コマンドを実行した結果を使用した — サンプルです。本書は常にソースファイルから「ビルド」され、全てのサンプルスクリプトの自動実行と、その結果と期待する結果との比較が行われます。
この手法の利点は、本書が冒頭で言及している Mercurial の版における振る舞いを厳密に記述していることになるため、サンプルが常に正確である点にあります。執筆対象となる Mercurial の版を変更し、その結果コマンドの出力が変化した場合、本書のビルドは失敗します。
この手法のわずかな欠点は、サンプルにおいて目にする日時情報が、同じコマンドを人手で入力した際とは異なる方法で、 “押し潰され” がちな点です。複数のコマンドを毎秒入力し続けるのは人手では無理ですが、例示されている実行結果の日時情報によれば、本書のビルドに使用される自動化スクリプトは、1秒間に実に多くのコマンドを実行していま す。
このため、本書のサンプルにおける連続した複数回のコミットは、まるで同一時刻に起きたことのように見えます。この現象は 9.5 節における bisect の例に見ることができます。
以上のことから、本書のサンプルを見る際には、コマンドの出力における日時情報に、必要以上の注意を払わないようにしてく ださい。その代わり、サンプルにおいて目にする挙動や、その再現性に関しては、確信を持っていただいて構いません。
本書は Open Publication License 下における利用を許可し、もっぱら Free Software ツールを使用して生成されます。組版には LATEX、図版にはInkscape を使用しています。
本書の全ソースコードは、 http://hg.serpentine.com/mercurial/bookにある Mercurial リポジトリで公開されています。