禁止删除git中的master分支 [英] Disallow deletion of master branch in git
本文介绍了禁止删除git中的master分支的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试设置一个git钩子,该钩子将禁止任何人删除我们存储库中的master
,alpha
和beta
分支.有人能帮忙吗?我从来没有做过git hook,所以我不想在没有一点帮助的情况下尝试自己开发自己的运气.
I’m trying to setup a git hook that will disallow anyone to delete the master
, alpha
, and beta
branches of our repository. Can anyone help with this? I have never done a git hook, so I don’t want to try my luck in developing my own without a little help.
推荐答案
带有pre-receive
钩子的简单明了.假设您使用的是裸露的中央存储库,请将以下代码放置在chmod +x your-repo.git/hooks/pre-receive
.
Straightforward with a pre-receive
hook. Assuming you're using a bare central repository, place the following code in your-repo.git/hooks/pre-receive
, and don't forget to chmod +x your-repo.git/hooks/pre-receive
.
#! /usr/bin/perl
# create: 00000... 51b8d... refs/heads/topic/gbacon
# delete: 51b8d... 00000... refs/heads/topic/gbacon
# update: 51b8d... d5e14... refs/heads/topic/gbacon
my $errors = 0;
while (<>) {
chomp;
next
unless m[ ^
([0-9a-f]+) # old SHA-1
\s+
([0-9a-f]+) # new SHA-1
\s+
refs/heads/(\S+) # ref
\s*
$
]x;
my($old,$new,$ref) = ($1,$2,$3);
next unless $ref =~ /^(master|alpha|beta)$/;
die "$0: deleting $ref not permitted!\n"
if $new =~ /^0+$/;
}
exit $errors == 0 ? 0 : 1;
这篇关于禁止删除git中的master分支的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文