根据this链接,更新挂钩应该传递3个参数。使用该链接的第一个答案中的代码,您可以确定分支名称。但是,我无法重现这一点,我无法确定分支名称。
我可以确认我的工作流程正常运行。每当我推送到一个仓库时,它就会运行一个名为“update”的文件,这是一个更新钩子。我可以确认它会将文本写入文件并执行。
这是一些对我有用的代码。它征求了repo的名称并成功将其写入〜/ name:
#!/bin/bash
if [ $(git rev-parse --is-bare-repository) = true ]
then
REPOSITORY_BASENAME=$(basename "$PWD")
else
REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..))
fi
echo $REPOSITORY_BASENAME > ~/name
这是对我不起作用的代码。它无法写入refname和branch变量等的值。当我推动掌握时(应该满足'if'条件,我也尝试了没有if循环的代码:
#!/bin/bash
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
echo $branch > ~/branch
echo $refname > ~/refname
fi
done
我正在寻找的是一种在更新钩子中引用分支名称的方法。
答案 0 :(得分:1)
文档(man githooks)说:
The hook executes once for each ref to be updated, and takes three parameters:
· the name of the ref being updated,
· the old object name stored in the ref,
· and the new object name to be stored in the ref.
你正在阅读stdin,你想看一下参数($ 1,$ 2,$ 3)。
你提到的关于post-receive
钩子的链接,其表现不同。