¿Cómo puedo acceder al archivo comprometida de una subversión gancho pre-commit en Perl?
-
18-09-2019 - |
Pregunta
Necesito hacer lo siguiente:
-
Escribir pre-commit gancho en Perl
-
gancho debe comprobar todos los archivos que están siendo cometidos por la presencia de algún texto, y fallar si no se encuentra que el texto
Básicamente, necesito un ejemplo de Perl gancho que lee los archivos que se cometen.
Estoy muy por alguna solución elegante con la menor cantidad de código.
Notas:
Gancho debe utilizar svnlook
u otra forma mejor para encontrar archivos.
Solución
gancho 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
}
}
}
Otros consejos
Parece que tiene la fundación descubierto ya:
- obtener la lista de todos los archivos que se cometen
- buscar cada uno de ellos a su vez de texto en particular
- si no se encuentra el texto, rechazar cometer
Encontrará información sobre la escritura de pre-commit ganchos en el manual de .
No debería ser demasiado difícil de modificar este ejemplo en Python para hacer lo que quiera. Véase también el subdirectorio hooks
de su repositorio para algunas plantillas y gancho guiones y scripts gancho contribuido .