スタッフブログ
こんにちわ。なおとです。
今日はいつもよりも開発よりの話題をしたいと思います。 それは、Subversionからチェックアウトしたディレクトリ以下から、.svnディレクトリを削除する方法です。
.svnディレクトリには、バージョン管理のためのメタデータが格納されていて、プログラムそのものの動作には影響しないものです。 これを綺麗に消してしまう方法を検索してみると、LinuxなどのUNIX系の環境では、シェルからワンライナー1発で解決する方法が見つかります。
それでまたくOKなのですが、Windowsユーザーでも使えるようなPerlスクリプトを書いてみました。 きっと誰が書いても同じようなことになると思います。
こういった短いスクリプトを「書き捨て」にできるのが、できるエンジニアと言われる条件のひとつのようです。 しかし私は書き捨てにせず、こうしてブログのネタに再利用しています^^;;。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Path;
# rmtree .svn dirs
# 検査したいディレクトリの親のpath
use constant BASE_DIR => '/var/www/';
# 検査したいディレクトリ名のリスト
use constant TARGET_DIRS => ('html', 'xoops_trust_path');
for my $dir (TARGET_DIRS) {
find(\&del_svn, BASE_DIR . $dir);
}
sub del_svn {
rmtree($_, 1, 1) if (-d $_ and $_ eq '.svn');
}