![Descubra el compromiso combinado en el gancho prepare-commit-msg](https://rvso.com/image/1452859/Descubra%20el%20compromiso%20combinado%20en%20el%20gancho%20prepare-commit-msg.png)
Intenté crear un prepare-commit-msg
gancho que funcione para confirmaciones de fusión. Al script se le pasan los siguientes argumentos .git/MERGE_MSG
, merge
.
Necesito obtener el hash o el nombre de la rama de la confirmación fusionada (para una fusión normal, sin pulpo). Sé que puedo hacer git rev-parse MERGE_HEAD
para obtener el hash o name-rev --name-only MERGE_HEAD
el nombre de la rama (si corresponde).
Sin embargo, parece que prepare-commit-msg
se llama antes de que se cree MERGE_HEAD. ¿Existe alguna otra forma de saber qué confirmación se fusionó sin analizar el mensaje generado automáticamente?
Estoy usando git 2.4.0.
Respuesta1
En un controlador de fusión personalizado, el nombre de la rama que se fusiona (destino) se puede recuperar git symbolic-ref HEAD
y el nombre de la rama que se fusiona (fuente) de la
GITHEAD_<SHA>
variable de entorno,
Este es un fragmento de script de ejemplo:
# retrieve merged branch name from an env var GITHEAD_<sha>=<branchName>
# we cannot use a sym ref of MERGE_HEAD, as it doesn't yet exist
gitHead=$(env | grep GITHEAD) # e.g. GITHEAD_<sha>=release/1.43
# cut out everything up to the last "=" sign
source="${gitHead##*=}"
# retrieve base branch name from a sym ref of HEAD
branch=$(git symbolic-ref HEAD) # e.g. refs/heads/master
# cut out "refs/heads"
destination="${branch#refs/heads/}"
echo "Merging from $source into $destination"
Fuente :¿Cómo recuperar nombres de sucursales en un controlador de combinación Git personalizado?.