Deshabilitar eliminación de label

Tengo un repository central simple en el que un equipo publica (push) sus commits. En este repository principal, deseo desactivar la eliminación y el cambio de nombre de la label.

¿Hay una solución como un gancho o algo así?

git help hooks contienen documentation sobre los ganchos. El gancho de update se invoca cuando Git está a punto de crear / mover / eliminar una reference. Se llama una vez por reference para ser actualizado, y se da:

  • 1.er argumento: el nombre de reference (p. Ej., Refs / tags / v1.0)
  • Segundo argumento: SHA1 del object donde la reference apunta actualmente (todos ceros si la reference no existe actualmente)
  • 3er argumento: SHA1 del object donde el usuario quiere la reference al punto (todos ceros si la reference debe ser eliminada).

Si el hook sale con un código de salida distinto de cero, git no actualizará la reference y el usuario obtendrá un error.

Entonces, para abordar su problema en particular, puede agregar lo siguiente a su gancho de update :

 #!/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