Pergunta

Estou executando o SVN em um servidor Windows e estou usando scripts Perl para implementar alguns ganchos de pré-compromisso. Estou vendo a seguinte mensagem de erro do Tortoisesvn:

Erro !! Scripterror !! Não é possível analisar a linha: _u caminho/para/arquivos/tronco

E este é o script:

foreach my $line (`$svnlook changed -t "$txn" "$repos"`)
{
  chomp($line);
  if ($line !~ /([AUD]).\s\s(.+)$/)
  {
    print STDERR "!!Script Error!! Can't parse line: $line\n";
    exit(1);
  }
  else
  {
     # perform some actions 
  }
}

exit(0);

Eu tentei substituir o regex por coisas como /_([AUD]).\s\s(.+)$/ sem sucesso - eu até tentei /.*([AUD]).\s\s(.+)$/.

Pensamentos? Sugestões?

Foi útil?

Solução

Sem uma olhada na documentação do SVN, estou apenas adivinhando: na saída acima, apenas um espaço é mostrado entre u e o caminho real, mas você tem \s\s em todas as suas regexes.

editar] Ok, agora eu dei uma olhada no Referência do SVNLOOK. Primeiro, seu regex falha para as versões atuais do SVNLOOK, pois a saída é especificada da seguinte forma:

  • As duas primeiras colunas contêm o status
  • O caminho começa na quinta coluna
  • O status pode ser um dos (adicionados), u (conteúdo alterado), d (excluído), _u (alterações de propriedades) e UU (Propriedades do conteúdo + alteradas)

Então, você deve ser capaz de combinar com algo como ^([_AUD]+)\s+(.+)$. Pode -se ficar mais específico, mas isso não é necessário.

Se isso não corresponder, tole a saída do comando em um arquivo e publique a parte relevante aqui.

Outras dicas

if ($line !~ /^_?([AUD])\s+(.+)$/ deve funcionar bem.

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