Perl の Subversion プリコミット フックからコミットされたファイルにアクセスするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1689052

  •  18-09-2019
  •  | 
  •  

質問

次のことを行う必要があります。

  1. Perlでプリコミットフックを書く

  2. フックは、コミットされているすべてのファイルにテキストが存在するかどうかをチェックし、そのテキストが見つからない場合は失敗します。

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

私は本当に最小限のコードでエレガントなソリューションを探しています。

ノート:フックは使用する必要があります svnlook またはファイルを見つけるための他のより良い方法。

役に立ちましたか?

解決

フックを事前にコミットします:

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

    }
  }
}

他のヒント

すでに基礎を理解しているようです。

  • コミットされているすべてのファイルのリストを取得する
  • それぞれを順番に検索して特定のテキストを探します
  • テキストが見つかった場合はコミットを拒否する

コミット前フックの作成に関する情報は、 マニュアル.

変更するのはそれほど難しくないはずです Python でのこの例 やりたいことをするために。も参照してください。 hooks 一部のテンプレートのリポジトリのサブディレクトリと フックスクリプト そして 提供されたフック スクリプト.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top