2013-10-10 44 views

回答

2

是的,這是可能的。只需添加一個合適的服務器端git鉤子。

您可能想要使用預接收鉤子。詳情請看herehere

例子:

#create repositories 
git init a 
git init --bare b 

#add the hook in "b" 
echo -e '#!/usr/bin/bash\nread old new ref\ntest $new != 0000000000000000000000000000000000000000' >>b/hooks/pre-receive 
chmod +x b/hooks/pre-receive 

#create a commit in "a" 
cd a 
echo foo >test 
git add . 
git commit -m testcommit 

#push it to "b" 
git push ../b master 

#try to delete remote branch 
git push ../b :master 
0

我不知道爲什麼你避免gitolite(這是排序的所有訪問控制的終點,因爲它是),但我有一個樣品前收到使用鉤子的腳本here * git config條目做一些簡單的訪問控制。它不像gitolite那樣華麗,但它有一些我關心的事情。 :-)

+0

'注:勉強TESTED'好,這激發信心=)。國際海事組織使用gitolote或類似的,當它不是必要的只是浪費精力/時間;當你需要的只是一個鉤子 - 改變一切是一種非常干擾的方式來實現這一點。 – AD7six

2
refs/heads/*,delete) 
     # delete branch 
       if [ "$allowdeletebranch" != "true" ]; then 
       echo "*** Deleting a branch is not allowed in this repository" >&2 
        exit 1 
       fi 

添加此更新中的鉤解決我的問題 希望這會幫助別人太