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



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

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

不使用Gitolite!可能吗?

请帮忙 !

是的,这是可能的。只需添加一个合适的服务器端 git 钩子。

您可能希望使用预接收挂钩。有关详细信息,请查看此处或此处。

例:

#create repositories
git init a
git init --bare b
#add the hook in "b"
echo -e '#!/usr/bin/bashnread old new refntest $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
 refs/heads/*,delete)
       # delete branch
              if [ "$allowdeletebranch" != "true" ]; then
                echo "*** Deleting a branch is not allowed in this repository" >&2
                    exit 1
                fi

在更新钩子中添加它解决了我的问题希望这也能帮助其他人

我不确定你为什么要避免使用gitolite(它可以说是所有访问控制的终点(,但我这里有一个使用钩子的示例预接收脚本。 git 配置条目来执行一些简单的访问控制。 它不像吉托石那样花哨,但它做了一些我曾经关心过的事情。:-)

最新更新