svnで特定パス直下のファイルを消せなくする術

先日codereposのlang/perlをぶっとばしてしまったのですが、
それを解消すべく特定パス直下はdelできなくするHookをかいてみる。

svnのpre-commitのHookでは

REPOS="$1"
TXN="$2"
/path/to/svn_pre_commit_hook.pl "$TXN" "$REPOS" || exit 1

と、書いておく。

svn_pre_commit_hook.plはこんなん

#! /usr/bin/perl
use strict;
use warnings;
use SVN::SVNLook;

my $TXN = shift;
my $REPOS = shift;

my $svnlook = SVN::SVNLook->new(
    repo => $REPOS,
    cmd  => '/usr/bin/svnlook'
);

my ($adds, $dels, $mods) = $svnlook->fileschanged(transaction => $TXN);

my $abort_fg=0;
for my $path (@$dels) {
    if ($path =~ m{lang/perl/([^/]+)/$}) {
        $abort_fg=1;
    }
}

if ($abort_fg) {
    exit(1);
} else {
    exit;
}

id:yappoこんなんでどうすかね。
遅いのでここで失礼しまふ。

abort処理の所method分けてテストかかねば。。
だいたいこれで動く。

SVN::SVNLook使わなくてpre-commit時に

/usr/bin/svnlook changed -t "$TXN" "$REPOS"

したのをperl側にわたしてやってもそこで処理してもよかったりするかも。

YAMLとかに消されちゃまずいところ列挙してまとめて防いでもいいかも。
今日はここまで。

テストめんどくせーとおもったけど、$TXNめもっといてばしばし叩けばよかったかも。。

ねむひ

つか$abort_fgとかしなくてそこでexitすればいいか。。