Git 挂钩以获取先前的分支名称
Git hook to get prior branch name
我正在研究 .git/hooks/post-checkout
,但在 sourcing/exporting 分支名称或获取先前的分支名称时遇到了问题。我想在 切换到或从 s3
分支 时重新启动服务器。
我不知道如何获取 bash 中的环境变量,所以我尝试使用 git 获取先前的分支,但我得到的最接近的是 git checkout -
/git checkout @{-1}
,虽然我不确定如何在不调用结帐的情况下检索先前的分支名称。
我应该使用 Git 环境变量而不是 shell 吗?
当前文件只是在每次检出时重新启动服务器
#!/bin/bash
touch tmp/restart.txt
echo " *** restarting puma-dev"
current_branch=$(git branch | sed -n -e 's/^\* \(.*\)//p')
if [ "$current_branch" = "s3" ]
then
echo " *** please don't upload any files"
echo
fi
Git 将以前和当前的引用名称传递给 post-checkout
挂钩,因此您应该能够执行以下操作:
#!/bin/sh
oldref=""
newref=""
branch_update=""
[ "$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
完全未经测试,但应该接近。
你应该可以使用这一行来获取之前的分支名称:
git rev-parse --abbrev-ref @{-1}
并获取当前分支名称:
git rev-parse --abbrev-ref HEAD
部分感谢 Chris,他的方法我无法解释或开始工作,但发现这些信息很有帮助,还要感谢 Keif Kraken,他的方法我确实开始工作了。
切换到特定分支 (s3) 或从特定分支切换时重新启动服务器
.git/hooks/post-checkout
脚本
#!/bin/bash
oldref=$(git rev-parse --abbrev-ref @{-1})
newref=$(git rev-parse --abbrev-ref head)
if [[ ( "$oldref" = "s3" || "$newref" = "s3" ) && "$oldref" != "$newref" ]]
then
touch tmp/restart.txt
echo " *** restarting puma-dev"
echo " *** please don't upload any files"
fi
我正在研究 .git/hooks/post-checkout
,但在 sourcing/exporting 分支名称或获取先前的分支名称时遇到了问题。我想在 切换到或从 s3
分支 时重新启动服务器。
我不知道如何获取 bash 中的环境变量,所以我尝试使用 git 获取先前的分支,但我得到的最接近的是 git checkout -
/git checkout @{-1}
,虽然我不确定如何在不调用结帐的情况下检索先前的分支名称。
我应该使用 Git 环境变量而不是 shell 吗?
当前文件只是在每次检出时重新启动服务器
#!/bin/bash
touch tmp/restart.txt
echo " *** restarting puma-dev"
current_branch=$(git branch | sed -n -e 's/^\* \(.*\)//p')
if [ "$current_branch" = "s3" ]
then
echo " *** please don't upload any files"
echo
fi
Git 将以前和当前的引用名称传递给 post-checkout
挂钩,因此您应该能够执行以下操作:
#!/bin/sh
oldref=""
newref=""
branch_update=""
[ "$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
完全未经测试,但应该接近。
你应该可以使用这一行来获取之前的分支名称:
git rev-parse --abbrev-ref @{-1}
并获取当前分支名称:
git rev-parse --abbrev-ref HEAD
部分感谢 Chris,他的方法我无法解释或开始工作,但发现这些信息很有帮助,还要感谢 Keif Kraken,他的方法我确实开始工作了。
切换到特定分支 (s3) 或从特定分支切换时重新启动服务器
.git/hooks/post-checkout
脚本
#!/bin/bash
oldref=$(git rev-parse --abbrev-ref @{-1})
newref=$(git rev-parse --abbrev-ref head)
if [[ ( "$oldref" = "s3" || "$newref" = "s3" ) && "$oldref" != "$newref" ]]
then
touch tmp/restart.txt
echo " *** restarting puma-dev"
echo " *** please don't upload any files"
fi