Почему мой git pre-commit hook не исполняется по умолчанию?

Если вы видите принятый ответ в: агрегирование и уродование javascript в Git pre-commit hook, вы увидите, что мне пришлось сделать chmod +x на моем крючке предварительной фиксации, чтобы заставить его работать.

почему это не исполняется Git по умолчанию?

2 ответов


потому что файлы по умолчанию не исполняются; они должны быть установлены как исполняемые.

примеры файлов из git init все исполняемые файлы; если он скопирован или переименован в файл без образца, он сохранитx флаг.

новые файлы будут созданы с текущими значениями по умолчанию. В вашем случае просмотрите эти значения по умолчанию с помощью umask:

$ umask
0022

по умолчанию, новые файлы не будут u+x если явно не установлено значение be.


мне пришлось сделать chmod +x на моем крючке предварительной фиксации, чтобы заставить его работать

проблема заключается в том, чтобы понять, что он не был исполняемым в первую очередь.
Это будет проще с Git 2.15.x / 2.16 (Q1 2018)

посмотреть совершить f805a00 (06 окт 2017) by Дэмиен Marié (mdamien).
(слитый Junio C Hamano -- gitster -- на совершить 130b512, 06 ноября 2017)

run-command: добавить подсказку, когда крюк игнорируется

когда крюк присутствует, но файл не установлен как исполняемый файл, тогда git будет игнорировать крюк.
пока это молчание, которое может сбивать с толку.

эта фиксация добавляет Это предупреждение, чтобы улучшить ситуацию:

hint: The 'pre-commit' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`

чтобы разрешить старый вариант использования включения / отключения крючков через флаг исполняемого файла, новая настройка введено:advice.ignoredHook.