*CVSのTIPS集
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の管理開始
あるディレクトリ以下のファイルを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内容とWorkディレクトリの差分を取る
 cvs -q -n update
実際に取得するには
 cvs update


**CVSのタグ付け
スナップショットを取るため、タグ付けを利用します。具体的には任意のディレクトリで
 cvs rtag V20AP2003082501 HOGE
 cvs rtag タグ名 モジュール名

**タグ付けされたモジュールのチェックアウト
これでよいはず
 cvs checkout -r V20AP2003082501 HOGE
 cvs checkout -r タグ名 モジュール名


**ファイル名の変更
一般には以下の2つの方法が利用されているようです。 
+remove してから add する。
+リポジトリの情報を直接書き換える。

before.java -> after.java としたいとします。
***remove してから add する。
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 Updateの結果
 cvs -q -n update
の結果で
 U hoge.txt <- サーバ側がUpdateされている(サーバが新しい)
 M hoge.txt <- 自分側が修正した(ローカルが新しい)


***CVSからファイルを削除する
ファイルのあるディレクトリに移動して
 #cvs remove -f ファイル名
でOK.

***CVSでディレクトリを削除する
中のすべてのファイルをremoveして、消したいディレクトリと同じディレクトリに移動して
 #cvs update -P
とする

***ローカルリポジトリと、CVSサーバの差分を確認する。
 cvs -q -n update   <- -q: 詳細を表示しない  -n: 実行しない

***ローカルのリポジトリに、CVSサーバの内容を反映させる。
 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

コミットできるようになった


#navi(CVS)

SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS