2012-12-13 50 views
5

我正在嘗試從v2遷移到v3的gitolite。做服務器端提交消息檢查的舊方法是將檢查放入一個特定於repo的鉤子中:myrepo.git/hooks/update.secondary使用gitolite VREFs進行更新hook

在gitolite的v3中,他們建議將檢查置於VREF。該文件有點混亂,我希望澄清。

我已經添加在/home/git/.gitolite.rc

LOCAL_CODE     => "$ENV{HOME}/.gitolite/our_hooks", 

在我our_hooks目錄下面,我創建了一個文件夾,VREF,並把我的老update.secondary腳本在那裏。在我gitolite管理員/ conf目錄/文件gitolite.conf,我增加了以下我要的腳本來執行存儲庫上:

repo myrepo 
    RW = @my_developers 
    - VREF/update.secondary = @my_developers 

當我嘗試推,我得到的通知是,VREF /更新。secondary不能被找到。如果我更改爲

repo myrepo 
    RW = @my_developers 
    - /home/git/.gitolite/our_hooks/VREF/update.secondary = @my_developers 

我沒有收到任何投訴,但掛鉤似乎沒有運行。

我錯過了如何獲得額外的更新檢查使用gitolite運行的船嗎?

回答

4

圍繞這個的文檔有點令人困惑,所以希望這可以幫助其他人嘗試使用gitolite v3獲得鏈式更新掛鉤。

我上面所做的一切都是正確的,缺少的是我的update.secondary腳本需要駐留。

在gitolite管理員/ conf目錄/ gitolite.conf,配置應該是這樣的:

repo myrepo 
    RW = @my_developers 
    - VREF/update.secondary = @my_developers 

再有就是在GL_BINDIR目錄VREF目錄。將您的可執行文件update.secondary文件放在該目錄中。

的GL_BINDIR是包含你才能運行跑gitolite二進制文件的目錄:gitolite setup

+2

+1 gitolite文檔是不可穿透的... –

+1

謝謝。我在VREFs目錄中使用了一個符號鏈接到hook/common中的update.secondary,然後在每個repo中搜索並運行update.secondary。應該是默認功能恕我直言。 –

+0

但我怎樣才能爲每個項目運行一個單獨的鉤子?我怎樣才能從gitolite-admin存儲庫管理它?提前致謝 –

0

爲了增加(upvoted)OP nathasmanswer,我在我的.gitolite.rc文件中使用LOCAL_CODE變量沒問題如「customising gitolite」的「備用地點」部分所述。

但是,我從來沒有設法使用環境變量。

換句話說,這是不行的:

LOCAL_CODE     => "$ENV{HOME}/.gitolite/our_hooks", 

但這會:

LOCAL_CODE     => "/home/git/.gitolite/our_hooks", 

使用完整路徑意味着任何VREF或鉤在/ home/git的/聲明。 gitolite/our_hooks/VREF將被識別

repo myrepo 
    RW = @my_developers 
    - VREF/update.secondary = @my_developers