无法在git update hook

时间:2015-05-03 14:20:25

标签: git

根据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

我正在寻找的是一种在更新钩子中引用分支名称的方法。

1 个答案:

答案 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钩子的链接,其表现不同。