В проекте Opensmalltalk есть несколько ловушек git (post-checkout, post-commit, post-merge), которые проверяли, действительно ли скрипты запускались как ловушка с помощью этого (bash) теста:
is_run_as_hook() {
test -n "$GIT_DIR"
}
Вероятно, это был слишком хитрый взлом: запустите тот же сценарий для установки ловушки, что и для запуска ловушки, см.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/623dee2b6589723173af8b10d73485a23202c44f/scripts/updateSCCSVersions
Раньше работал до git 2.18 ...
Но GIT_DIR больше не устанавливается, и, как обсуждалось в списке рассылки git, тот факт, что GIT_DIR был установлен, был непреднамеренным побочным эффектом ...
https://public-inbox.org/git/20180826004150.GA31168@sigill.intra.peff.net/t/
Таким образом, мой вопрос: есть ли другой способ распознать, что вас запускают как крючок, или нам лучше изменить всю логику?