指定ディレクトリ以下のファイルを削除

irbでサクサク作業

これぐらいのことならirbで入力したほうが簡単。

# 現在のディレクトリ以下のSubversionデータ(.svnディレクトリ)を削除.
require 'fileutils'
FileUtils.rm_r( Dir.glob( '**/.svn' ), {:force=>true} )

ワンライナー

これをワンライナーにすると、以下のようになる。

ruby -e "require 'fileutils'; FileUtils.rm_r( Dir.glob('**/.svn'), {:force=>true} );"

ワンライナーにしておくと、バッチファイルなどにコピペすると、そのバッチファイル1つを移動して(ダブルクリックなどで)実行できるので、超便利になります。

Windowsのバッチコマンド化

たとえば、c:\binなどというディレクトリを作り、そこにパスを通して、以下のコマンドをrm_svn.batとして保存しておくと、便利。

rem === 現在のディレクトリ以下の.svnディレクトリを削除 ===
ruby -e "require 'fileutils'; FileUtils.rm_r( Dir.glob('**/.svn'), {:force=>true} );"

これで、どこにいていも、"> rm_svn"だけで実行できます。

参考書籍

Rubyレシピブック 第2版 268の技

Rubyレシピブック 第2版 268の技

Subversionではエクスポート機能があります(追記:2008-06-06)

TortoiseSVNにはエクスポートという機能があって、これを使うと、現在のSVN管理下にある作業ファイルを.svnを抜いて、どこかにコピーできるようです。

この解決法の方がシンプルな方もいらっしゃると思うので、このエントリに追記しておきます。