Подтвердить что ты не робот

Как git после получения получить имя репо он работает?

У меня есть git post get hook, который вызовет сборку в моей системе сборки. Мне нужно создать строку "$ repo-name + $branch" в hook script.

Я могу разобрать ветвь, но как я могу получить имя репозитория от git?

Спасибо!

4b9b3361

Ответ 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 в случае открытого хранилища, вы можете добавить строку в первый случай, чтобы отключить ее:

    REPOSITORY_BASENAME=$(basename "$PWD")
    REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git}

Ответ 2

Вы можете проверить $GIT_DIR или $GIT_WORK_TREE и получить там имя репо.

Ответ 3

Вы можете сделать git rev-parse --show-toplevel, который предоставит вам путь к каталогу верхнего уровня и вытащит из него имя (reponame.git является обычным для репозиториев с дистанционно доступным доступом).

$PWD может также иметь такую ​​же информацию, но я не уверен.

Ответ 4

Если вы используете Gitolite, переменная GL_REPO доступна по умолчанию в среде post-receive.