Git分支删除-HOOK

3

我已经阅读了很多关于保护远程分支的文章...

然而,我想在一个Git钩子中捕获以下本地仓库命令:

git branch -d abranchthatshouldnotbedeleted

我想要钩住那条命令,并且与我做好的“受保护分支”列表文件进行分析,然后进行简单的检查来允许或拒绝删除操作。
我的某些分支现在处于被管理的状态,必须得到保护。

“Certain branches of mine are now locked in a stated where they are managed now and must be protected.”这句话是什么意思?你还能够对这些分支进行提交吗? - adamdunson
2个回答

1

Git目前没有钩子可以用来实现您想要的功能。请参阅git help hooks以获取可用钩子列表。

您可能需要考虑其他方法。例如,您可以在包装脚本或shell函数中包装git,并进行自己的解析以防止您删除分支:

git() {
    [ "${1}" != branch ] ||
    { [ "$2" != -d ] && [ "$2" != -D ]; } ||
    case $3 in
        abranchthatshouldnotbedeleted) false;;
        *) true;;
    esac ||
    { printf %s\\n "ERROR: branch $3 must not be deleted" >&2; exit 1; }
    command git "$@"
}

上述的 shell 函数相当原始,无法处理像 git --git-dir=/foo.git branch -d abranchthatshouldnotbedeleted 这样的调用,但你明白了。也许你可以使用 git rev-parse --parseopt 使其更加健壮。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接