第15章 update/commit スタイルの共同作業

目次

アリスとボブは main をハックします
ボブが先にコミットします
アリスはまだコミットできません
なぜアリスはコミットすることができないかということについての理解
update コマンド
どのように動作するか — update コマンド

前の章までで、どうやってアーカイブにプロジェクトを追加し、 最初のソースを保管し、そのようなソースに加えた変更を保管し、 そのアーカイブからリビジョンを抽出するかについて学んできました。

前の章では、どうやってアーカイブをネットワーク越しにアクセス可能にするか を学びました。

この章では、どのようにして特定のプロジェクトに対してお互いに変更を加えるような 複数のプログラマーが、一つのアーカイブを共有することができるかについて話しを進めていきます。

アーカイブを共有したり、与えられたプロジェクト上で共同作業する方法には それぞれ微妙に違った非常にたくさんの方法があるということを知って置く必要 があります。その中で、 一番簡単なテクニックの一つから 始めます。

アリスとボブは main をハックします

アリスとボブの両者がhello-worldプロジェクト上で作業し、 一つのアーカイブを共有しているとしましょう。我々の例では、両方の役割を同時に こなすことにします。

最初に、両方のプログラマーはそれぞれ自分自身のプロジェクトツリーが必要に なります。

        % cd ~/wd

        % [ ... remove any directories left from earlier examples ...]


        % larch get hello-world--maineline--0.1  hello-world-Alice
        [....]

        % larch get hello-world--maineline--0.1  hello-world-Bob
        [....]

アリスのタスクは、それぞれのファイルに、いくつかの合理的な注釈を付け加える ことです。それが終った時点で(しかし、アーカイブにはまだ変更をcommit していないという前提では)ファイルは以下のようになっています:

        % cd ~/wd/hello-world-Alice

        % head -3 main.c
        /* Copywrong 1998 howdycorp inc.  All rights reversed.*/

        extern void hello_world (void);

        % head hw.c
        /* Copywrong 1998 howdycorp inc.  All rights reversed. */

        #include <stdio.h>

一方ボブは、mainに、もっと多くのコメントを追加していたとします:

        % cd ~/wd/hello-world-Bob

        % cat main.c
        extern void hello_world (void);

        int
        main (int argc, char * argv[])
        {
          hello_world ();

          /* Exit with status 0
           */
          return 0;
        }

        /* tag: main module of the hello-world project
         */

二人のプログラマーは修正されたバージョンのhello-worldを持って いて、両者とも、相手の修正を反映していないことに注意してください。