3

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

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

目前我有:

repo @all
-    VREF/update    =   @all

我正在考虑为 gitolite-admin 存储库添加一个例外。就像是:

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

repo @all
-    VREF/update    =   @all

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

4

1 回答 1

3

仅适用于其他不太熟悉的读者VREF(以“g3”或 Gitolite V3介绍)。

VREF 规则背后的理念是:

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

这就是为什么人们可以定义一个 ' update' 钩子,即使该update钩子是由 gitolite 保留的
一个普通的update钩子需要 3 个参数(参考、旧 SHA、新 SHA)。
任何 VREF 都会获得这三个,然后至少再获得 4 个。您的 ' update' VREF 应该忽略额外的参数。

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

考虑到updateVREF 程序,您可以添加一个参数,让您的更新脚本识别它在gitolite-admin上下文中被调用(并且应该什么都不做):

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

repo @all
-  VREF/update    =   @all
于 2012-07-17T06:30:41.807 回答