Git在签出后钩子中检测到我们正在创建一个新分支

Git在签出后钩子中检测到我们正在创建一个新分支,git,Git,我希望在创建分支时在本地启动脚本 我发现我必须使用签出后挂钩,并编写了以下脚本: #! /bin/sh # update hook oldrev=$1 newrev=$2 type=$3 branch_name="$(git symbolic-ref HEAD 2>/dev/null)" echo "branch is $branch_name" echo "oldrev is $oldrev and newrev is $newrev" type_shortname(){ typ

我希望在创建分支时在本地启动脚本

我发现我必须使用签出后挂钩,并编写了以下脚本:

#! /bin/sh
# update hook 
oldrev=$1
newrev=$2
type=$3
branch_name="$(git symbolic-ref HEAD 2>/dev/null)"
echo "branch is $branch_name"
echo "oldrev is $oldrev and newrev is $newrev" 

type_shortname(){
 type="branch"  
 shortname="$(git symbolic-ref HEAD --short)"
}

NULL_SHA1=0000000000000000000000000000000000000000
if test $type = 1;then 
 type_shortname
fi
echo $type
echo $shortname
case $oldrev,$newrev in
$NULL_SHA1,*) action=create;;
*,*);;
esac
action_meth()
{
    echo "create"
}
case $action,$type in
create,branch) action_meth;;
* );;
esac
exit 0
但新版本并非如SHA1所预期的那样为空,但与旧版本完全相同。从git文档来看,这似乎是合乎逻辑的。然后
action\u meth()

我的问题是如何检测我们正在移动的分支是一个新创建的分支(当使用更新钩子服务器端时,这在本地作为
new rev==NULL\u SHA
的点似乎是可以的)。

我想在分支创建之后调用客户端。
这意味着它不是用来检测分支创建的

然后,您可以测试以下所有情况:

  • 当前分行行长是2家分行的一部分
  • 其父提交不是当前分支的一部分(这意味着当前分支只有一个提交,这可能表示新分支或至少创建了一个分支,但不用于添加任何新提交)