¿Hay alguna manera de bloquear una sucursal en GIT?

Tengo una idea de bloquear un repository de los usuarios que insertan files en él al tener un script de locking en el gancho de actualización de GIT ya que el impulso solo puede reconocer el ID de usuario como arguments y no como las twigs. Así que puedo bloquear todo el repository que solo está bloqueando un directory.

¿Hay alguna manera de bloquear una twig específica en GIT?

¿O hay alguna forma de que Update Hook pueda identificar desde qué twig está presionando el usuario y a qué twig se inserta el código?

La twig a la que se presiona es el primer parámetro del gancho de actualización . Si desea bloquear la twig myfeature para presionar, este código (colocado en hooks/update ) lo hará:

 #!/bin/sh # lock the myfeature branch for pushing refname="$1" if [[ $refname == "refs/heads/myfeature" ]] then echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" echo "You cannot push to myfeature! It's locked" echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" exit 1 fi exit 0 

El gancho de actualización, de los documentos:

El gancho se ejecuta una vez para cada reference que se actualizará y toma tres parameters:

  • el nombre de la reference que se actualiza,
  • el antiguo nombre de object almacenado en el ref,
  • y el nuevo nombre de object que se almacenará en la ref.

Entonces … sí, sabe exactamente qué twig se está presionando, y simplemente puede verificar ese parámetro y salir de la falla si no quiere que se presione la twig.

Y si desea (inteligentemente) hacer esto antes de que el usuario haya subido los objects, puede usar el gancho de pre-recepción:

Este gancho se ejecuta una vez para la operación de recepción. No requiere arguments, pero para cada ref que se actualice, recibe en la input estándar una línea del formatting:

<old-value> SP <new-value> SP <ref-name> LF

donde <old-value> es el antiguo nombre del object almacenado en el ref, <new-value> es el nuevo nombre del object que se almacenará en el ref y <ref-name> es el nombre completo del ref.

(esos son espacios y line-feed)

Una herramienta como la gitolita tiene este tipo de característica, creo: http://github.com/sitaramc/gitolite