Comment puis-je accéder au fichier commited à partir d'un Subversion pre-commit hook en Perl?
-
18-09-2019 - |
Question
Je dois faire ce qui suit:
-
Ecrire pre-commit hook en Perl
-
crochet doit vérifier tous les fichiers qui sont commis pour la présence d'un texte, et échouer si ce texte ne se trouve pas
Fondamentalement, je besoin d'un exemple de crochet Perl qui lit les fichiers commis.
Je cherche vraiment une solution élégante avec la moindre quantité de code.
Notes:
Crochet doit utiliser svnlook
ou d'une autre meilleure façon de trouver des fichiers.
La solution
crochet pre-commit:
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
}
}
}
Autres conseils
Il ne devrait pas être trop difficile à modifier cet exemple en Python pour faire ce que vous voulez. Voir aussi le sous-répertoire hooks
de votre référentiel pour certains modèles et crochet scripts et scripts hook contribué .