今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

cvs remove の confilict を復旧する方法

2台のパソコンで作業していて、片方でファイルを更新して commit し、他方でファイルを(実は余計なファイルだったので)削除した。そしてその削除を commit しようとしたら、cvs がエラーを通知してきた。そのときのメッセージ。

$ cvs ci -m "hoge" filename
  :
cvs commit: Up-to-date check failed for `filename'
cvs [commit aborted]: correct above errors first!

リポジトリから取り出そうとしてみた。

$ cvs update filename
cvs update: conflict: removed filename was modified by second party
C filename

conflict があると怒られた。
cvs add でファイルを復活させてから、もう一度削除しなおしてみた。

$ cvs add filename
cvs add: filename, version 1.1, resurrected
U filename

$ cvs remove filename
cvs remove: scheduling `filename' for removal
cvs remove: use 'cvs commit' to remove this file permanently

それから、commit してみた。(考えてみれば、同じことを繰り返してるだけなので同じ状況に陥るだけ)

$ cvs ci -m "hoge" filename
  :
cvs commit: Up-to-date check failed for `filename'
cvs [commit aborted]: correct above errors first!

もう一度 cvs add でファイルを復活させてから、cvs update で最新の状態に戻す。

$ cvs add filename
cvs add: filename, version 1.1, resurrected
U filename

$ cvs update filename
P filename

filename を削除して、cvs remove し、cvs commit する。

$ cvs remove filename
cvs remove: scheduling `filename' for removal
cvs remove: use 'cvs commit' to remove this file permanently

$ cvs ci -m "hoge" filename

うまくいった。