記載日:2009/09/16
Mac OS 10.5.6 ターミナル 2.0.1 Subversion 1.5.5

1.Subversion 管理情報

Subversion ではリポジトリに格納されたファイルをローカルPC等のディレクトリにチェックアウトして作業を行います。そのディレクトリには、実際のファイルに加え ".svn" という名前のディレクトリが作成された状態となっています。この ".svn" ディレクトリは管理ディレクトリと呼ばれ、ここにはそのディレクトリがどのリポジトリの管理下であるか、差分を確認するために必要な情報など、リポジトリを管理/運用するための情報が収められています。 管理ディレクトリは各ディレクトリ階層毎に作成されます。

2.管理ディレクトリ(.svn)の削除

通常".svn" ディレクトリを消すことはありませんが、あるリポジトリで管理していたソースをディレクトリ毎別のリポジトリで管理されたディレクトリ内へコピーしたい場合や、Subversion 管理下のディレクトリを単なる(管理下に置かれていない)ディレクトリとして扱いたい場合には、".svn" ディレクトリの削除も1つの手段となります。

次に示すコマンドで、あるディレクトリ配下のすべての ".svn" ディレクトリを削除(サブフォルダも再帰的に削除)することができます。".svn" を削除したいディレクトリへ移動してコマンドを実行します。

$ find . -name ".svn" -type d -exec echo delete {} ";" -exec rm -rf {} ";"
delete ./.settings/.svn
find: ./.settings/.svn: No such file or directory
delete ./.svn
find: ./.svn: No such file or directory
delete ./Documents/.svn
find: ./Documents/.svn: No such file or directory
delete ./encoded/.svn
find: ./encoded/.svn: No such file or directory
$

コマンド実行順序の関係からか「No such file or directory」と表示されてしまいますが問題なく削除されています。また「find . -name ".svn" -type d -exec rm -rf {} ";"」 だけでも問題ありませんが、間の 「-exec echo ・・・」 を入れておくことでどこにある ".svn" フォルダを削除しようとしたか明確になるので便利だと思います。

参考文献