cvs::branching and merging

  • branch を作る
$ cvs tag -b   branch-hoge
  • branch で作業する
$ cvs update -r branch-hoge
  • branch での変更を trunk に持ってくる

trunk 側で

$ cvs update -kk -j branch-hoge 

これで,branch-hoge から, branch-hoge の最新版までの差が
trunk 側に適用される.

イメージとしては

$ diff  "branch-hogeの初版"  "branch-hogeの最新版"  | patch 

を想像すると良い.

  • trunk側でcommitする
$ cvs ci -m "Merge changes from branch-hoge"
  • trunk側にtagを打つ
$ cvs tag merged-from-branch-hoge
  • branch 側にtagを打つ
$ cvs tag branch-hoge-2

こうしておくと,次回 branch-hoge の枝の修正を trunk に取り込む場合は,trunk側で

$ cvs update -kk -j branch-hoge-2
$ cvs ci -m "Merge changes from branch-hoge-2"

とすれば良い.これも,イメージとしては

$ diff  "branch-hoge-2"  "branch-hogeの最新版"  | patch 

と考えると解りやすい(気がする).