Согласно справочной странице githooks ,
[Хук после фиксации] вызывается git-commit.Он не принимает никаких параметров и вызывается после выполнения коммита.
Не принимает параметров.В Python это означает, что sys.argv [1:] будет пустым списком.Страница руководства не говорит, что, если что-нибудь, отправлено на стандартный ввод, но, вероятно, ничего.Давайте проверим это.
Я сделал небольшой каталог git и поместил его в .git / hooks / post-commit:
#!/usr/bin/env python
import sys
def handle_ref(old, new, ref):
with open('/tmp/out','w') as f:
f.write(old,new,ref)
if __name__ == '__main__':
with open('/tmp/out','w') as f:
f.write('post-commit running')
for line in sys.stdin:
handle_ref(*line.split())
with open('/tmp/out','w') as f:
f.write('Got here')
и сделал его исполняемым.
КогдаЯ делаю коммит и вижу, что файл / tmp / out был создан, но его единственным содержимым является
post-commit running
Итак, скрипт запустился, но цикл for line in sys.stdin:
ничего не делает, поскольку sys ничего не отправляет.STDIN.
Вам нужно будет сгенерировать аргументы для отправки в handle_ref
другим способом, возможно, через вызов подпроцесса какой-нибудь команды git.