Comments
Это все хорошо если у вас только pep и несколько юнит тестов. Но если у вас множество разные утилит, компиляторов и флагов…
Поэтому, мне кажется, лучше использовать ci. Для github это travis и appveyor.
Чтобы процесс детачнулся под линуксом достаточно передать close_fds = True в аргументах к Popen(), хотя под виндой может потребоваться поиграть с флагом DETACHED_PROCESS (http://stackoverflow.com/questions/13592219/launch-a-totally-independent-process-from-python).

Добавлю, что человек, который закоммитит файл some_file_which_ends_with_py, game.spy, например, будет неприятно удивлен.
Спасибо, исправил)

P.S. С DETACHED_PROCESS поэкспериментирую завтра, это похоже на выход. Позже отпишусь.
Флаг DETACHED_PROCESS привязан к платформе, его использование нежелательно, чтобы не добавлять лишних проверок на текущую OS. А вот close_fds оказался панацеей, если не трогать std-потоки.

Статью обновил.

Большое спасибо за подсказку.
Упомяну, что для Ruby (и как понимаю он может быть расширен для любого языка) — есть прекрасный gem overcommit — github.com/brigade/overcommit, который реализует все сказанное в статье.
ну вот опять зарекаюсь писать комментарии, пока его проверят — уже будет готов аналогичный комментарий от другого человека
Тоже полезный инструмент, и довольно-таки функциональный. Но, я так понимаю, для его работоспособности необходимо локально развернуть интерпретатор Ruby?
Да, необходим Ruby, но насколько я знаю должно хватить версии из поставки с дистрибутивом, без плясок с rvm, так что все довольно аналогично по требованиям к системе, как и в скриптом на python из статьи.
Пожалуй, тоже нужно добавить в статью, как одну из альтернатив. Кстати, а насколько хорошо он дружит с Windows?
Судя по документации (и наличию костылей в коде для поддержки Windows) — должно дружить с некоторым ограничением функциональности.
Но вдруг появляется необходимость внести изменения в хук, который уже живет в 20 проектах… Или внезапно нужно переносить разработку с Windows на Linux, а хук на PowerShell'е… Что делать?

А как такое решение: завести 21-й проект для хуков? Локальных хук будет лишь подгружать «главный» скрипт из репозитория. Этот главный скрипт определяет ОС и загружает другой скрипт, выполняющий непосредственно проверку.
Можно. Только зачем так усложнять? Лучше, когда есть один код, который одинаково выполняется под всеми необходимыми ОС
Only those users with full accounts are able to leave comments. Log in, please.