1. ホーム

CVS共通コマンド

2022-03-01 22:02:51

CVS共通操作Howto

著者 廖 裕磊

最終更新日 2003/06

コンテンツ一覧


<テーブル プロジェクトをサーバーにインポートする フォーマット cvs import [-m "説明"]プロジェクト名 ベンダー名 タグ -mquot;説明" インポート操作の説明情報を指定します。m引数は、実際には、説明情報を必要とするすべてのコマンドのための説明情報を指定するパブリック引数です。このパラメータを指定しないと、cvs は自動的にメモ帳プログラムを起動し、説明情報を入力するように要求します。 参考にしてください。 cvs操作の説明情報の指定方法 プロジェクト名 cvs サーバは、この名前に基づいて cvs サーバ上にディレクトリを作成し、インポートされたすべてのファイルを保持します。ですから、mydoc/project のようなプロジェクト名を使うと、mydoc とそのサブディレクトリ project の2つのディレクトリが作成されることになります。 メーカー名 プロジェクトベンダーのマークアップです。例えば、nesやmicrosoftなど。 マーカ インポートしたプロジェクトの初期マーカーを指定します。通常、initまたはstartは、プロジェクトの開始を示すために使用されます。 説明 現在のディレクトリにあるすべてのファイル (サブディレクトリを含む) を cvs サーバ上で指定されたディレクトリにインポートします (ディレクトリ名はプロジェクト名と同じです)。各プロジェクトの最初の動作は、cvs サーバにインポートすることであり、同じプロジェクトでこれを再度行う必要はありません。 動作例です。

chdir myproject 



cvs import -m "インポートプロジェクト" myproject nes init

メッセージを出力します。 N myproject/hello.c 



hello.cがインポートされ、プロジェクト名がmyprojectになりました。







このインポートによって生じるコンフリクトはありません 



<スパン このインポートによって作成されたコンフリクトはありません

<テーブル サーバーからドキュメントを更新 フォーマット cvs アップデート [-P] [-d] 



略称:cvs up -P 空のディレクトリを削除する -d サブディレクトリ内のすべてのファイルを更新します。他の誰かがプロジェクトに新しいディレクトリを追加した場合、これらの新しいディレクトリとその中のファイルをローカルに更新するために、-d 引数を追加する必要があります。 操作の例です。

cvs update -d

説明 cvs サーバーからローカルにファイルを更新します。VSS からの CheckOut コマンドと同じように機能します。 メッセージを出力します。

cvs サーバーです。を更新しています。



M shutdown.c 







ファイル名の前には、次のような文字があり、それぞれ異なる意味を持ちます。

<テーブル U ファイル全体がサーバーからローカルに更新されます(ファイルがバイナリまたはローカルに存在しないファイルの場合)。 P ファイルの一部がサーバーからローカルに更新されます (ファイルがテキストファイルの場合、CVS はサーバーにあるファイルと異なるローカルファイルの部分のみを転送し、帯域幅の使用量を削減します)。 A このファイルは現在ローカルディレクトリにのみ存在し、cvs add コマンドを使用して cvs サーバにファイルを追加しましたが、cvs commit コマンドを使用してその追加をまだ確認していません。 R これはローカルにもう存在しないファイルで、 cvs remove コマンドを使って cvs サーバから削除しましたが、 cvs commit コマンドを使ってまだ削除を確定していないものです。 M ローカルファイルが変更されたが、まだ cvs commit コマンドで cvs サーバにコミットされていない、 あるいはローカルファイルが変更され、cvs サーバ上のファイルが他の誰かによって変更され、 その変更が正常にマージされた、のどちらかでしょう。 参考にしてください。ローカルファイルとcvsサーバー上のファイルを比較する方法 C あなたのローカルファイルが変更され、cvs サーバ上のファイルは他の誰かによって変更されましたが、現在あなたの変更は衝突しており、自動的にマージすることはできません。 参考 修正コンフリクトの解消方法 ? このファイルはローカルにのみ存在し、cvs add コマンドで cvs サーバに追加されませんでした。

<テーブル サーバーへの変更のコミット フォーマット cvs commit [-m "description"]を実行します。 



