最初, 戻る, 進む, 最後, 目次 に行く。


8.2 枝から何度もマージする

前節の例を続けると、 現在のリビジョン・ツリーは次の様になっています:

+-----+    +-----+    +-----+    +-----+    +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !      <- The main trunk
+-----+    +-----+    +-----+    +-----+    +-----+
                !                           *
                !                          *
                !   +---------+    +---------+
Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
                    +---------+    +---------+

前節で枝 `R1fix' を幹にマージした事を、ここでは星線で表します。

次に、枝 `R1fix' で開発が続けられたと仮定します:

+-----+    +-----+    +-----+    +-----+    +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !      <- The main trunk
+-----+    +-----+    +-----+    +-----+    +-----+
                !                           *
                !                          *
                !   +---------+    +---------+    +---------+
Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
                    +---------+    +---------+    +---------+

この新しい変更を幹にマージする場合を考えます。 ここで再び `cvs update -j R1fix m.c' コマンドを用いた場合、 CVS は既にマージされた変更点を重ねてマージしようとして、 望ましくない結果をもたらします。

そこで、 未だ幹にマージされてない変更点だけマージしたい旨を、 明示する必要があります。 これには、`-j' オプションで二つのリビジョンを指定します。 CVS は、 最初のリビジョンから次のリビジョン迄の変更をマージします。

cvs update -j 1.2.2.2 -j R1fix m.c    # 1.2.2.2 から、枝 R1fix の
                                      # 先頭までの変更をマージする

この方法の問題点は、リビジョン 1.2.2.2 を自分で指定する必要がある事です。 最後にマージが行われた日時を使用する方が、少しましでしょう:

cvs update -j R1fix:yesterday -j R1fix m.c

さらに良いのは、 変更点を幹にマージする度に、 枝 `R1fix' にタグを振っておき、 後でマージする時にそのタグを用いる方法です:

cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c


最初, 戻る, 進む, 最後, 目次 に行く。