CVS:Concurrent Versions System。ソース等のバージョン管理を行うツール。
必要に応じて3を繰り返す。又は2〜4を繰り返す。
時には過去のバージョンに対して修正を行う事があるかも。
RedHat7.2の場合、デフォルトでインストールされていた。
→アーカイブからのインストール [2004-01-18]
環境変数等の設定やリポジトリの作成を行う。
$ mkdir /usr/local/cvs
$ export CVSROOT=/usr/local/cvs
$ cvs init ←正常に終わっても何も表示されない $ ls $CVSROOT/CVSROOT ←このディレクトリが出来ていればOK
リモートから接続できるCVSサーバーにするには、xinetd用の設定を行う。
例えば本番用に一旦リリースするなら、その状態にブランチ(枝:中心となるソースから派生させる)のタグを付けておくことが出来る。[2003-10-07]
$ cd 作業ディレクトリ
$ cvs tag -b ブランチ名
これは、現在の作業ディレクトリの状態を元にブランチ名を付けただけであり、この時の作業ディレクトリ自体がブランチ用の作業ディレクトリに変わるわけではない。
後から本番用だけに何か修正したい場合は、ブランチのソースを取り出して修正する。
$ cvs checkout -r ブランチ名 プロジェクト名
こうしてブランチ用に作られた作業ディレクトリでの修正は、通常の作業ディレクトリと同様にコミットすることも出来る。
この場合、トランク(幹:中心となっているソースのこと)には影響を与えない。
しかし、ブランチでの修正をトランクに反映させることも出来る。
ブランチ側でタグを付けておき、トランク側でマージのコマンドを実行することで反映させる。(通常の修正同様、コンフリクトが発生する可能性はあるが)
初回のマージの例) $ cd ブランチの作業ディレクトリ $ cvs tag -b タグ名1 $ cd トランクの作業ディレクトリ $ cvs update -d -P -j ブランチ名 -j タグ名1 $ cvs commit
2度目以降のマージの例) $ cd ブランチの作業ディレクトリ $ cvs tag -b タグ名2 $ cd トランクの作業ディレクトリ $ cvs update -d -P -j タグ名1 -j タグ名2 $ cvs commit
マージの際、ソース内に「$Id$」といったCVSキーワードが展開されていると、「その行が違う」としてコンフリクトが発生する。そうしない為には、kオプションでキーワード展開を止めておく必要がある。
(→CVSキーワードを無視して比較し、相違があるファイルのみコピーするantタスク)
また、updateの「-d -P」は重要。これが無いと、ブランチ側でディレクトリを追加したり削除していたりした場合、反映されない。