我想获取被推送到我的遥控器的分支的名称。
例如:
当我将本地分支feature/awesome
推送到f5/master
(f5
是我的测试服务器)时,我想在接收后挂钩中获取feature/awesome
字符串。
我已经在SO的帮助下完成了获取接收推送的分支的名称:
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
echo "$oldrev" > last.txt # a hash
echo "$newrev" >> last.txt # a hash
echo "$refname" >> last.txt # refs/heads/master
echo "$branch" >> last.txt # master
done
我的目标是将信息发送到正在将其写入数据库的服务,然后创建有关当前将哪些功能推送到哪个测试服务器的概述。
但是我正在努力获得推送的功能名称。有谁知道这是否可行以及我如何实现呢?
另一种解决方案是将本地分支直接推送到测试服务器,而不是将其推送到master分支。我想避免这种情况,因为我的服务器上只有一个分支。
答案 0 :(得分:1)
推送不一定总是需要本地引用。如果feature/awesome
指向提交abc123
,则git push origin feature/awesome:master
和git push origin abc123:master
相同。
如果您对本地分支机构有严格的命名规则,而对于推送则有常规的工作流程,则可以尝试-o/--push-option,git push origin --push-option=feature/awesome feature/awesome:master
。在post-receive中,您可以从环境变量feature/awesome
中获取字符串GIT_PUSH_OPTION_0
。您需要检查您的Git版本是否支持此功能。