zomです。まさかの連発投稿です。 職場では古き体制の名残からCVSでバージョン管理しているプロジェクトがいくつかあります。 やんごとなき事情でコマンドラインからCVSを操作しなくてはならないことになってきたので、コマンドをメモしておきます。
そのやんごとなき事情ですが、多くの人はEclipseからCVSのプラグインを使ってコミットとかチェックアウトとかもろもろしているのですが、自分の環境だけ、Eclipseを起動するとCVS管理から外れる(.CVSディレクトリが全て消失する)現象に見舞われてます。こうなるとコミットもできないし、最新のリビジョンの置換もできない。コミットしたいときにはいじったファイルを適当な場所に退避させて、一旦全ファイル削除して改めて再チェックアウトしてCVS管理下に置いて、いじったファイルを反映させて、コミット…と。非常に面倒な事になっています。しかもCVSは古き体制の名残ということもあって膨大な数のファイルのせいでチェックアウトにすごい時間がかかるのです…。
原因も特定できておらず、このEclipseでの現象を回避したいがために「じゃあコマンドでやったろうじゃないか」という感じになってます。そこで本題のよく使うコマンドをメモに至るわけです。というわけで簡単によく使うやつだけ…。
ファイルをリポジトリのものに置換。
cvs update -C filepath
ローカルで適当に弄ったファイルを元に戻したいときに。-Cオプションを付けることで強制的に最新リポジトリのものに置き換えるというコマンドになります。
コミット時。
cvs add -kkv "file path" cvs ci -m "comment" -l "file path" ["file path"]
cvs addは新規ファイルのコミット時のみ必要です。これをやることにCVS管理下に置くことになるようです。 -kkvは何のオプションだったかな…。あったほうが良かったはず…。 でcvs ciがコミットです。-mでコミットコメントが指定できて、-lで対象のファイルを指定できます。複数ファイルも同時に指定できます。
コミットログ。
cvs log filepath
コミットログが見れます。このままだと対象ファイルの全ログが表示されてしまうので歴史のあるファイルだとえらいことになります。そこで-dオプション。
cvs log -d ">YYYY-DD-MM" filepath
-dオプションと引数に">日付(YYYY-MM-DD形式)"を渡してあげることで日付より後のコミットログのみ見ることができます。 "YYYY-MM-DD<YYYY-MM-DD"とすれば範囲指定もできます。 自分の場合、上記のlogは下記のdiffコマンドとセットで使っています。
cvs diff -r revision -r revision filepath
cvs logでコミットしたリビジョンとその一個前のリビジョンを確認してdiffの引数に使い比較して、変更内容の確認、ってことをしてました。 ちなみに
cvs diff -r revision filepath
このようにリビジョンを1つだけの指定にすれば、そのリビジョンと現在のローカルの比較にもなります。 リビジョンを指定しない場合は最新のリビジョンとローカルの比較になるそうな。これが便利じゃね?
これだけ覚えてればとりあえず困ることもないかなー、と。(自分の場合) それにもうCVSを使う機会も減っていくはず…。たぶん。