Wie kann ich von einem Subversion Pre-Commit-Haken in Perl auf die verpflichtete Datei zugreifen?

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

  •  18-09-2019
  •  | 
  •  

Frage

Ich muss Folgendes tun:

  1. Schreiben Sie Pre-Commit-Haken in Perl

  2. 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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top