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
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.
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])
Parece interesante. Pero sin ninguna información sobre qué idioma es o algo más, esto no es muy útil. – conradkdotcom
Esto está en Python. – ArekBulski
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
- 1. Mercurial Hook: cambie un mensaje de confirmación precompromiso
- 2. git hook sintaxis check
- 3. usando git hook después del commit
- 4. Edición del mensaje de confirmación de git en GitHub
- 5. Cambiar el mensaje de confirmación anterior en Git
- 6. git post-push hook?
- 7. Mensaje de confirmación de impresión de una confirmación determinada en git
- 8. ¿Cómo edito el mensaje de confirmación de cualquier confirmación en git?
- 9. Confirmación de empuje accidental: cambiar el mensaje de confirmación de Git
- 10. Git push all commits como confirmación única con mensaje personalizado
- 11. Tamaño máximo de mensaje de confirmación
- 12. ^M caracteres en el mensaje de confirmación de git (git commit -v)
- 13. Obtener la última confirmación del repositorio de Git
- 14. Cómo propagar GIT Hook mientras clono
- 15. Git hook para conflictos de combinación
- 16. ¿Hay alguna forma de obtener el SHA de una confirmación a partir de su mensaje?
- 17. ¿Cómo detengo una confirmación de Git cuando VI está en la pantalla esperando un mensaje de confirmación?
- 18. Git deshacer última confirmación
- 19. Cómo obtener etiquetas en la confirmación actual
- 20. ¿Qué usuario ejecuta el git hook?
- 21. ¿Cómo puedo cambiar los comentarios predeterminados en el mensaje de confirmación de git?
- 22. Obtener git para nunca presionar una sola confirmación?
- 23. ¿Cambiar el mensaje de confirmación SVN retroactivamente?
- 24. CQRS: ¿cuándo enviar un mensaje de confirmación?
- 25. Confirmación de GitHub con mensaje extendido
- 26. Editar un mensaje de confirmación incorrecto en Git que ya ha sido empujado
- 27. Mercurial pre commit hook
- 28. División de la primera confirmación en git
- 29. git: mejor forma de revertir git sin confirmación revertida adicional
- 30. Git: fusionar conflicto y cometer mensaje
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'. –