git - 如何从预接收 Hook 中获取我的分支名称?

标签 git githooks

我正在与 GitHub 企业合作,我无权将新的预接收 Hook 上传到我们的存储库。

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

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

current_branch=$(git symbolic-ref --short HEAD) || exit 1

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

如果没有测试能力,我该怎么做?

最佳答案

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

while read oldrev newrev refname; do
    echo "$refname : $oldrev ~ $newrev"
done

如果您想使用 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

您将在参数(short_current_branch)

中获得分支的名称

enter image description here

关于git - 如何从预接收 Hook 中获取我的分支名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410129/

相关文章:

git - git diff hunk header 中的摘录来自哪里?

python - git.exc.GitCommandNotFound : [WinError 5] Access is denied

git - 为什么我的 Git 存储库比工作目录大很多?

git - 有没有办法在 GitHub 上进行 git pre-push hooks?或者解决方法?

git - git-review 是如何工作的?

Git 钩子(Hook) : "fatal: not a git repository:"

git - 使用 git 设置测试和生产服务器

linux - 使用 SSH 使用同一帐户推送到 2 个不同的 repo 协议(protocol)?

git post-commit hook - 提交文件的脚本

git - 使用 Git 自动部署 - 无法运行接收后 Hook