2012年2月9日木曜日

cvs : branchのマージ

先日リリースしたコードに対して、ある担当者が変更を入れたいというリクエストとともに
変更したコードを送ってきた。
変更内容を確認したあとに、最新のコードにこの変更を適用しようとおもい、手で修正するのもスマートじゃないと思い、version 管理ツールを使ってやってみることに。

このコードはcvsで管理されていたので、cvsでのやり方をgoogle先生に問い合わせて実行。うまくいったので記録しておく。

行った作業は以下の通り

1)リリースした時点のバージョンのコードを取り出す

$ cvs co -rXXXX file_name (or module_name)

2)このバージョンのコードにタグを付加する
$ cvs tag tag_name

3)tagをつけたので、一旦コミット
$ cvs commit

4)付加したtag名をつかって、ブランチを作成
$ cvs -rtag -b -r tag_name branch_name file_name (or module_name)

5)作成したbranchのコードを作業フォルダにチェックアウト
$ cvs co -r branch_name file_name ( or module_name)

このブランチにあるコードのバージョンと、担当者が編集したコードのバージョンがそろったので、この担当者が送ってきた修正後のファイルを作業場所にあるファイルと置き換える。
”cvs diff ”をつかって、この担当者が編集した場所を確認後 commitする。

$ cvs commit file_name

最新のコードを別の作業フォルダにチェックアウト

$cvs co file_name


ブランチのコードを、マージする。

$ cvs update -j branch_name


これで、ブランチで加えられた変更が最新のコードに自動でマージされる。コンフリクトしている箇所、変更点の確認をしてcommitで完了。

$ cvs commit

やってみると、そんなに難しくない。



1)リリースしたコードにタグをつける。(リリース時点にタグがついていれば、再度つける必要はない)
$ cvs
2)