略称:cvs ci -mquot;説明" 変更した操作の説明情報を指定します。 動作例です。

cvs commit -m "テスト関数を追加しました"。

説明 ローカルで変更されたファイルを cvs サーバにコミットすることは、VSS の CheckIn 操作と同じ機能です。変更されたファイルをコミットするだけでなく、cvs add と cvs remove の操作では、確認のために cvs commit コマンドを必要とします。 メッセージを出力します。 cvsコミット を検証しています。 



shutdown.cでチェックする。 



/cvsroot/shutdown/shutdown.c,v <-- shutdown.c 




(コミットファイル)




新リビジョン:1.3、旧リビジョン:1.2 



(新リビジョン1.3、旧リビジョン1.2。このリビジョン番号は、cvs サーバー上のファイルリビジョン記録であり、プロジェクトのバージョン番号とは関係ありません)




完了







問題がある場合は、次のような出力メッセージが表示されることがあります。



cvs サーバーです。up-to-date check failed for `hello.c'. 



cvs [server aborted]: まず上記のエラーを訂正してください!




上記2行のメッセージは、 "hello.c" ファイルの更新チェックに失敗したので、上記のエラーを先に修正するよう要求している、という意味です。







通常、この問題の最も一般的な理由は、あなたが修正したファイルが他の誰かによって修正され、cvs サーバーにコミットされたことです。 をご覧ください。ローカルファイルとcvsサーバー上のファイルを比較する方法



この問題を修正する唯一の方法は、まずサーバーからローカルに変更されたファイルを cvs update コマンドで更新することです。競合がある場合は、競合を解決した後、再度 cvs commit コマンドを実行してください。 参考 変更の競合を解決する方法

<テーブル サーバーへの新しいファイルやディレクトリの追加 フォーマット cvs add [-m "説明"] ファイル名 -mquot;説明" 変更した操作の説明情報を指定します。 ファイル名 ディレクトリを追加する場合は、ディレクトリ名として指定します。 cvs add コマンドはワイルドカードをサポートしているので、ワイルドカードを使用して複数のファイルを一度に追加することができます。 動作例です。

cvs add -m "テスト.cファイルを追加します" test.c 



cvs add -m "複数の.cファイルを追加する" *.c

説明 cvs サーバーに新しいファイルやディレクトリを追加します。追加が完了したら、cvs commit コマンドで追加を確認します。 メッセージを出力します。 cvs server: ファイル `test.c' を追加するためにスケジューリングしています。



(ファイル追加操作のスケジューリング) 



cvs サーバー: 'cvs commit' を使ってこのファイルを恒久的に追加してください。



(実際にコミット操作を行うには cvs commit を使用します) 







ディレクトリを追加する場合は、以下の手順で行います。 



<スパン cvs add mydir



? mydir/ProjectDoc.cpp



(? 記号は、ファイルが cvs add コマンドで cvs サーバに追加されていないことを意味します) 



ディレクトリ /cvsroot/myproject/mydir がリポジトリに追加されました。 



(プロジェクトにディレクトリmydirが追加されました。) 



chdir mydir



cvs add ProjectDoc.cpp 



cvs server: ファイル `ProjectDoc.cpp' を追加するためにスケジューリングしています。 



cvs サーバー: 'cvs commit' を使ってこのファイルを恒久的に追加します。




cvsコミット



<スパン cvsコミットします。を検証しています。ログメッセージが変更されないか、指定されないか 



RCSファイルです。/cvsroot/myproject/mydir/ProjectDoc.cpp,v 



完了 



ProjectDoc.cppで確認中。 



/cvsroot/myproject/mydir/ProjectDoc.cpp,v <-- ProjectDoc.cpp 



初期リビジョン:1.1 



完了 



追加するファイルが複数ある場合は、ワイルドカードを使用することができます。すべての追加が終わってから cvs commit でコミットする方が効率的です。

<テーブル プロジェクトからのファイル削除 フォーマット cvs remove [ファイル名]を削除します。 ファイル名 削除するファイルの名前です。このパラメータが省略された場合、cvs は自動的にローカルに存在しないファイルを見つけ、cvs サーバからそれらを削除します。 動作例です。

cvs remove test.c 



cvs remove *.c

説明 指定されたファイルを cvs サーバーから削除します。削除されるファイルは、まずローカルディレクトリから削除されるか、名前が変更されます。 メッセージを出力します。

cvs server: ファイル `test.c' はまだ作業ディレクトリにあります。 



