Как получить путь проекта в пост-коммит скрипта хука?(git)
Я хочу вызвать скрипт, который находится в хранилище.
Конечно, я мог бы сделать следующее:
#!/bin/sh
../../myscript.sh
но я думаю, что это не приятно;)
Итак, как мне получить путь моего проекта в сценарии post-commit?
2 ответа
Когда вы имеете дело с не-голым хранилищем, post-commit
1 хук запускается с текущим рабочим каталогом рабочего дерева репозитория. Итак, вам не нужно ../../
,
Если вам нужен полный путь к скрипту, вы всегда можете сделать:
SCRIPT=$(readlink -nf myscript.sh)
... или вы могли бы использовать git rev-parse --show-toplevel
чтобы получить абсолютный путь к рабочему каталогу:
SCRIPT=$(git rev-parse --show-toplevel)/myscript.sh
1... но обратите внимание, что это не так для некоторых других хуков, например, в post-receive
подключиться в не пустом хранилище, текущий рабочий каталог .git
каталог.
Это все еще в силе? мойpost-commit
содержит
#!/bin/sh
exec ./../../myscript.sh
и работает.
Используя толькоexec myscript.sh
илиmyscript.sh
не работает.
Более того, даже myscript.sh возвращает папку /.git/hooks, если запрашивается pwd. Использование $GIT_WORK_TREE указывает на ~. В настоящее время я не вижу надежного способа указать на корень репо.