Как git после получения получить имя репо он работает?
У меня есть git post get hook, который вызовет сборку в моей системе сборки.
Мне нужно создать строку "$ repo-name + $branch" в hook script.
Я могу разобрать ветвь, но как я могу получить имя репозитория от git?
Спасибо!
Ответ 1
"Название репозитория" не является четко определенной идеей в git, я думаю. Возможно, наиболее полезным является возвращение whatever.git в случае открытого репозитория или whatever в случае репозитория с рабочим деревом. Я тестировал, что этот бит оболочки Bourne имеет дело с обоими случаями из-за крюка post-receive:
if [ $(git rev-parse --is-bare-repository) = true ]
then
REPOSITORY_BASENAME=$(basename "$PWD")
else
REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..))
fi
echo REPOSITORY_BASENAME is $REPOSITORY_BASENAME
Обновление: если вы хотите удалить расширение .git в случае открытого хранилища, вы можете добавить строку в первый случай, чтобы отключить ее:
Вы можете проверить $GIT_DIR или $GIT_WORK_TREE и получить там имя репо.
Ответ 3
Вы можете сделать git rev-parse --show-toplevel, который предоставит вам путь к каталогу верхнего уровня и вытащит из него имя (reponame.git является обычным для репозиториев с дистанционно доступным доступом).
$PWD может также иметь такую же информацию, но я не уверен.
Ответ 4
Если вы используете Gitolite, переменная GL_REPO доступна по умолчанию в среде post-receive.