Pregunta

Estoy corriendo SVN en un servidor Windows, y estoy usando scripts de Perl para implementar algunas cometer pre-ganchos. Estoy viendo el mensaje de error siguiente de TortoiseSVN:

  

Error !! ScriptError !! No se puede analizar   línea: ruta _U / a / archivos / trunk

y este es el 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);

He intentado sustituir la expresión regular con cosas como /_([AUD]).\s\s(.+)$/ sin éxito -. Incluso intenté /.*([AUD]).\s\s(.+)$/

Los pensamientos? Sugerencias?

¿Fue útil?

Solución

Sin un vistazo a la documentación de SVN Sólo estoy adivinando: En la salida anterior solo espacio se muestra entre U y la trayectoria real, pero que ha \s\s en todas sus expresiones regulares.

[editar] Ok, ahora que tenía un aspecto en el svnlook referencia . En primer lugar, su expresión regular falla por versiones actuales de svnlook, tal como se especifica la salida de la siguiente manera:

  • Las dos primeras columnas contienen el estado
  • La ruta comienza en la quinta columna
  • Estado puede ser una de A (añadido), U (contenido cambiado), D (suprimido), _U (propiedades cambios), y UU (contenido + inmuebles cambiaron)

Por lo tanto, usted debe ser capaz de igualar con algo como ^([_AUD]+)\s+(.+)$. Uno puede ser más específicos, pero eso no es necesario.

Si esto no coincide, por favor tubería de salida del comando a un archivo, y publicar la parte pertinente aquí.

Otros consejos

if ($line !~ /^_?([AUD])\s+(.+)$/ debería funcionar bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top