Next: , Previous: Magic branch numbers, Up: Branching and merging


5.6 枝全体をマージする

update コマンドに ‘-j branch’ フラグを付けると、 枝に加えられた変更を作業コピーに反映することができます。 ‘-j branch’ オプションが1つだけだと、 枝の分岐点と枝の最新リビジョン間の違いを (あなたの作業コピーに) マージします。

-j’ は、“join” の略です。

次のリビジョン・ツリーを考えます。

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

枝 1.2.2 には ‘R1fix’ というタグ (文字列) が付けられています。次 は m.c というファイル1つを含むモジュール ‘mod’ の例です。

     $ cvs checkout mod               # 最新のリビジョン 1.4 を取り出す
     
     $ cvs update -j R1fix m.c        # 枝で行なわれた変更(リビジョン 1.2
                                      # と 1.2.2.2 の差分)を作業コピーに追加
     
     $ cvs commit -m "Included R1fix" # リビジョン 1.5 を作成

マージ作業で衝突が起きることもありますが、衝突が起きた場合は、それを解 決してから新しいリビジョンを格納して下さい。 See Conflicts example.

もしソースファイルにキーワードがあれば (see Keyword substitution), 本当に必要なものよりも余分に衝突を得るかもしれません。これを回避する方 法は Merging and keywords を参照してください。

checkout コマンドでもフラグ ‘-j branch’ を使用できます。 以下の様にして上記と同じ効果を得ることができます:

     $ cvs checkout -j R1fix mod
     $ cvs commit -m "Included R1fix"