git - tab - ¿Por qué Gerrit no incluye el cambio de id en las combinaciones de mezcla?
how to tag on git (1)
así que el gancho de git solo pone el ID de cambio en confirmaciones. Aunque las confirmaciones de combinación pueden ser empujadas para revisar la sucursal, incluso Gerrit está configurado para requerir Cambio-Id en los mensajes de confirmación. Y cuando se ha enviado una confirmación de combinación, toda la confirmación posterior dependerá de la confirmación de combinación, ya que no hay ID de cambio. Entonces, ¿cuál es el propósito de no incluir la Id. De cambio en la confirmación de fusión?
El problema subyacente en Git es que commit-msg
no se llaman para realizar combinaciones de mezcla sin conflictos.
Sin embargo, se llama a prepare-commit-msg
para (cualquier) confirmación de fusión. Entonces, lo que actualmente hago para que el Change-Id
de Change-Id
de Gerrit también se agregue para fusionar confirmaciones sin conflictos es usar un gancho de prepare-commit-msg
como este:
#!/bin/sh
if [ "$2" = "merge" -a -f .git/MERGE_MSG ]; then
# Explicitly call Gerrit''s commit-msg hook for merge commits.
.git/hooks/commit-msg "$1"
fi
La comprobación de .git/MERGE_MSG
garantiza que no se llamará a commit-msg
si se modifica una confirmación de fusión, porque en ese caso Git llama a ese gancho directamente. Tenga en cuenta que para los compromisos de combinación con conflictos, este enfoque hará que se invoque commit-msg
dos veces, una vez como parte de este gancho de prepare-commit-msg
y una vez por Git cuando llama a commit-msg
después de commit-msg
la resolución de conflictos, pero no causar problemas, ya que el enlace commit-msg
Gerrit comprueba si el Change-Id
ya se ha agregado y no lo vuelve a agregar si ese es el caso.
Si ahora te estás preguntando por qué Gerrit no usa simplemente un prepare-commit-msg
para agregar la Change-Id
, supongo que solo para evitar que el usuario elimine accidentalmente la Change-Id
de cambio del mensaje de confirmación. Agregarlo como parte de un commit-msg
después de que el editor se haya cerrado es más seguro.