よく使う
更新
cd 作業ディレクトリ cvs update -d -P
-
オプションの意味
--d デイレクトリを作成- P 空ディレクトリは削除
チェックアウト(別名)
たとえばCVS_REPO/hoge_projを/hoge/work/にチェックアウトしたいなら
cd /hoge/work
してから以下のコマンド
cvs co -d "hoge" -P -A "hoge_proj"
/hoge/work/hogeディレクトリを作ってそこにチェックアウトされる
-
オプションの意味
- d デイレクトリを作成
- P 空ディレクトリは削除
- A スティッキータグを削除
レポジトリのトップレベルよりも深い階層のプロジェクトの場合
たとえばCVS_REPO/hoge/fuga_projを/hoge/work/にチェックアウトしたいなら
cd /hoge/work
してから以下のコマンド
cvs co -d "fuga" -P -A "hoge/fuga_proj"
/hoge/work/fugaディレクトリを作ってそこにチェックアウトされる
チェックアウト(タグ指定)
チェックアウトしたいディレクトリに移動する。
hogeプロジェクトのHOGEタグをhoge_dirにチェックアウト。
cvs co -r HOGE -d "hoge_dir" "hoge"
タグ打ち
タグを打ちたいディレクトリに移動
cvs -q tag リリース名
タグの移動
cvs -q tag -F リリース名
ファイルを削除したくなった
実際のファイルを削除してからCVS上で削除。
rm hoge cvs rm hoge
その後コミットすること
cvs ci hoge
実際にはこっちのほうが楽
cvs remove -f hoge
-
オプションの意味
--f 削除する前にファイルを消去
ADDしたファイルを削除したくなった
通常の削除と同じ
ディレクトリを削除したくなった
CVSは使用上、リポジトリからディレクトリを削除できない。
作業ディレクトリのディレクトリを削除したいときは、
そのディレクトリ内のファイルをすべてcvs削除しておけば、
次回更新時にディレクトリを削除してくれる。
cvs remove -fR ディレクトリ名
-
オプションの意味
--f 削除する前にファイルを消去- R ディレクトリ内のファイルを再帰的に削除する
最後に、以下をしたほうがいいかも。
cvs delete hoge_dir
作業領域の削除
作業領域のひとつ上の階層で
cvs release -d hoge
確認プロンプトがでるのでyを押下する
hogeはディレクトリ名
チェック系
比較
cvs diff ファイル
この場合、ローカルのファイルを修正してなければ、最新に変更があっても
差異は表示されない。
最新と比較したい場合は
cvs diff -r HEAD ファイル
とする
特定のバージョンとの比較
1.1 から 1.2への変更点を知りたい。
cvs diff -r 1.1 -r 1.2 ファイル
特定のタグとの変更点をチェックしたい
cvs -n update -r タグ名
ブランチしたファイルとの変更点をチェックしたい
これは当該ブランチの最新版との比較であり、本流の最新との比較ではないので注意。
cd branch cvs diff -u -r HEAD hoge.txt
本流との比較をしたい場合は以下。
cd branch cvs diff -u -Dnow hoge.txt
状況を把握
cvs -n update
こっちのほうがいいらしい
cvs -f -n update -d -P
-
オプションの意味
- n ディスクに書き込まない
- f 強制的に最新
- d ディレクトリを構築
- P 空ディレクトリは削除
これでもいいかも。かなり冗長だけど。
cvs diff .
リリースタグ一覧
タグを見たいディレクトリに移動して
cvs log . 2>&1 |grep release*|sort|uniq|more
※もっといい方法ないかな
やり直し系
変更の取り消し
cvs update -C -l ファイル名
-
オプションの意味
--C 手元で修正されたファイルをリポジトリの無修正のもので上書きします- l 再帰処理を禁止。ローカルのみ
削除したファイルを復活したくなった
cvs removeしたファイルの復活方法。
hogeファイルを復活したい場合。コミット前のみ有効。
cvs add hoge
コミットしてしまった場合は、一つ前のバージョンをチェックアウトし、それを新規にaddするしかない。
特定のリビジョンでローカルファイルを上書きする
cvs update -p -r リビジョン ファイル > ファイル
-
オプションの意味
--p 標準出力に出力する- r リビジョン番号(タグでもOK)
ヘッドから最新
cvs update -C -d -P "hoge"
-
オプションの意味
--C 手元で修正されたファイルをリポジトリの無修正のもので上書きします。- d リポジトリに存在し、作業ディレクトリに無いディレクトリを作成します。
- P 空になったディレクトリを削除 (prune) します。
以下の方がらくかも
cd モジュールディレクトリ cvs update -C -d -P
コマンドライン上でのCVS置換
cvs update -C -d -P "プロジェクト名"
-
オプションの意味
--C 手元で修正されたファイルをリポジトリの無修正のもので上書きします。- d リポジトリに存在し、作業ディレクトリに無いディレクトリを作成します。
- P 空になったディレクトリを削除 (prune) します。
ブランチ系
ブランチ
tag系
ブランチしたいディレクトリに移動して
cvs -q tag -b タグ名
rtag系(使いづらい)
-
hogeプロジェクトに対してHOGE_BRANCHを切る
cvs rtag -b HOGE_BRANCH "hoge"
タグからブランチを切る。
hoge_pプロジェクトのhoge_tタグからhobe_bブランチを切る。
cvs rtag -b -r hoge_t hobe_b hoge_p
本流の変更をブランチに取り込む
hoge(ブランチ)のディレクトリに入る
cvs update -d -P -j HEAD
-
オプションの意味
- d デイレクトリを作成
- P 空ディレクトリは削除
ブランチを本流へマージ
j branch オプションが1つだけだと、枝の分岐点と枝の最新リビジョン間の違いを (あなたの作業コピーに) マージします。
cvs update -d -P -j ブランチ名
-
オプションの意味
- d リポジトリに存在し、作業ディレクトリにないディレクトリを作成する
-
P 空のディレクトリを削除する
ただし、この方法は最初の一回だけにしたほうが良い。マージを繰り返す場合は以下。
cvs update -j LAST_TAG -j HOGE_BTAG hoge.txt
チェックアウト(ブランチ)
hogeプロジェクトのHOGE_BRANCHをhogeworkにチェックアウト
cvs co -r HOGE_BRANCH -d hogework "hoge"
たまに
インポート
tmp_projectディレクトリ以下ををhoge_projectとして登録したい場合
cd tmp_project cvs import -m "" "hoge_project" hoge fuga -m "" : メッセージ "hoge_project" :リポジトリパス(どこにこのモジュールを格納するか) hoge: ベンダータグ名(モジュール作成者の識別子となる) fuga:リリースタグ名(外部向けのリリース)
エクスポート
その1。チェックアウトと基本的に同じ。
coがexportになっただけ。
cvs export -d hogework "hoge"
その2。ブランチからエクスポート。
cvs export -r HOGE_BRANCH -d hogework "hoge"
その3.最新のリポジトリ"hoge"をCVSディレクトリを外してコピーしたい日付を未来の日付にする
cvs export -D "2010-07-07" -d 出力ディレクトリ "hoge"
バイナリで登録されてるのかどうかをチェックしたい
cvs status で表示される「Sticky Option」に「-kb」があればバイナリとして登録されている
cvs status hoge.jar =================================================================== File: hoge.jar Status: Up-to-date Working revision: 1.1.1.1 Wed Mar 29 08:38:59 2006 Repository revision: 1.1.1.1 /home/hoge/CVS/hoge Sticky Tag: (none) Sticky Date: (none) Sticky Options: -kb
アスキーで登録したファイルをバイナリに変更したい
下記は、ディレクトリに対しても有効(hoge.binをディレクトリに置き換える)
cd 作業ディレクトリ cvs admin -kb hoge.bin cvs update -A hoge.bin cp src-hoge.bin hoge.bin # 壊れてない元ファイルをコピー cvs commit -m "reset -kb flag"
-
オプションの意味
- A スティッキータグを削除
バイナリの拡張子を登録する
cd /tmp cvs co CVSROOT vi cvswrappers *.gif -k 'b' *.jpg -k 'b' *.jpeg -k 'b' *.png -k 'b' *.ico -k 'b' *.jar -k 'b' *.idx -k 'b' cvs commit cvswrappers
ディレクトリをまるごと追加する
ひとつづつ追加するしかないらしい
もしかしたらcvs importでやる?
その他
コマンドを試す
よくわからないコマンドを試すときに-nすれば安心かも
cvs -n hogehoge
競合時の手動マージの方法
<<<<<<< hoge.jsp ABC ======= abc >>>>>>> 1.13.2.4
この場合、==== を境に上がローカルの修正、下がマージもと果の修正になる。
どちらを採用するかを手動で決める。
.#ファイルについて
updateすると勝手に「.#ファイル名」というファイルが作られるがこれは、CVSがつくるバックアップファイル。
コミットやブランチなどコマンドが失敗する
ブランチを切ろうとすると、以下のようなエラーが出る。
$ cvs rtag -b dev_searchtop_from_release20060712 "web/ver_06_04s" cvs rtag: [10:52:58] waiting for tech's lock in /home/tech/CVS/web/ver_06_04s/img/bg
-
原因
なぜか、リポジトリ内に、ロックファイルがあった為。
#で始まるファイル。
-対処
#で始まるファイルがロックファイルなのでこれを削除する。
CVSディレクトリを削除したい
cd 作業ディレクトリ find . -type d -name 'CVS'|xargs rm -rf
タグについて
- タグは、ブランチごとにあるのではなく、すべてのブランチに対してグローバルである
- したがって、全てのブランチを通してユニークになるように注意する