2011-03-22 16 views
12

Me gustaría verificar el mensaje de confirmación antes de la confirmación de git. Utilizo el enlace precompromiso para hacer eso, pero no pude encontrar la manera de obtener el mensaje de confirmación en el script .git/pre-commit. ¿Cómo podría obtenerlo?obtener mensaje de confirmación en git hook

Respuesta

18

En el gancho precompromiso, el mensaje de confirmación aún no se ha creado. Probablemente desee utilizar uno de los ganchos prepare-commit-msg o commit-msg en su lugar. Hay un nice section in Pro Git en el orden en que se ejecutan estos enlaces, y lo que normalmente podría hacer con ellos.

+1

Tenga en cuenta que estos son scripts del lado del cliente, para el script del lado del servidor, es posible que necesite usar 'pre-receive'. –

0

Puede hacer lo siguiente en un gancho pre-receive (para el lado del servidor), y eso mostrará la información de revisión.

old, new, branch = sys.stdin.read().split() 
proc = subprocess.Popen(["git", "rev-list", "--oneline","--first-parent" , "%s..%s" %(old, new)], stdout=subprocess.PIPE) 
commitMessage=str(proc.stdout.readlines()[0]) 
+4

Parece interesante. Pero sin ninguna información sobre qué idioma es o algo más, esto no es muy útil. – conradkdotcom

+1

Esto está en Python. – ArekBulski

3

Implementé esto en el gancho commit-msg. Ver documentation.

commit-msg 
This hook is invoked by git commit, and can be bypassed with the --no-verify option. 
It takes a single parameter, the name of the file that holds the proposed commit log message. 
Exiting with a non-zero status causes the git commit to abort. 

Bajo my_git_project/.git/hooks, he añadido este archivo commit.msg (tiene que ser este nombre). Agregué el siguiente contenido bash dentro de este archivo que hizo la validación.

#!/usr/bin/env bash 
INPUT_FILE=$1 
START_LINE=`head -n1 $INPUT_FILE` 
PATTERN="^(MYPROJ)-[[:digit:]]+: " 
if ! [[ "$START_LINE" =~ $PATTERN ]]; then 
    echo "Bad commit message, see example: MYPROJ-123: commit message" 
    exit 1 
fi 
Cuestiones relacionadas