2011-05-10 20 views
4

我剛剛寫了一個小預執行鉤子來執行我的自定義操作。我的中央存儲庫位於Solaris服務器上並啓用了HTTP。爲什麼我的Git沒有在克隆的倉庫中預先提交鉤子觸發器?

/apps/opt/git/myrepo.git 

我編輯pre-commit鉤子和改性如下:

#!/bin/sh -x 
if [ $LOGNAME -ne bala ]; then 
    echo "You are not allowed" 
    exit 1; 
fi 

如果我克隆該存儲庫和使用其他用戶執行提交操作,它不提供任何信息,並提交它。 爲什麼我的提交不會調用pre-commit鉤子?

另外我還可以在我的.git/hooks目錄下的克隆回購目錄中看到「pre-commit」掛鉤沒有,我只能看到默認模板。

任何人都可以幫忙嗎?

+0

的確從baluchen幫你解決問題的技巧需要pre-receive?如果是,您是否可以接受解決方案(使用複選標記按鈕)? – 2011-08-28 16:14:14

回答

5

答案在這裏的幾個要素:

  • 鉤不通過克隆繁殖,他們純粹是本地的回購
  • 如果你克隆你定義一個鉤子回購,你不會找到說鉤
  • 如果你想防止你的本地回購提交,你需要一個pre-commit(就像你做的)本地回購。確保它是可執行的。
  • ,如果你想阻止任何承諾在任何人,但「巴拉」做
  • ,你在服務器端
+0

VonC,感謝您的更新。我不知道鉤子從來沒有克隆過。 有沒有辦法阻止用戶刪除這個鉤子?我想把這些鉤子放在中央位置。 Apprciate如果您可以提供可能的方式來共享掛鉤腳本。 – baluchen 2011-05-10 09:31:12

+0

@baluchen:這就是爲什麼我提到像「pre-receive」這樣的服務器端鉤子的原因:你無法阻止用戶在他/她的本地倉庫中執行他/她想要的任何操作。但是如果所提交的內容不符合某些標準,至少您可以拒絕提交給您的中央回購的提交。 – VonC 2011-05-10 10:22:47

+0

謝謝VonC。我會嘗試這個選項 – baluchen 2011-05-10 13:51:10