2009-11-18 20 views

Respuesta

40

Configuración de las variables de configuración:

receive.denyNonFastForwards 
receive.denyDeletes 

evitará cualquier 'forzado' empuja a trabajar en todas las ramas.

Si desea un mejor control de preasignación, tendrá que utilizar un 'gancho' en el repositorio remoto, probablemente el gancho de 'actualización'.

Hay un gancho de actualización de muestra llamado 'update-paranoid' que probablemente hace lo que necesita (y más) en la distribución de git en la carpeta 'contrib'.

gitweb link

+3

1 para el gancho (versión en bruto: http://git.kernel.org/?p=git/git.git;a=blob_plain;f=contrib/hooks/update-paranoid;hb=080cbc1275ac09445136ba429d90b5ec85e92c1c) – VonC

+4

cualquier forma de hacer esto para GitHub? –

+0

'update-paranoid' en GitHub: https://github.com/git/git/blob/master/contrib/hooks/update-paranoid – go2null

1

escribí este gancho actualización rápida para evitar cambios no avance rápido (empuja) en la rama "dev" en un repositorio:

#!/bin/sh 

REFNAME=$1 
OLDSHA=$2 
NEWSHA=$3 

if [ "refs/heads/dev" != $REFNAME ]; then 
    exit 0 
fi 

MERGEBASE=$(git merge-base $OLDSHA $NEWSHA) 
if [ $OLDSHA = $MERGEBASE ]; then 
    exit 0 
fi 

echo "Not a fast-forward on branch dev" 
exit 1 
0

Github ya se ha introducido el concepto de ramas protegidas!

Se puede encontrar en Settings -> Branches -> Protected Branches. La función ahora está disponible para todos los usuarios, ¡no solo para empresas!

Esta "protección" se puede habilitar para cualquier sucursal y para cualquier usuario, incluidos los administradores.

Más detalles aquí - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/

Así que no hace falta más ganchos y código arbitrario.

Cuestiones relacionadas