Здесь быстро грубая редактирует к Кодему в вышеуказанном соединении. Это должно работать для вас. Бедный человек iий испытал его однако (я не имею repo SVN, котор нужно испытать его теперь).
#! питон /bin/env
«Диверсия примера pre-commit крюк. »
command_output def (cmd):
«Захватите выход команды стандартный. »
импортируйте подпроцесс
возвратите подпроцесс. Popen (
cmd.split (), stdout=subprocess.PIPE) .communicate () [0]
def files_changed (look_cmd):
Список """, котор архивы добавили или обновлено этими трудыами.
«измененное svnlook» дает выход как:
Хобот u/file1.cpp
Хобот/file2.cpp
"""
filename def (линия):
очередь возврата [4:]
def added_or_updated (линия):
очередь возврата и линия [0] в («a», «u»)
возвратите [
filename (линия)
для линии в command_output (look_cmd «измененном» %) .split (» \ n ")
если added_or_updated, то (линия)]
check_filesname def (look_cmd):
«Проверите для инвалидных filenames. \
Оно позволяет алфавиты, номера, черточки (-), подчёркивати (_) и многоточия (.) «
allowedRegex=re.compile («^ [a-zA-Z0-9 \ - _ \.]*$")
invalid_files = [
ff для ff в после того как я files_changed (look_cmd)
если не allowedRegex.match, то (ff)]
если len (invalid_files) > 0:, то
sys.stderr.write («следующий архивы имеют инвалидный filename: \ n%s \ n»
% «\ n» .join (invalid_files))
возвратите len (invalid_files)
основа def ():
использование = использование """: %PROG REPOS TXN
Побегите pre-commit варианты на трудыах архива. """
от ввоза OptionParser optparse
парсер = OptionParser (usage=usage)
parser.add_option («- r»,»--изменение ",
испытательный режим help= ". TXN фактическ ссылается к изменению. «,
action= " store_true ", default=False)
ошибки = 0
попытка:
(выбирает, (repos, txn_or_rvn)) = parser.parse_args ()
look_opt = ("--трудыы»,»--изменение ") [opts.revision]
look_cmd = «svnlook %s %s %s %s» % (
«%s», repos, look_opt, txn_or_rvn)
check_filesname ошибок += (look_cmd)
за исключением:
parser.print_help ()
ошибки += 1
возвращенные ошибки
если == «__main» __name:, то
sys ввоза
sys.exit (главным образом ())