1

我想添加一个提交钩子,当在 gitolite/git 服务器上收到推送时,只针对给定的分支和 repo 组合(repo 'dog' 上的分支'cat')。

我的环境:git版本1.7.4.1,

到目前为止我做了什么:

  1. /home/git/repositories/dog.git/hooks/post-receive.secondary在 git/gitolite 服务器上触摸了一个文件。

  2. 使用以下内容编辑文件:

    #!/bin/sh
    #
    refname="$1"
    oldrev="$2"
    newrev="$3"
    if [ "$refname" == "refs/heads/cat" ]
    then
       touch /tmp/test
    fi
    
  3. 将文件的所有者设置为“git”用户

  4. 将文件权限设置为 700

  5. 对“狗”回购的“猫”分支进行了提交

结果:未创建测试文件

4

1 回答 1

1

如果我查看Gitolite v2 (g2) 钩子链接部分,只有两个钩子与“ .secondary”扩展有关:

  • 更新钩子,因为它被用于所有 repos 并且对 gitolite 的访问控制至关重要
  • post-update 挂钩,因为它gitolite-admin仅在 repo 中使用,用于“编译”配置等。

  • post-receive仅在激活镜像时才涉及,在您的 gitolite 安装中不应该是这种情况)

所以你不需要在你的 中声明一个post-receive.secondary,只是一个post-receive钩子</path/to/gitolite>/hooks/common/,如“如何在 gitolite 中安装钩子”中所述。


OP specialsauce 在评论中总结:

我需要post-receive在存储库文件夹中添加一个钩子(而不是第二个),我认为这是它没有执行的主要原因。

我认为最后我唯一改变的另一件事是将烫发从700(无论如何应该没问题?)设置为755.
钩子现在可以可靠地执行。

我不需要运行gl-setup脚本。此外,我从上面概述的 var 分配代码更改为 "while" on STDIN

于 2012-06-15T18:55:31.317 回答