Title: CVS でブランチを始める


    Contents


1 cvsroot の指定

cvsroot を指定する 環境変数 CVSROOT と www.gfd-dennou.org へのアクセス方法を指定する 環境変数 CVS_RSH を設定する. (これらを指定しなくともコマンドに直接指定する方法もある).

$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/hoge/cvsroot
$ export CVS_RSH=ssh

なお, www.gfd-dennou.org 内で作業をおこなう場合には

$ export CVSROOT=/GFD_Dennou_Club/ftp/arch/hoge/cvsroot

のみでも構わない.

2 ブランチの作成

最初にトランク(本線)にタグを付ける

$ cd /home/foo/hoge
$ cvs tag hoge-20050610

この例では hoge-20050610 というタグを付けた

次にブランチ(枝)を作成する.

$ cvs tag -b hoge-20050610-branch

トランクのワーキングディレクトリにおいて, 以下を実行

$ cvs update -r hoge-20050610-branch

ブランチにおいてコミット, タグ付けは, トランクにおけるそれと 同じやり方で行う.

3 ブランチの変更をトランクに反映させる

ここではブランチの作業ディレクトリを ~/branch/hoge とし, トランクの 作業ディレクトリを ~/trunk/hoge とする.

始めに update -A コマンドを用いてブランチから抜け出し, そのブランチとの 差分を調べる.

~/branch/hoge$ cvs update -A

標準出力されたファイルが, トランクとブランチで内容の異なるファイルである. その差分を見るためには, 以下を打鍵する.

~/trunk/hoge$ cvs diff -c -r hoge-20050610-branch  (ファイル名)

ブランチの内容をトランクに反映させる

~/trunk/hoge$ cvs update -j hoge-20050610-branch (ファイル名)
~/trunk/hoge$ cvs commit -m "merged from branch" 

注) cvs update -A を行うとブランチから抜け出しトランクに移る. そのため 再度ブランチに移るには cvs update -r (ブランチ名) を行う必要がある.

4 トランクの変更をブランチに反映させる

ここではブランチの作業ディレクトリを ~/branch/hoge とし, トランクの 作業ディレクトリを ~/trunk/hoge とする.

まずはトランクにタグを張っておく.

~/trunk/hoge$ cvs tag hoge-20050610+1

トランクとブランチでの差分を見るためには, 以下を打鍵する. 比較するために, -r オプションとしてトランクのタグを与える

~/branch/hoge$ cvs diff -c -r hoge-20050610+1 (ファイル名)

ブランチの内容をトランクに反映させる

~/branch/hoge$ cvs update -j hoge-20050610+1 (ファイル名)
~/branch/hoge$ cvs commit -m "merged from branch"