Disable tag deletion

前端 未结 1 1601
抹茶落季
抹茶落季 2020-12-05 19:24

I have a central bare repository in which a team publish (push) their commits. In this main repository, I want to disable the tag deletion and renaming.

Is there a s

相关标签:
1条回答
  • 2020-12-05 19:50

    git help hooks contains documentation about the hooks. The update hook is invoked when Git is about to create/move/delete a reference. It is called once per reference to be updated, and is given:

    • 1st argument: the reference name (e.g., refs/tags/v1.0)
    • 2nd argument: SHA1 of the object where the reference currently points (all zeros if the reference does not currently exist)
    • 3rd argument: SHA1 of the object where the user wants the reference to point (all zeros if the reference is to be deleted).

    If the hook exits with a non-zero exit code, git won't update the reference and the user will get an error.

    So to address your particular problem, you can add the following to your update hook:

    #!/bin/sh
    
    log() { printf '%s\n' "$*"; }
    error() { log "ERROR: $*" >&2; }
    fatal() { error "$*"; exit 1; }
    
    case $1 in
        refs/tags/*)
            [ "$3" != 0000000000000000000000000000000000000000 ] \
                || fatal "you're not allowed to delete tags"
            [ "$2" = 0000000000000000000000000000000000000000 ] \
                || fatal "you're not allowed to move tags"
            ;;
    esac
    
    0 讨论(0)
提交回复
热议问题