[2010-11-20 20:35:18]
>>>[svn]
cf.svn - Strange problem with Subversion - "File already exists" when trying to recreate a directory that USED to be in my repository - Stack Overflow
svn: Commit failed (details follow): svn: File already exists: filesystem '/path/to/repo/db', transaction '数字-r', path '/working/directory/dir'
こんなんでました.
ディレクトリを消したあとに同名のディレクトリを持ってきたりして,なんせ同じ名前のディレクトリがすでにリポジトリ上にはありまっせ.みたいなエラーだと思います
解決法
dirというディレクトリをaddしてcommitしたらこのエラーになったとします.
- dirの退避
/working/directory% mv dir dir-
こんな感じにどける
- updateしてリポジトリにあるdirを復元
/working/directory% svn update
- svnでdirを削除
/working/directory% svn rm dir
- 退避したディレクトリから.svnディレクトリを削除
zshならこれで消える
/working/directory% echo ./**/.svn # 何が消されるか確認 /working/directory% rm -Rf !!:$ # !!:$ は直前のコマンドの最後の引数
bashならfindと組み合わせるのかな?(これは未確認)
/working/directory$ find -name '.svn' -exec rm -rf {} \;
- dirを戻す
/working/directory% mv dir- dir
- svnにコミットする
/working/directory% svn add dir /working/directory% svn commit -m 'recover dir'
こんなもんでしょうか