Gitolite更新钩子排除一个仓库。

3

我正在将一个gitolite更新挂钩添加为VREF,并想知道是否有一种方法可以将其应用于除gitolite-admin之外的所有存储库。

如果有比列出我想要应用挂钩的所有存储库更简单的方法,那就太好了。

目前我的做法是:

repo @all
-    VREF/update    =   @all

我在考虑为gitolite-admin存储库添加一个异常处理。类似这样的内容:
repo gitolite-admin
RW+  VREF/update    =   @all

repo @all
-    VREF/update    =   @all

有没有办法让这样的规则生效?谢谢帮助!(我尝试了这种方法,但似乎不起作用)
1个回答

3

对于不熟悉VREF(在"g3"或Gitolite V3中引入)的其他读者。

VREF规则背后的想法是:

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

这就是为什么可以定义一个“更新”钩子,即使update钩子被Gitolite保留
普通的update钩子期望3个参数(ref、旧SHA和新SHA)。
任何VREF都将获得这三个参数,然后是至少4个以上的参数。你的“更新”VREF应该忽略额外的参数。

  • fallthru被认为是成功的(即如果没有应用任何VREF,你将不会被拒绝对repo进行git操作)
    如果把fallthru视为“失败”,则必须为你在此repo中使用的每个vref添加一个“成功规则”,在每种情况下列出每个未在该vref上下文中提到的用户

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

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

repo @all
-  VREF/update    =   @all

看起来这个可以用 - 希望有更简洁的方法,但这样也说得通。 - N V
对我没用,VREF/update 在任何地方都被调用了。 - Vorac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接