как распознать, если скрипт git hook действительно запускается как ловушка - PullRequest
1 голос
/ 11 апреля 2019

В проекте 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/

Таким образом, мой вопрос: есть ли другой способ распознать, что вас запускают как крючок, или нам лучше изменить всю логику?

1 Ответ

1 голос
/ 15 апреля 2019

Единственный способ, которым я могу придумать, это проверить, что dirname $0 равно .git/hooks. И никогда не запускайте хуки как скрипты из .git/hooks. Хрупкое решение, но я подозреваю, что любое решение будет хрупким.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...