Perl の Subversion プリコミット フックからコミットされたファイルにアクセスするにはどうすればよいですか?
-
18-09-2019 - |
質問
次のことを行う必要があります。
Perlでプリコミットフックを書く
フックは、コミットされているすべてのファイルにテキストが存在するかどうかをチェックし、そのテキストが見つからない場合は失敗します。
基本的に、コミットされるファイルを読み取る 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
一部のテンプレートのリポジトリのサブディレクトリと フックスクリプト そして 提供されたフック スクリプト.
所属していません StackOverflow