Qui un di massima rapido pubblica al codice nel collegamento di cui sopra. Ciò dovrebbe funzionare per voi. Non la ho provata comunque (non ho repo di SVN ora per provarlo).
#! pitone di /bin/env
“La sovversione di esempio pre-commit il gancio. „
command_output del def (cmd):
“Bloccare l'uscita standard dell'ordine. „
importare il processo secondario
restituire il processo secondario. Popen (
cmd.split (), stdout=subprocess.PIPE) .communicate () [0]
il def files_changed (look_cmd):
Lista che del """ le lime hanno aggiunto o che aggiornato tramite questa transazione.
“lo svnlook variabile„ dà l'uscita come:
Tronco/file1.cpp di U
Un tronco/file2.cpp
"""
nome di schedario del def (linea):
ritraccia [4:]
il def added_or_updated (linea):
ritraccia e linea [0] in (“A„, “U„)
rinviare [
nome di schedario (linea)
per la linea nel command_output (look_cmd % “variabile„) .split („ \ n ")
se added_or_updated (linea)]
check_filesname del def (look_cmd):
“Controllare per vedere se c'è nomi di schedario non validi. \
Permette gli alfabeti, i numeri, i precipitare (-), i sottolineamenti (_) ed i puntini (.) “
allowedRegex=re.compile (“^ [a-zA-Z0-9 \ - _ \.]*$")
invalid_files = [
FF per i FF in files_changed in (look_cmd)
se non allowedRegex.match (FF)]
se len (invalid_files) > 0:
sys.stderr.write (“le seguenti lime hanno nome di schedario non valido: \ n%s \ n„
% “\ n„ .join (invalid_files))
rinviare len (invalid_files)
conduttura del def ():
uso = uso del """: %PROG REPOS TXN
Funzionare pre-commit le opzioni su una transazione del deposito. """
dall'importazione OptionParser del optparse
analizzatore = OptionParser (usage=usage)
parser.add_option (“- r„,„--revisione ",
modo di prova del help= ". TXN realmente si riferisce ad una revisione. “,
action= " store_true ", default=False)
errori = 0
prova:
(sceglie, (repos, txn_or_rvn)) = parser.parse_args ()
look_opt = ("--transazione„,„--revisione ") [opts.revision]
look_cmd = “svnlook %s %s %s %s„ % (
“%s„, repos, look_opt, txn_or_rvn)
check_filesname di errori += (look_cmd)
tranne:
parser.print_help ()
errori += 1
errori di ritorno
se == “__main„ del __name:
sistema dell'importazione
sys.exit (principale ())