cvs at ki.nu | commit | import | start w/o import | branch | cvs2 @ki.nu

CVS commit

commit する前の注意

commit する時には、二つ注意することがある。

である。ここでは、このうち、後の方を確める方法を整理する。 前の方は、(cvs の使い方には関係ない話なので) ここでの範囲外とする。

cvs commit する時に、(特に持出してから長い間時間が経っている時には) 他の人が同じものを持出して変更して(commit して) いないか 注意が必要である。 で、そういう時に、cvs -n update または cvs update をまずやって見る。 その時の出力(表示)の見方と対処方法をまとめて見た。

cvs update

cvs update は Repository の変更を手元に反映する。
保管庫 → 手元
である。いまやろうとしている commit とは反対だが、 これをまず先にやって見て確める。

cvs -n update と -n を付ければ、実際には反映せずに、 「もし反映しようとしたらどうなるか」を表示する。

実際には引数を指定すると次のようなやり方がある。

操作意味
cvs -n updateいまいる directory 以下の全てを調べる
cvs    update 全てを更新する(保管庫→手元)
cvs -n update directory/filedirectory/file だけを調べる
cvs    update directory/filedirectory/file だけ更新
この結果
P  Patch             変更
C  Conflict          競合(問題)
U  Update            更新(新規)
M  locally Modified  手元で変更している
N  New               新規(import の場合)
等の表示が出る。以下にもう少し説明をして見る。

Modified

他の人が何も変更していない
pts/1:makoto@ns1  7:32:56/021122(/tmp/jeedosaquin)> cvs -n update
cvs server: Updating .
M config.ph
この M は 「locally Modified, 手元で変更している」の意味である。 これなら commit しても大丈夫。

Merging

他の人が変更したが自動修正可
cvs -n update Makefile
....
RCS file: /cvs/hoge/foo/test2/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
Merging differences between 1.1 and 1.2 into Makefile
M Makefile
cvs update Makefile
すれば、自動的に変更してくれる。

Conflict

他の人が変更して自動修正不可
cvs -n update Makefile
....
RCS file: /cvs/hoge/foo/test2/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
Merging differences between 1.1 and 1.2 into Makefile
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in Makefile
C Makefile
この場合は、中が次のようになっているので、この部分を手で直す。
<<<<<<< Makefile
aLL     = test21 test22 test23 test24
=======
ALL     = test21 test22 test23 test24 test25
>>>>>>> 1.2
Last Update
19:53:06 03/12/08
claudebot
Apache/2.0.65 (Unix) mod_ssl/2.0.65 OpenSSL/1.0.1g DAV/2 PHP/5.4.26
Count.cgi
(since 2002/12/05)