我在.git/hooks/post-checkout上工作,在寻找/导出分支名称或获取先前的分支名称时遇到了困难。当s3 切换到或从分支时,我想重新启动服务器。
我不知道如何在bash中获取env,所以我尝试使用git来获取前一个分支,但我得到的最接近的是git checkout -/git checkout @{-1},因此我不确定如何在不调用签出的情况下检索先前的分支名称。
我应该使用Git env而不是shell吗?
当前文件只是在每次签出时重新启动服务器。
#!/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发布于 2016-09-29 17:26:06
您应该能够使用这一行获取之前的分支名称:
git rev-parse --abbrev-ref @{-1}
要获得当前的分支名称:
git rev-parse --abbrev-ref HEAD
发布于 2016-09-29 17:19:41
Git将前面和当前的引用名称传递给post-checkout钩子,因此您应该能够执行以下操作:
#!/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完全没有经过测试,但应该很接近。
https://stackoverflow.com/questions/39775961
复制相似问题