設計データの管理にCVSを使いましょう
概要
- Concurrent Version Systemの略です
- バージョン管理をディレクトリ全体で行えます
- 基本的にテキストデータを管理します
- 変更履歴が残ります
- 一つのファイルに対する複数人の修正による衝突を回避します
- 別の開発品への枝分かれなどのサポートをしてくれます
リポジトリ(保存容器)の環境変数設定
$somewhere,$localdataは適当な値に変えてください
csh
setenv CVSROOT $somewhere/cvsdata
setenv CVSEDITOR vi
bash
export CVSROOT=$somewhere/cvsdata
export CVSEDITOR=vi
リポジトリ(保存容器)の初期データを作成
mkdir $somewhere/cvsdata
cvs init
現在のソースツリーをリポジトリに格納
cd /genzaino/src
cvs import -m "project_name" src $HOME start
- /genzaino/src にソースツリーがあるとして、importすることにより$CVSROOTに/genzaino/src 以下がsrcの名前で格納される
- 以後リポジトリ($CVSROOT)がデータの大本となる
- その結果/genzaino/srcは不要となる
実際の作業
- init,importは最初のみ
- 基本はcheckout後、update/commitの繰り返し
リポジトリからコピー(checkout)
自分のサンドボックス(作業場所)に移動して
cd $localdata
cvs checkout src
デバッグ
cd src
vi module/*.vhd
ファイルの更新(update)
- 他の更新を自分のサンドボックス(作業場所)に取り込む
cd $localdata
cvs update
ファイルの追加
- リポジトリに新しいファイルを作ったことを知らせる
cd $localdata
cvs add src/module/newfile.vhd
ファイルの削除
- サンドボックス(作業場所)のファイルを消してから
cd $localdata
cvs remove src/module/unuse.vhd
- 次のcommit時にCVSROOTから削除される
リポジトリに格納(commit)
コンパイルエラー、動作チェック終了後修正確認済みなら
cd $localdata
cvs commit
- commit する前に updateしておくとよい。他の人と修正がぶつかったとき、updateで解決しておいてcommit。そのままcommitするとエラーが出る場合があるので。
- commitするとエディターが立ち上がり、修正ファイルのログが開くので、一番下に変更箇所のコメントを入れましょう。
作業領域開放(必要に応じて)
cd $localdata
cvs release -d src
- 通常はupdateで最新にしておけば特に消す必要はない。
バージョン管理
情報を見る [#c9569cb7]
cd $localdata
cvs status
cvs log
任意の日付のツリーを取り出す
cd $localdata
cvs checkout -D "2005-11-15" src
チェックアウト状態の確認
cvs history -a -o
トランク(幹)とブランチ(枝)
枝分かれ場所にタグ
- 一旦リリースして
cd $localdata
cvs release -d src
- CVSROOTのカレントバージョンに直接RELEASE-1-0タグ発行
cvs rtag release-1-0 src
ブランチ発生
- そこにブランチ release-1-0-branch を発生させる
cvs rtag -r release-1-0 -b release-1-0-branch src
トランクかブランチか
今後は通常の update/commit でトランクの更新、もしブランチの変更が生じたら
cd $localdata
cvs release -d src
のように一旦リリースしてから以下のようにブランチを呼び出す
cvs checkout -r release-1-0-branch src
その後は update/commit で自動的にブランチ側が更新される