2012-06-15 29 views
1

我想添加一個提交鉤子,它只在gitolite/git服務器上收到一個給定分支和回購組合的分支時才起作用(分支'cat'回購'狗')。gitolite中的per-branch,per-repo提交鉤子

我的環境: Git版本1.7.4.1,

我迄今所做的:

  1. 感動在/home/git/repositories/dog.git/hooks/post-receive.secondary混帳/ gitolite服務器上的文件。

  2. 編輯的文件與內容:

    #!/bin/sh 
    # 
    refname="$1" 
    oldrev="$2" 
    newrev="$3" 
    if [ "$refname" == "refs/heads/cat" ] 
    then 
        touch /tmp/test 
    fi 
    
  3. 設置文件的所有者的git用戶

  4. 設置文件權限,以700

  5. 做過致力於「狗」回購的「貓」分支

個結果: 測試文件不創建

+0

如果在腳本中添加回顯,是否顯示?你有gitolite v2或v3嗎? – VonC

+0

@VonC - 來自src/CHANGELOG我相信我正在運行v2.0,但是我找不到要執行的二進制文件來驗證這一點。我將檢查腳本中的echo命令並很快做出響應 – specialsauce

+0

簡單:如果在gitolite中有「gl-xxx」命令,則這是V2。 – VonC

回答

1

如果我看Gitolite v2 (g2) hook chaining section,只有兩個鉤子關心「.secondary」擴展名:

  • update掛鉤,因爲它是在所有的回購使用,對gitolite的訪問控制至關重要
  • 更新後的掛鉤,因爲它僅用於gitolite-admin回購,用於「編譯」配置等等。

  • post-receive如果鏡像激活,才能參與,這不應該是你gitolite安裝的情況下)

所以,你不應該需要申報post-receive.secondary,只是在一個post-receive鉤您的</path/to/gitolite>/hooks/common/,如「How to install hooks in gitolite」中所述。


OP specialsauce總結評價:

我需要在儲存庫中的文件夾(而不是次要之一)a post-receive鉤,我認爲是,它不執行的主要原因。

我最後改變的唯一的其他事情我認爲是從700(本來應該很好?)設置燙髮到755
掛鉤現在可靠地執行。我不需要運行gl-setup腳本。此外,我從上面列出的var分配代碼更改爲STDIN上的「while」。

+0

有一個'post-receive.mirrorpush'符號鏈接,這就是我使用'.secondary'文件名的原因。關於把鉤子放入'/hooks/common /'中,我明確希望這個鉤子只對提交到一個倉庫有效,而我在相同位置的鉤子會觸發提交到任何存儲庫 – specialsauce

+0

@ user1459145不,您應該使用.secondary,因爲有一個'post-receive.mirrorpush':文檔很清楚:「作爲'post-receive.mirrorpush'發貨,它被重命名爲''post - 接收'並作爲鏡像設置的一部分安裝「:如果您沒有看到」後接收「,則可以創建自己的。 – VonC

+0

感謝您的澄清。但是,我已將該文件移至'post-receive'並運行第二次提交,並且仍然看不到創建的臨時文件。 – specialsauce