Como posso acessar o arquivo comprometido de um gancho de pré-compromisso de subversão em Perl?

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

  •  18-09-2019
  •  | 
  •  

Pergunta

Eu preciso fazer o seguinte:

  1. Escreva um gancho de pré-compromisso em Perl

  2. Hook deve verificar todos os arquivos que estão sendo comprometidos quanto à presença de algum texto e falhar se esse texto não for encontrado

Basicamente, preciso de um exemplo de gancho Perl que lê arquivos que estão sendo comprometidos.

Estou realmente procurando uma solução elegante com a menor quantidade de código.

Notas: Hook deve usar svnlook ou outra maneira melhor de encontrar arquivos.

Foi útil?

Solução

gancho pré-comprometido:

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

    }
  }
}

Outras dicas

Parece que você já descobriu a fundação:

  • Obtenha a lista de todos os arquivos que estão sendo comprometidos
  • Pesquise cada um deles por sua vez para obter um texto específico
  • Se o texto for encontrado, rejeitar commit

Você encontrará algumas informações sobre como escrever ganchos pré-comprometidos no manual.

Não deve ser muito difícil modificar Este exemplo em Python fazer o que você quiser. Veja também o hooks subdiretório do seu repositório para alguns modelos e scripts de gancho e scripts de gancho contribuídos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top