Gitolite Update Hook排除存储库

时间:2012-07-16 18:11:39

标签: hook gitolite

我正在添加一个gitolite update hook作为VREF,并且想知道是否有办法将它应用于除gitolite-admin之外的所有存储库。

使用更简单的方法而不是列出我想要应用挂钩的所有存储库会很棒。

目前我有:

repo @all
-    VREF/update    =   @all

我正在考虑为gitolite-admin存储库添加一个异常。 类似的东西:

repo gitolite-admin
RW+  VREF/update    =   @all

repo @all
-    VREF/update    =   @all

有没有办法让像这样的规则起作用?谢谢您的帮助! (我试过这种方式,似乎没有用)

1 个答案:

答案 0 :(得分:3)

仅适用于不熟悉VREF的其他读者(与"g3" or Gitolite V3一起介绍)。

VREF rules背后的想法是:

  
      
  • 对于适用于此用户的规则中以VREF/FOO/开头的每个refex,将触发对名为FOO的程序的调用。   请注意,如果VREF规则不适用于该用户,则甚至不会调用该程序。
  •   

这就是即使update hook is reserved by gitolite即可定义“update”钩子的原因 普通update钩子需要3个参数(ref,旧SHA,新SHA) 任何VREF都将获得这三个,然后至少再获得4个。您的“update”VREF应该忽略额外的参数。

  
      
  • fallthru 正在考虑成功(即您不会拒绝对回购的git操作,因为没有应用任何VREF)
      如果将fallthru视为“失败”,则您将被迫为此repo中使用的每个vref添加这样的“成功规则”,在每种情况下列出在该vref的上下文中尚未提及的每个用户
  •   

考虑update VREF程序,您可以添加一个参数,允许您的更新脚本识别它在gitolite-admin上下文中调用(并且不应该执行任何操作):

repo gitolite-admin
-  VREF/update/donothing    =   @all

repo @all
-  VREF/update    =   @all