argius note

プログラミング関連

Subversiveのsvn:ignoreの罠

SVNCVSに比べて便利な機能も多いとは思います。でも、しくみが複雑になった分、罠に嵌ることも多いような気がします。
以下の話は、私が今日、罠に嵌ったときの記録です。


プロジェクトのルートにSVNに登録したくないファイルがあるので、svn:ignoreにそれらのファイルを追加しました。そして、それをコミットしようとすると、svn:ignoreはCVSと違って通常ファイル扱いではないみたいで、同期リストに表示されず、プロジェクトルート自体が差分として表示されます。svn:ignoreはプロパティのひとつなので、たぶん、これがプロパティを示しているのでしょう。
で、コミットしようとすると、"out of date"エラーになりました。conflictにならないので、仕方なくオーバーライドおよび更新を実行してみたら、登録したくないファイルたちが消えてしまった。なんということでしょう!
「それでもローカルヒストリーなら...ローカルヒストリーならきっと何とかしてくれる」
ローカルヒストリーから復元を試みます。...先ほど消してしまったファイルはありませんでした。ファイルを保存したときなどにはローカルヒストリーに履歴が残りますが、この操作で削除したファイルは残らないようです。*1
svn:ignoreは更新できました。でも、あのファイルたちはもう帰ってきません。


最後に。書いていて気づいたんですが、"オーバーライドおよびコミット"が出来たような気がします。試してみたらできました。

*1:知っていたけど、取り乱していたので。