commit する時には、二つ注意することがある。
cvs commit する時に、(特に持出してから長い間時間が経っている時には) 他の人が同じものを持出して変更して(commit して) いないか 注意が必要である。 で、そういう時に、cvs -n update または cvs update をまずやって見る。 その時の出力(表示)の見方と対処方法をまとめて見た。
保管庫 → 手元である。いまやろうとしている commit とは反対だが、 これをまず先にやって見て確める。
cvs -n update と -n を付ければ、実際には反映せずに、 「もし反映しようとしたらどうなるか」を表示する。
実際には引数を指定すると次のようなやり方がある。
操作 | 意味 |
---|---|
cvs -n update | いまいる directory 以下の全てを調べる |
cvs update | 全てを更新する(保管庫→手元) |
cvs -n update directory/file | directory/file だけを調べる |
cvs update directory/file | directory/file だけ更新 |
P Patch 変更 C Conflict 競合(問題) U Update 更新(新規) M locally Modified 手元で変更している N New 新規(import の場合)等の表示が出る。以下にもう少し説明をして見る。
pts/1:makoto@ns1 7:32:56/021122(/tmp/jeedosaquin)> cvs -n update cvs server: Updating . M config.phこの M は 「locally Modified, 手元で変更している」の意味である。 これなら commit しても大丈夫。
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 Makefilecvs update Makefile
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.2Last Update
19:53:06 03/12/08 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) Apache/2.4.62 (Unix) OpenSSL/3.0.12 (since 2002/12/05)