如何从预接收挂钩中获取我的分支名称?
How to get my branch name from a pre-receive hook?
我正在 GitHub 企业工作,但我没有权限将新的预接收挂钩上传到我们的存储库。
我尝试将我的钩子作为预推钩子进行测试,它的效果非常好,
但是当我把我的钩子发给我们的管理员时,他说:"The GitHub pre-receive-hook script is different with git pre-receive-hook script. The git symbolic-ref --short HEAD may not work as your expected"
所以我需要找到一种方法来替换这个命令:
current_branch=$(git symbolic-ref --short HEAD) || exit 1
将我的当前分支保存在 "current_branch" 参数中的命令?
没有测试能力我该如何做?
预接收挂钩是不同Git中的挂钩运行。 your Git 中的当前分支是无关紧要的,并且在预接收挂钩中,their Git 的当前分支分支也无关紧要。无论您的实际任务是什么,使用 "the current branch" 都是错误的。
(他们 Git 的当前分支 可能 与 post-receive 挂钩相关,如果该挂钩的工作是将更新部署到当前分支。但是,请注意,接收 Git 通常配置为 "bare" 个存储库。)
实际上,当使用标准输入时,您可以从第一个参数“$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)
我正在 GitHub 企业工作,但我没有权限将新的预接收挂钩上传到我们的存储库。
我尝试将我的钩子作为预推钩子进行测试,它的效果非常好, 但是当我把我的钩子发给我们的管理员时,他说:"The GitHub pre-receive-hook script is different with git pre-receive-hook script. The git symbolic-ref --short HEAD may not work as your expected"
所以我需要找到一种方法来替换这个命令:
current_branch=$(git symbolic-ref --short HEAD) || exit 1
将我的当前分支保存在 "current_branch" 参数中的命令?
没有测试能力我该如何做?
预接收挂钩是不同Git中的挂钩运行。 your Git 中的当前分支是无关紧要的,并且在预接收挂钩中,their Git 的当前分支分支也无关紧要。无论您的实际任务是什么,使用 "the current branch" 都是错误的。
(他们 Git 的当前分支 可能 与 post-receive 挂钩相关,如果该挂钩的工作是将更新部署到当前分支。但是,请注意,接收 Git 通常配置为 "bare" 个存储库。)
实际上,当使用标准输入时,您可以从第一个参数“$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)