【问题标题】:How to get my branch name from a pre-receive hook?如何从预接收挂钩中获取我的分支名称?
【发布时间】:2018-05-04 17:47:46
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    预接收挂钩是在不同的 Git 中运行的挂钩。 你的 Git 中的当前分支是无关紧要的,在预接收挂钩中,他们的 Git 的当前分支也无关紧要。无论你的实际任务是什么,使用“当前分支”都是错误的。

    (他们的 Git 的当前分支可能与 post-receive 挂钩,如果该挂钩的工作是将更新部署到当前分支。但是,请注意接收 Git 通常配置为“裸" 存储库。)

    【讨论】:

      【解决方案2】:

      实际上,当使用标准输入时,您可以从第一个参数 "$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)

      中获得分支的名称

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多