2009-11-06 20 views
5

私は、次の操作を行う必要がありますPerlのSubversionプリコミットフックからコミットされたファイルにアクセスするにはどうしたらいいですか?

  1. フックは、いくつかのテキストの存在のために尽力されているすべてのファイルをチェックし、そのテキストが

    が見つからない場合は失敗するのPerl

    に事前コミットフックを書きます

基本的には、コミットするファイルを読み取るPerlフックの例が必要です。

私は実際にコードの最小量でいくつかのエレガントなソリューションを探しています。

注: フックはsvnlookまたはその他のファイル検索方法を使用する必要があります。

答えて

11

事前にコミットフック:

my $repos = shift; 
my $txn = shift; 

foreach my $line (`$svnlook changed -t $txn "$repos"`) 
{ 
    chomp($line); 
    if ($line !~ /^([AUD]).\s\s(.+)$/) 
    { 
    print STDERR "Can't parse [$line].\n"; 
    exit(1); 
    } 
    else 
    { 
    my $action = $1; 
    my $file = $2; 
    chomp($file); 
    #If path has trailing slash, then it is a folder and we want to skip folders 
    if($file =~ /\/$/) 
    { 
    next; 
    } 
    my $fileContent = `$svnlook cat -t $txn "$repos" "$file"`; 
    if ($action =~ /[AU]/) 
    { 
     my @lines = split(/\n/, $fileContent); 
     #Check for whatever you need in this file's content 

    } 
    } 
} 
0

this example in Pythonを変更するのは難しいことではありません。いくつかのテンプレートについては、リポジトリのサブディレクトリも参照してください。hook scriptscontributed hook scripts

+0

問題ありません@Alex。他人の投稿を編集することはStackoverflowのやり方であり、サイトを助ける。 –

0

あなたは土台がすでに考え出し持っているようですね:テキストが発見された場合

  • をコミットされているすべてのファイルの

    • GETリストはテキスト
    • 特定のための順番でそれらのそれぞれを検索、拒否コミット

    ​​には、事前コミットフックの作成に関する情報があります。

  • 関連する問題