GIT:接收后->获得推送的分支名称

时间:2018-08-29 09:51:16

标签: git git-post-receive

我想获取被推送到我的遥控器的分支的名称。 例如: 当我将本地分支feature/awesome推送到f5/masterf5是我的测试服务器)时,我想在接收后挂钩中获取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分支。我想避免这种情况,因为我的服务器上只有一个分支。

1 个答案:

答案 0 :(得分:1)

推送不一定总是需要本地引用。如果feature/awesome指向提交abc123,则git push origin feature/awesome:mastergit push origin abc123:master相同。

如果您对本地分支机构有严格的命名规则,而对于推送则有常规的工作流程,则可以尝试-o/--push-optiongit push origin --push-option=feature/awesome feature/awesome:master。在post-receive中,您可以从环境变量feature/awesome中获取字符串GIT_PUSH_OPTION_0。您需要检查您的Git版本是否支持此功能。