cvsサーバ。1 ファイルが存在します; 最初に削除してください 



(ファイル "test.c" がまだローカルディレクトリにあるので、まずローカルファイルを削除してください) 







削除したいローカルファイルは、まず名前を変更するか別の場所に移動し、後で不要になったことが確認できたら削除することをお勧めします。これは cvs が削除された後のサーバ上のファイルを復元できないからです。 







ren test.c test.c.bak



cvs remove test.c



cvs server: `test.c' を削除するようにスケジューリングします。 



cvs server: 'cvs commit' を使ってこのファイルを永久に削除してください。




cvsコミット



test.cを削除する。 



/cvsroot/myproject/test.c,v <-- test.c 



新しいリビジョン:削除、以前のリビジョン:1.1 



完了




最後に、cvs commit コマンドを使用して、削除操作をコミットします。 







今実行した削除を取り消すには (cvs commit で削除をコミットする前に行う必要があります)、cvs add コマンドを使用します。 



cvs add test.c



U test.c 



cvs サーバー: test.c, バージョン 1.5, 復活 



(ファイル "test.c" resurrected) 







同じ効果を得るためのもう一つの方法。 



test.c test.c.bakにリネームします。 



cvs削除 



cvsコミット

<テーブル プロジェクトからディレクトリを削除する 説明 cvs はディレクトリの削除操作を提供しませんので、ディレクトリを削除する唯一の方法は、cvs サーバからそのディレクトリ内のすべてのファイルを削除することです。 動作例です。

chdir mydir 



delete *. *. 



cvs削除 



cvsコミット 



上記の操作により、mydir ディレクトリからすべてのファイルが削除され、mydir は空のディレクトリになります。その後、cvs update -P コマンドを使用して空のディレクトリを削除できます (しかし、それらはまだサーバ上にあり、-P 引数なしで cvs update -d コマンドを使用すると、ローカルに作成されます)。

<テーブル ファイルの移動または名前変更 動作例です。

test.c を new.c にリネームする。 



cvs remove test.c 



cvs add new.c 



cvs commit -m "ファイル test.c を new.c" にリネームしてください。

説明 ファイル名を変更するには、まずローカルファイルの名前を変更する必要があります。次に、サーバー上の古いファイルを削除し、新しいローカルファイルを追加し、最後に操作をコミットします。

<テーブル ディレクトリの移動または名前の変更 動作例です。

mkdir newdir 



chdir mydir 



を動かす *. * ... \Ίταμμα 



cvs削除 



chdir ... \新しいディレクトリ 



cvs add *. * 



cvs commit -m "ディレクトリmydirをnewdirにリネームします"。

説明 ディレクトリの名前を変更するのは、本当に面倒なことです。まず、新しいディレクトリを作成し、この新しいディレクトリにファイルを移動する必要があります。次に、古いディレクトリのファイルを cvs remove コマンドで削除し、新しいディレクトリのファイルを cvs add コマンドで追加します。最後に、cvs commit で変更をコミットします。

<テーブル アイテムの削除 動作例です。

plink user@host "rm -i -r /cvsroot/myproject"

説明

上記のコマンドは実際にサーバーにログインし、/cvsroot/myprojectディレクトリをrmコマンドで削除しています。 



警告 rmコマンドは非常に危険ですので、この方法を使ってプロジェクトを削除しないことを強くお勧めします。代わりに、CVS リポジトリの管理者に頼んで、不要なプロジェクトを削除してもらうようにしましょう。

plink は putty パッケージの一部で、次のサイトからダウンロードできます。 



http://www.chiark.greenend.org.uk/~sgtatham/putty/

<テーブル サーバー上の全アイテムをリストアップ 動作例です。

plink user@host "ls -lF /cvsroot/ | grep -v "CVSROOT""

説明

上記のコマンドは、サーバー上の全項目を一覧表示します。または、以下のスクリプトを使用します。

エコーオフ 



もし、! CVSROOT% == !終了 



for /f "tokens=2,3 delims=:" %%i in ("%CVSROOT%") do @plink %%i "ls -lkF %%j/ | grep -v "CVSROOT/ "".Ls %%j/ %%j/ %%i %%i %%i "ls -lkF %%j/ | grep -v %%i "CVSROOT/ "" 



:終了 



メッセージを出力します。 合計46 (合計46は総数ではありません)



drwxrwxrwx 4 cvs_daut cvs 512 May 6 16:48 atl-freebsd_diary/ 



drwxrwxrwx 3 cvs_daut cvs 512 5月5日 13:43 atl-msgplus2/ 



drwxrwxrwx 3 cvs_daut cvs 512 May 5 13:43 atl-nav2003/ 



drwxrwxrwx 4 cvs_daut cvs 512 May 5 13:43 atl-os/ 



drwxrwxrwx 9 cvs_daut cvs 512 May 9 04:52 case-ae/ 



drwxrwxrwx 2 cvs_daut cvs 512 5月7日 11:39 case-hlg/ 



drwxrwxrwx 4 cvs_daut cvs 512 May 8 02:55 case-sdae/ 



drwxrwxrwx 5 cvs_daut cvs 512 5月5日 13:44 case-wdae/ 



drwxrwxrwx 2 cvs_daut cvs 512 May 5 13:44 docs-MeetingRecord/ 



drwxrwxrwx 6 cvs_daut cvs 512 5月7日22:10 docs-devl_common/ 



drwxrwxrwx 3 cvs_daut cvs 512 May 9 09:25 docs-freebsd_diary/ 



....

<テーブル CVS情報を含まないプロジェクトディレクトリをエクスポートする フォーマット cvs export -D date -d destination directory プロジェクト名 -D日付 指定された日付以降のプロジェクトファイルをエクスポートします。もし-D nowなら、最新のファイルをエクスポートします。 -d 宛先 エクスポートされたファイルが格納されるディレクトリ。 プロジェクト名 エクスポートするプロジェクトの名前です。 動作例です。

cvs export -D now -d myproject_release myproject

説明 指定されたプロジェクトを cvs サーバーからエクスポートしますが、CVS 情報は含まれません。cvs export コマンドは、通常、ソースコードが一般に公開される前にファイルをエクスポートするために使用されます。CVS 情報には、ユーザー名、サーバーアドレスなどの情報が含まれているため、ソースコードのエンドユーザーには見えないようにする必要があります。 メッセージを出力します。

cvs exportです。myproject_release を更新中 



U myproject_release/test.c 



U myproject_release/hello.c




(2つのファイルがエクスポートされました)

<テーブル cvs操作の記述情報を指定する 動作例です。

cvs add -m "ファイル test.c" test.c を追加します。

説明 ほとんどの cvs コマンドは、操作の説明情報を指定するための -m 引数を受け付けます。m 引数が使用されない場合、cvs はメモ帳プログラムを起動し、 説明情報を入力するようにユーザに要求します。 



m引数を使用するのとは対照的に、メモ帳に複数行の説明情報を入力し、操作の詳細を記述することができます。CVS: で始まる行はメモ帳のウィンドウでは無視されます。

<テーブル ローカルファイルと cvs サーバー上のファイルを比較する フォーマット cvs diff [ファイル名]の場合 ファイル名 比較するファイルの名前です。このパラメータが省略された場合、cvs は現在のディレクトリにあるすべてのファイルを比較します。 動作例です。

cvs diff test.c

説明 ローカルファイルと cvs リポジトリに保存されたバージョンとの差分を比較します。 メッセージを出力します。

インデックス:test.c 



=================================================================== 



RCSファイルです。/cvsroot/test/test.c,v 



リビジョン1.1.1.1の取得 



diff -r1.1.1.1 test.c 



3c3 



< int main() 



--- 



> int main(int argc, char* argv[]) 



5c5,7 



< printf("Hello, world !\n"); 



--- 



> printf("Hello, world ! Come on, Baby !\n"); 



> printf("My god, you are pig!) 











上の出力で、接頭辞が < のものが cvs リポジトリにあるバージョンの内容、接頭辞が > のものがローカルファイルの内容を示しています。