Как получить путь проекта в пост-коммит скрипта хука?(git)

Я хочу вызвать скрипт, который находится в хранилище.

Конечно, я мог бы сделать следующее:

#!/bin/sh
../../myscript.sh

но я думаю, что это не приятно;)

Итак, как мне получить путь моего проекта в сценарии post-commit?

2 ответа

Решение

Когда вы имеете дело с не-голым хранилищем, post-commit1 хук запускается с текущим рабочим каталогом рабочего дерева репозитория. Итак, вам не нужно ../../,

Если вам нужен полный путь к скрипту, вы всегда можете сделать:

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 указывает на ~. В настоящее время я не вижу надежного способа указать на корень репо.

Другие вопросы по тегам