Hier snelle geeft ruw aan de code in de bovengenoemde verbinding uit. Dit zou voor u moeten werken. Ik heb het niet niettemin getest (ik heb geen repo SVN om het nu te testen).
#! /bin/env python
De „ontwrichting van het voorbeeld pre-commit haak. “
def command_output (cmd):
„Vang de standaardoutput van een bevel. “
voer subprocédé in
keer subprocédé terug. Popen (
cmd.split (), stdout=subprocess.PIPE) .communicate () [0]
def files_changed (look_cmd):
""" Maak een lijst van de dossiers die door deze transactie worden toegevoegd of worden bijgewerkt.
„svnlook veranderd“ geeft output als:
U boomstam/file1.cpp
Een boomstam/een file2.cpp
"""
def filename (lijn):
terugkeer lijn [4:]
def added_or_updated (lijn):
terugkeer lijn en lijn [0] binnen („A“, „U“)
terugkeer [
filename (lijn)
voor lijn in command_output (look_cmd „veranderde“ %) .split (“ \ n ")
als (lijn)] added_or_updated
def check_filesname (look_cmd):
„Controle voor ongeldige filenames. \
Het staat Alfabetten, Aantallen toe, stormt (-), onderstreept (_) en punten (.) „
allowedRegex=re.compile („^ [a-zA-Z0-9 \ - _ \.]*$“)
invalid_files = [
FF voor FF files_changed binnen (look_cmd)
als niet allowedRegex.match (FF)]
als len (invalid_files) > 0:
sys.stderr.write (de „Volgende dossiers hebben ongeldige filename: \ n%s \ n“
% „\ n“ .join (invalid_files))
terugkeer len (invalid_files)
def leiding ():
gebruik = gebruik """: %PROG REPOS TXN
De looppas pre-commit opties op een bewaarplaatstransactie. """
van de optparseinvoer OptionParser
syntactische parser = OptionParser (usage=usage)
parser.add_option („- r“,“--revisie ",
help= de " wijze van de Test. TXN verwijst eigenlijk naar een revisie. „,
action= " store_true ", default=False)
fouten = 0
probeer:
(opteert, (repos, txn_or_rvn)) = parser.parse_args ()
look_opt = („--transactie“,“--revisie ") [opts.revision]
look_cmd = „svnlook %s %s %s %s“ % (
„%s“, repos, look_opt, txn_or_rvn)
fouten += check_filesname (look_cmd)
behalve:
parser.print_help ()
fouten += 1
terugkeer fouten
als __name == „__main“:
de invoer sys
hoofd sys.exit (())