設計データの管理に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 で自動的にブランチ側が更新される