Domanda

Sono in esecuzione SVN su un server Windows, e sto usando script Perl per implementare alcune pre-commit ganci. Sto vedendo il seguente messaggio di errore da TortoiseSVN:

  

Errore !! ScriptError !! Impossibile analizzare   Linea: percorso _U / a / file / trunk

e questo è lo 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);

Ho provato a sostituire l'espressione regolare con le cose come /_([AUD]).\s\s(.+)$/ senza sucesso -. Ho anche provato /.*([AUD]).\s\s(.+)$/

Pensieri? Suggerimenti?

È stato utile?

Soluzione

Senza uno sguardo alla documentazione SVN Sto solo cercando di indovinare: In uscita al di sopra solo uno spazio è mostrato tra U e il percorso effettivo, ma avete \s\s in tutte le tue espressioni regolari.

[modifica] Ok, ora ho avuto uno sguardo al svnlook riferimento . In primo luogo, la vostra espressione regolare non riesce per le attuali versioni di svnlook, come è specificato l'uscita nel seguente modo:

  • Le prime due colonne contengono lo stato
  • Il percorso inizia dalla quinta colonna
  • stato può essere uno di A (aggiunto), U (contenuto modificato), D (cancellato), _U (proprietà) modifiche e UU (content + proprietà modificate)

Quindi, si dovrebbe essere in grado di abbinare con qualcosa come ^([_AUD]+)\s+(.+)$. Si può ottenere in modo più preciso, ma che non è necessario.

Se questo non corrisponde, si prega di pipe l'output del comando in un file, e post la parte rilevante qui.

Altri suggerimenti

if ($line !~ /^_?([AUD])\s+(.+)$/ dovrebbe funzionare bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top