git post-receive hook怎么能得到它正在运行的repo的名字?

Jac*_*cko 25 git

我有一个git post receive钩子,它将在我的构建系统上触发构建.我需要在钩子脚本中创建一个"$ repo-name + $ branch"形式的字符串.

我可以解析分支,但是如何从git获取存储库名称?

谢谢!

Mar*_*air 39

我认为,"存储库名称"在git中并不是一个定义明确的想法.也许最有用的是whatever.git在裸存储库的情况下返回,或者whatever在具有工作树的存储库的情况下返回.我已经测试过,这个Bourne shell可以在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
Run Code Online (Sandbox Code Playgroud)

更新:如果要删除.git裸存储库中的扩展名,可以在第一个案例中添加一行以将其删除:

    REPOSITORY_BASENAME=$(basename "$PWD")
    REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git}
Run Code Online (Sandbox Code Playgroud)