Я бы написал обертку для вашей системы, может быть, "commit.php" или "git-ci.sh" или что-то в этом роде. Затем вы можете использовать bash, perl, python или php, а также все, что вам удобно, и запускать каждую команду одну за другой, заканчивая коммитом.
Я предлагаю это после того, как столкнулся с похожими проблемами при попытке добавить к коммиту, что запускается ловушка pre-commit. Кроме того, на нисходящей стороне нет крючков «толкать» или «тянуть» (я использую центральный репозиторий, так что это может сработать, если у вас есть две машины, толкающие и тянущие друг друга, как вам кажется).
У меня есть двухсторонний сценарий развертывания для одного из моих веб-сайтов, где у меня есть длинный сценарий предварительной фиксации, но на веб-сервере у меня есть подобная обертка, которая выбирает, затем проверяет фиксацию, выводит отчет и дает мне варианты слияния и rsync с другим сервером и т. д. Он заменил «тянущий» хук, который, вероятно, представляет серьезную угрозу безопасности.
Hans