2012-07-16 68 views
3

我添加gitolite更新钩子作为VREF,并想知道是否有办法将它应用于除gitolite管理之外的所有存储库。Gitolite更新钩子排除存储库

有一个简单的方法,而不是列出所有的存储库,我想应用钩子将是伟大的。

目前我有:

repo @all 
- VREF/update = @all 

我想加入上面一个用于gitolite管理员库中的异常。 喜欢的东西:

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

repo @all 
- VREF/update = @all 

有没有办法让这样一个规则来工作?谢谢您的帮助! (我试过这种方式,但它似乎没有工作)

回答

3

只为不熟悉VREF(引入"g3" or Gitolite V3)的其他读者。

背后VREF rules想法是:

  • 每refex在适用于该用户的规则开始VREF/FOO/,就会触发一个叫做FOO程序的调用。 请注意,如果VREF规则不适用于该用户,则甚至不会调用该程序。

这就是为什么我们可以定义即使update hook is reserved by gitolite的“update”挂钩。
正常的update hook需要3个参数(ref,old SHA,new SHA)。
任何VREF都会得到这三个,然后是至少4个。你的'update'VREF应该忽略额外的参数。

  • fallthru正在考虑成功(即你不会在回购否认了混帐操作,因为应用没有VREF的)
    如果fallthru将被认为是“失败”,你会被迫添加一个“成功法则”像这样对每个VREF你在这个回购使用,在每种情况下上市谁是不是已经在VREF

考虑的上下文中提及的每个用户VREF程序,你可以添加一个参数,这样可以让你的更新脚本来识别它是在gitolite-admin上下文调用(应该什么都不做):

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

repo @all 
- VREF/update = @all 
+0

看起来这将工作 - 希望的东西更清洁,但是这有道理 – 2012-07-20 04:16:20

+0

不适合我,'VREF/update'被调用到处。 – Vorac 2016-11-29 11:51:24