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