git help hooks
contiene documentación sobre los ganchos. El gancho update
se invoca cuando Git está a punto de crear/mover/eliminar una referencia. Se llama una vez por referencia a actualizarse, y se le da:
- primera argumento: el nombre de referencia (por ejemplo, refs/etiquetas/v1.0)
- segundo argumento: SHA1 del objeto donde la referencia actualmente puntos (todos ceros si la referencia no existe actualmente)
- 3er argumento: SHA1 del objeto donde el usuario quiere la referencia al punto (todos ceros si la referencia se va a eliminar).
Si el gancho sale con un código de salida distinto de cero, git
no actualizará la referencia y el usuario recibirá un error.
Así que para hacer frente a su problema particular, se puede añadir lo siguiente a su update
gancho:
#!/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
Es posible que desee vincular a los documentos o explicar más acerca de cómo esto se integra. – Daenyth
@Daenyth: ¡Actualizado, gracias! –
Mucho mejor, +1! – Daenyth