Eu tentei criar um prepare-commit-msg
gancho que funciona para commits de mesclagem. O script recebe os seguintes argumentos .git/MERGE_MSG
.merge
Preciso obter o hash ou o nome do branch do commit mesclado (para uma mesclagem normal, sem polvo). Eu sei que posso fazer git rev-parse MERGE_HEAD
para obter o hash ou name-rev --name-only MERGE_HEAD
o nome da filial (se houver).
No entanto, parece que prepare-commit-msg
é chamado antes da criação de MERGE_HEAD. Existe alguma outra maneira de saber qual commit foi mesclado antes de analisar a mensagem gerada automaticamente?
Estou usando o git 2.4.0.
Responder1
Em um driver de mesclagem personalizado, o nome da ramificação que está sendo mesclada (destino) pode ser recuperado git symbolic-ref HEAD
e o nome da ramificação que está sendo mesclada (origem) da
GITHEAD_<SHA>
variável de ambiente,
Este é um exemplo de fragmento de script:
# 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"
Fonte :Como recuperar nomes de filiais em um driver de mesclagem Git personalizado?.