首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取优先分支名称的Git钩子

获取优先分支名称的Git钩子
EN

Stack Overflow用户
提问于 2016-09-29 16:53:53
回答 2查看 457关注 0票数 0

我在.git/hooks/post-checkout上工作,在寻找/导出分支名称或获取先前的分支名称时遇到了困难。当s3 切换到或从分支时,我想重新启动服务器。

我不知道如何在bash中获取env,所以我尝试使用git来获取前一个分支,但我得到的最接近的是git checkout -/git checkout @{-1},因此我不确定如何在不调用签出的情况下检索先前的分支名称。

我应该使用Git env而不是shell吗?

当前文件只是在每次签出时重新启动服务器。

代码语言:javascript
复制
#!/bin/bash

touch tmp/restart.txt
echo " *** restarting puma-dev"

current_branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
if [ "$current_branch" = "s3" ]
then
  echo " *** please don't upload any files"
  echo
fi
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-29 17:26:06

您应该能够使用这一行获取之前的分支名称:

git rev-parse --abbrev-ref @{-1}

要获得当前的分支名称:

git rev-parse --abbrev-ref HEAD

票数 1
EN

Stack Overflow用户

发布于 2016-09-29 17:19:41

Git将前面和当前的引用名称传递给post-checkout钩子,因此您应该能够执行以下操作:

代码语言:javascript
复制
#!/bin/sh

oldref="$1"
newref="$2"
branch_update="$3"

[ "$branch_update" = '1' ] || exit  # exit if branch didn't change

[ "$oldref" = 'refs/heads/s3' ] && oldref_was_s3=1
[ "$newref" = 'refs/heads/s3' ] && newref_is_s3=1

if [ -z "$oldref_was_s3" -a -n "$newref_is_s3" ]; then
    echo " *** please don't upload any files"
fi

完全没有经过测试,但应该很接近。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39775961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档