#contents #br [[CVS/pcl-cvs]] * サブページ [#oa166df5] - [[CVS/pcl-cvs]] * 初期作業 [#v16f8c04] 環境変数 CVSROOT を設定する。 例) CVSROOT=/home/user/cvsroot CVS リポジトリを初期化する cvs init これだけ。 * ディレクトリ追加時の注意 [#w77b0489] あるサーバ上の作業ディレクトリでディレクトリを新しく作って、add と commit が終わったとする。 次に別のサーバで、cvs update としても先ほど追加されたディレクトリは登場しない。 これは、 cvs update -d とすることで解決できる。 これ面倒だよな… * タグの削除 [#ybf02ad0] 間違ってタグを付けてしまったときは cvs tag -d <tag-name> とする。 ブランチ上で作業をしているときに間違ってタグを打ってしまったら、"-b"オプションをつけて、 cvs tag -b -d <tag-name> とする。 * add時に発生するエラー [#l15423d0] cvs add <filname> とすると、 cvs add: <filename> added independently by second party などとでて、addできなかったりすることがある。 他者が更新/追加してると言うことなので、いったんそのファイルを別の場所にでも待避させて、あらためて cvs updateして、現在の最新版をそこに生成させ、待避したファイルからこいつに上書きする。で、cvs commitすれば更新される。 * ブランチ生成 [#fbb6c7f2] 時々使う割にはすぐ忘れてしまうので、備忘録。 - 現時点(ブランチ作成時点)にタグを付ける。これが枝分かれポイントになる。 cvs tag BRANCH-POINT - ブランチ生成 cvs rtag -b -r BRANCH-POINT BRANCH-1 <modulename> これで、BRANCH-1 と言う系統が新しく生成される。枝分かれポイントから、BRANCH-1系統を派生させると言う指示。 - ブランチの開発作業 cvs co -r BRANCH-1 <modulename> commit作業は、トランク(主系統)と同じ - トランクへのマージ トランクの作業ディレクトリにいる状態で、 cvs update -j BRANCH-1 とすると、主系にマージされる。 - トランクからブランチへのマージ ブランチの作業ディレクトリにいる状態で、 cvs update -j BRANCH-1 -j HEAD HEADはトランクの最先端を指す。 マージ操作について上記二件は、最後にファイル名を指定すれば、そのようになる。 * pserver(リモートCVSサーバ)からのチェックアウト手順 [#w744c447] + ログイン + チェックアウトなどの操作 と言う手順になる。 ** ログイン [#vd8cb8f0] ここでは、curry上にあるリポジトリにログインする cvs -d :pserver:user@192.168.1.2:/home/user/cvsroot login パスワードを聞かれるので、UNIXユーザパスワードを入力。成功したらシェルのプロンプトに戻る ** チェックアウト [#m7bc2e71] cvs -d :pserver:user@192.168.1.2:/home/user/cvsroot co -r REL-4 webapps などとする。 -d でリポジトリをいちいち指定することを除けば、通常の利用方法と変わらない。 なお、パスワード情報は ~/.cvspassに保存される。 環境変数 CVSROOTにリポジトリの位置を指定しておけば、-d オプションは不要 * cvs updateした場合のステータス文字について [#p112a86e] cvs updateを実行したときに、各ファイルの先頭にある文字の意味です。 特に、Pが何のことだかわからなかったために書いた。 |先頭文字|意味|h |U|Update:更新されました(リポジトリに新しいのがあったので持ってきた)| |M|Modified:ローカルファイルが更新されてます| |P|Patched:更新されました(Updateと同じだけど、差分パッチだけを転送した場合にこうなるみたい。リモートリポジトリを使っているときに発現した)| |C|Conflict:他の更新と衝突が発生| |?|Unknown:リポジトリにないファイルですよ| |A|Added:cvs addまでされたけどCommitはされていない状態| |R|Removed:cvs removeされたけどCommitはまだの状態| * リモートのリポジトリにログインできない [#o87aeefc] pserverを用意しておいて、クライアント(FreeBSD)から接続。 cvs -d :pserver:kuma@192.168.0.10:/home/cvsroot login CVS password: /home/cvsroot: no such repository pserver側では、 mkdir /home/cvsroot chmod a+w /home/cvsroot cvs -d /home/cvsroot init として準備はできていると思うんだけど… また、'''/etc/inetd.conf'''には次のように指定して、'''inetd'''は再起動済み。 cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver ここの'''--allow-root'''の指定ディレクトリが間違ってるとダメらしいけど、今回はあってる。 どうやら、パーミッションの問題だったようで、kumaのホームディレクトリ以下にcvsrootを作成して再度やってみたら解消した。 でも、/home/cvsrootにも書き込み権限はしっかりつけたんだけどなあ…