2012-07-16 54 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