Comment puis-je accéder au fichier commited à partir d'un Subversion pre-commit hook en Perl?

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

  •  18-09-2019
  •  | 
  •  

Question

Je dois faire ce qui suit:

  1. Ecrire pre-commit hook en Perl

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

Était-ce utile?

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

On dirait que vous avez la fondation a compris déjà:

  • obtenir la liste de tous les fichiers commis
  • recherche chacun d'eux à son tour pour le texte particulier
  • si le texte est trouvé, reject commit

Vous trouverez des informations sur l'écriture des crochets pre-commit dans la manuel.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top