Top / CVS / TIPS集

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つの方法が利用されているようです。

  1. remove してから add する。
  2. リポジトリの情報を直接書き換える。

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

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


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / CVS / TIPS集

現在のアクセス:16112


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