Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在不使用gitolite的情况下防止git中的远程分支删除_Linux_Git - Fatal编程技术网

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

Linux 如何在不使用gitolite的情况下防止git中的远程分支删除,linux,git,Linux,Git,有没有办法阻止删除远程分支 我想阻止远程分支的删除,但是像代码检查和签出这样的正常流程应该可以正常工作 不使用gitolite!可能吗 请帮忙 是的,这是可能的。只需添加一个合适的服务器端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

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

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

不使用gitolite!可能吗


请帮忙

是的,这是可能的。只需添加一个合适的服务器端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 +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

我不知道为什么要避免使用gitolite(它可以说是所有访问控制的终点),但我有一个示例预接收脚本,它使用hooks.*git config条目来执行一些简单的访问控制。它不像gitolite那么花哨,但它做了一些我曾经关心过的事情。:-)

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

注意:几乎没有经过测试
嗯,这会激发信心=)。IMO在不必要时使用gitolote或类似产品纯粹是浪费精力/时间;当你只需要一个钩子的时候——改变一切是一种非常侵入性的方式来实现这一点。
 refs/heads/*,delete)
       # delete branch
              if [ "$allowdeletebranch" != "true" ]; then
                echo "*** Deleting a branch is not allowed in this repository" >&2
                    exit 1
                fi