http://shimaki-hp.hp.infoseek.co.jp/cvs/book1.html
http://hibiki.miyagi-ct.ac.jp/~suzuki/comp/cvs.html
http://kahori.com/j-cvsbook/j-cvsbook.html
http://www.mikamama.com/CVSBook/Q_and_A.html
を参考にさせてもらいました。
あるディレクトリ以下のファイルをCVS管理したいとします。 あるディレクトリをHOGEとすると
#cd ~/HOGE #cvs import -m "コメント" モジュール名 ベンダ名 タグ名 たとえば #cvs import -m "HOGEアプリケーション" HOGE KINO V20AP2003082101
これだと、HOGE以下全てのファイルがインポートされてしまうので
#cd /tmp/work/ #cvs import -m "HOGEアプリケーション" HOGE KINO V20AP2003082101 No conflicts created by this import #cp -pfr ~/HOGE/ /tmp/work/
とかして、
#cvs add 追加したいファイル
とかやるみたいです。 さらに、これだと、一個一個ファイルを追加する必要があるため(!)以下のワンライナーがあります。
#cvs update | grep ^\? | cut -d ' ' -f 2 | xargs cvs add
cvs -q -n update
実際に取得するには
cvs update
スナップショットを取るため、タグ付けを利用します。具体的には任意のディレクトリで
cvs rtag V20AP2003082501 HOGE cvs rtag タグ名 モジュール名
これでよいはず
cvs checkout -r V20AP2003082501 HOGE cvs checkout -r タグ名 モジュール名
一般には以下の2つの方法が利用されているようです。
before.java -> after.java としたいとします。
checkoutしたWorkディレクトリで作業
mv before.java after.java cvs remove before.java cvs add after.java
もう一方のリポジトリを直接書き換えるという方法は少々強引ですが、ログなどもそのまま引き継がれ、まるで始めからその名前であったかようように cvs 内で管理されます。方法は簡単で、,v ファイルの名前を変更してあげるだけです。
cd /opt/cvsroot 内の該当ディレクトリに移動 mv before.java,v after.java,v
cvs -q -n update
の結果で
U hoge.txt <- サーバ側がUpdateされている(サーバが新しい) M hoge.txt <- 自分側が修正した(ローカルが新しい)
ファイルのあるディレクトリに移動して
#cvs remove -f ファイル名
でOK.
中のすべてのファイルをremoveして、消したいディレクトリと同じディレクトリに移動して
#cvs update -P
とする
cvs -q -n update <- -q: 詳細を表示しない -n: 実行しない
cvs -q update -d | egrep -v '^\?' <- -d: 新規ディレクトリを追加する
ローカルのモジュール内で、あるファイルのステータスを見る
> cvs status -v build.properties ================================================================= File: build.properties Status: Locally Modified Working revision: 1.5 Repository revision: 1.5 /opt/cvsroot/KinoTest/build.prope Sticky Tag: (none) <- Sticky Tag は付いてない Sticky Date: (none) Sticky Options: (none) Existing Tags: TestTAG2 (revision: 1.5) TestTag1 (revision: 1.5)
タグでチェックアウトしてみる
> cvs update -r "TestTAG2" build.properties M build.properties
そのファイルのステータスを見る
> cvs status -v build.properties =================================================================== File: build.properties Status: Locally Modified Working revision: 1.5 Repository revision: 1.5 /opt/cvsroot/KinoTest/build.properties,v Sticky Tag: TestTAG2 (revision: 1.5) <- Sticky Tag が付いた Sticky Date: (none) Sticky Options: (none) Existing Tags: TestTAG2 (revision: 1.5) TestTag1 (revision: 1.5)
コミットしてみる
> cvs commit -m "" build.properties cvs server: sticky tag `TestTAG2' for file `build.properties' is not a branch cvs [server aborted]: correct above errors first!
コミットできなくなった
できるようにするために、ネバネバのタグを削除
> cvs update -A build.properties M build.properties
コミットできるようになった
この記事は
現在のアクセス:16119