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

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

我想阻止删除远程分支,但正常的stream程,如代码检查和签出应该工作正常!

不使用gitolite! 可能吗 ?

请帮忙 !

Solutions Collecting From Web of "如何在不使用gitolite的情况下防止git中的远程分支删除"

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

你可能想要使用预接收钩子。 有关详情,请看这里或这里 。

例:

#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 +xb/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配置项来做一些简单的访问控制。 它不像gitolite那样华丽,但它做了一些我曾经关心的事情。 🙂

Gitlab用户可以配置受保护的分支 :

配置受保护的分支

为了保护分支机构,您至少需要拥有Master权限级别。 请注意,主分支默认保护。

  1. 导航到您的项目的设置➔资源库

  2. 滚动以查找受保护的分支部分。

[…]