Git 如何从预接收挂钩获取分支名称?
我正在与GitHub enterprise合作,我没有将新的预接收挂钩上载到我们的回购协议的权限 我试着将我的钩子作为预推钩子进行测试,它就像一个符咒一样工作, 但是,当我将我的钩子发送给我们的管理员时,他说:“GitHub预接收钩子脚本与git预接收钩子脚本不同。git符号ref——短头可能无法按预期工作” 因此,我需要找到一种方法来替换此命令:Git 如何从预接收挂钩获取分支名称?,git,githooks,Git,Githooks,我正在与GitHub enterprise合作,我没有将新的预接收挂钩上载到我们的回购协议的权限 我试着将我的钩子作为预推钩子进行测试,它就像一个符咒一样工作, 但是,当我将我的钩子发送给我们的管理员时,他说:“GitHub预接收钩子脚本与git预接收钩子脚本不同。git符号ref——短头可能无法按预期工作” 因此,我需要找到一种方法来替换此命令: current_branch=$(git symbolic-ref --short HEAD) || exit 1 将我的当前分支保存在“curr
current_branch=$(git symbolic-ref --short HEAD) || exit 1
将我的当前分支保存在“current_branch”参数内的命令
在没有测试能力的情况下,我该如何做呢?预接收钩子是运行在不同Git中的钩子。Git中的当前分支是不相关的,在预接收钩子中,他们Git的当前分支也是不相关的。无论您的实际任务是什么,使用“当前分支”都是错误的
(如果接收后钩子的任务是将更新部署到当前分支,则其Git的当前分支可能与接收后钩子相关。但是,请注意,接收Git通常配置为“裸”存储库。)接收前钩子是在不同Git中运行的钩子。Git中的当前分支是不相关的,在预接收钩子中,他们Git的当前分支也是不相关的。无论您的实际任务是什么,使用“当前分支”都是错误的
(如果接收后钩子的任务是将更新部署到当前分支,则其Git的当前分支可能与接收后钩子相关。但是,请注意,接收Git通常配置为“裸”存储库。)实际上,在使用stdin时,可以从第一个参数“$refname”获取当前分支: 如果您想使用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\u current\u branch)
实际上,当使用stdin时,可以从第一个参数“$refname”获取当前分支: 如果您想使用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\u current\u branch)