gitolite中的per-branch,per-repo commit hook

时间:2012-06-15 15:53:54

标签: git gitolite githooks git-post-receive

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

我的环境: git版本1.7.4.1,

到目前为止我做了什么:

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

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

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

  4. 将文件权限设置为700

  5. 完成对“dog”repo“cat”分支的提交

  6. 结果: 未创建测试文件

1 个答案:

答案 0 :(得分:1)

如果我查看Gitolite v2 (g2) hook chaining section,只有两个挂钩与“.secondary”扩展相关:

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

  • (只有在激活镜像时才会涉及post-receive,而在你的gitolite安装中不应该这样)

因此,您不需要在post-receive.secondary中声明post-receive,仅</path/to/gitolite>/hooks/common/个问题,如“How to install hooks in gitolite”中所述。


OP specialsauce在评论中结束:

  

我需要在存储库文件夹中使用post-receive钩子(而不是辅助文件夹),我认为这是它不执行的主要原因。

     

我最后改变的唯一另一件事就是将700(本来应该没问题?)的烫发设置为755
  钩子现在可靠地执行。

     

我不需要运行gl-setup脚本。另外,我将上面概述的var赋值代码更改为STDIN上的“while”。