Cuestión : SVN: Escritura del gancho para evitar nombres de fichero con los espacios y los carbones de leña del special

¿Hola,

Is allí escritura del gancho de SVN para que linux evite a usuarios que confían nombres de fichero con los espacios y los carbones de leña del special? ¡

Thanks!

 
class= del

Respuesta : SVN: Escritura del gancho para evitar nombres de fichero con los espacios y los carbones de leña del special

Aquí un áspero rápido corrige al código en el acoplamiento antedicho. Esto debe trabajar para usted. No lo he probado sin embargo (no tengo repo de SVN ahora para probarlo).

¡#! pitón de /bin/env
La “subversión del ejemplo precompromete el gancho. ”

command_output del def (cmd):
  “Capturar la salida estándar de un comando. ”
  importar el subproceso
  volver el subproceso. Popen (
      cmd.split (), stdout=subprocess.PIPE) .communicate () [0]

el def files_changed (look_cmd):
  Lista del """ que los archivos agregaron o que se pusieron al día por esta transacción.

el “svnlook cambiado” da salida como:
  Tronco/file1.cpp de U
  Un tronco/file2.cpp
  """
  nombre de fichero del def (línea):
      línea de vuelta [4:]
  el def added_or_updated (línea):
      línea de vuelta y línea [0] en (“A”, “U”)
  volver [
      nombre de fichero (línea)
      para la línea en el command_output (look_cmd % “cambiado”) .split (” \ n ")
      si added_or_updated (línea)]

check_filesname del def (look_cmd):
  “Comprobar para saber si hay nombres de fichero inválidos. \
  Permite alfabetos, números, rociadas (-), las rayas (_) y los puntos (.) “
  allowedRegex=re.compile (“^ [a-zA-Z0-9 \ - _ \.]*$")
  invalid_files = [
      FF para el FF en files_changed (look_cmd)
      si no allowedRegex.match (FF)]
  si len (los invalid_files) > 0:
      sys.stderr.write (“los archivos siguientes tienen nombre de fichero inválido: \ n%s \ n”
                       % “\ n” .join (invalid_files))
  volver len (los invalid_files)

cañería del def ():
  uso = uso del """: %PROG REPOS TXN

Funcionar precomprometen opciones en una transacción del depósito. """
  de la importación OptionParser del optparse
  programa de análisis = OptionParser (usage=usage)
  parser.add_option (“- r”,”--revisión ",
                    modo de prueba del help= ". TXN refiere realmente a una revisión. “,
                    action= " store_true ", default=False)
  errores = 0
  intento:
      (opta, (los repos, txn_or_rvn)) = parser.parse_args ()
      look_opt = (“--transacción”,”--revisión ") [opts.revision]
      look_cmd = “svnlook %s %s %s %s” % (
          “%s”, repos, look_opt, txn_or_rvn)
      check_filesname de los errores += (look_cmd)
  excepto:
      parser.print_help ()
      errores += 1
  errores de vuelta

si == “__main” del __name:
  sistema de la importación
  sys.exit (principal ())
Otras soluciones  
 
programming4us programming4us