Descobrir consolidação consolidada no gancho prepare-commit-msg

4

Eu tentei criar um prepare-commit-msg hook que funciona para confirmações de mesclagem. O script recebe os seguintes argumentos .git/MERGE_MSG , merge .

Eu preciso obter o nome de hash ou ramificação da consolidação mesclada (para uma mesclagem normal, não-octopus). Eu sei que posso fazer git rev-parse MERGE_HEAD para obter o hash ou name-rev --name-only MERGE_HEAD para obter o nome da ramificação (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.

    
por Raphael Schweikert 04.06.2015 / 10:45

1 resposta

7

Em um driver de mesclagem personalizado, o nome do filial sendo mesclada em (destino) pode ser recuperada com git symbolic-ref HEAD e o nome do ramo que está sendo mesclado em (fonte) do variável de ambiente GITHEAD_<SHA> ,

Este é um fragmento de script de exemplo:

# 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 personalizado do Git? .

    
por 10.06.2015 / 10:22

Tags