Wie kann ich von einem Subversion Pre-Commit-Haken in Perl auf die verpflichtete Datei zugreifen?
-
18-09-2019 - |
Frage
Ich muss Folgendes tun:
Schreiben Sie Pre-Commit-Haken in Perl
Hook sollte alle Dateien überprüfen, die für das Vorhandensein eines Textes verpflichtet sind, und fehlschlagen, wenn dieser Text nicht gefunden wird
Grundsätzlich brauche ich ein Beispiel für Perl -Hook mit der Liese von Dateien, die begangen werden.
Ich suche sehr eine elegante Lösung mit der geringsten Code.
Anmerkungen: Haken sollte verwenden svnlook
oder eine andere bessere Möglichkeit, Dateien zu finden.
Lösung
Pre-Commit-Haken:
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
}
}
}
Andere Tipps
Es hört sich so an, als hätten Sie das Fundament bereits herausgefunden:
- Holen Sie sich die Liste aller Dateien, die begangen werden
- Suchen Sie jeden von ihnen wiederum nach einem bestimmten Text
- Wenn der Text gefunden wird, lehnen Sie das Commit ab
Sie finden einige Informationen zum Schreiben von Pre-Commit-Haken in der Handbuch.
Es sollte nicht zu schwer zu ändern sein Dieses Beispiel in Python zu tun, was du willst. Siehe auch die hooks
Unterverzeichnis Ihres Repositorys für einige Vorlagen und Hakenskripte und Hakenskripte beigetragen.