如何在不使用gitolite的情况下防止git中的远程分支删除

时间:2013-10-10 10:24:25

标签: linux git

有没有办法阻止删除远程分支?

我想阻止删除远程分支,但像代码检查和检出的正常流程应该可以正常工作!!

不使用gitolite!有可能吗?

请帮忙!

3 个答案:

答案 0 :(得分:2)

是的,有可能。只需添加一个合适的服务器端git hook。

您可能想要使用预接收挂钩。有关详细信息,请查看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

答案 1 :(得分:2)

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

在update hook中添加这个解决了我的问题 希望这也能帮助其他人

答案 2 :(得分:0)

我不确定你为什么要避免使用gitolite(这是所有访问控制的终点),但我有一个使用钩子的示例预接收脚本here。 * git config条目来做一些简单的访问控制。它不像gitolite那么华丽,但它做了一些我关心过的事情。 : - )