如何从预接收挂钩获取我的分支名称?

Sha*_*uan 3 git githooks

我正在与 GitHub enterprise 合作,但无权将新的预接收挂钩上传到我们的存储库。

我尝试将我的钩子作为预推送钩子进行测试,它的工作方式就像一个魅力,但是当我将我的钩子发送给我们的管理员时,他说:“GitHub pre-receive-hook 脚本与 git pre-receive-hook 不同脚本。 git symbolic-ref --short HEAD 可能无法按您的预期工作”

所以我需要找到一种方法来替换这个命令:

current_branch=$(git symbolic-ref --short HEAD) || exit 1
Run Code Online (Sandbox Code Playgroud)

将我当前的分支保存在“current_branch”参数中的命令?

如果没有能力测试,我该如何做到这一点?

Sha*_*uan 7

实际上,当使用标准输入时,您可以从第一个参数 "$refname" 获取 CURRENT_BRANCH :

while read oldrev newrev refname; do
    echo "$refname : $oldrev ~ $newrev"
done
Run Code Online (Sandbox Code Playgroud)

如果你想使用 sed 来切割和清理它,你可以添加以下内容:

while read oldrev newrev refname; do
    echo "$refname : $oldrev ~ $newrev"
    current_branch=$refname
    short_current_branch="$(echo $current_branch | sed 's/refs\/heads\///g')"
done
Run Code Online (Sandbox Code Playgroud)

您将仅获得参数内分支的名称(short_current_branch)

在此输入图像描述