2016-01-11 3 views
5

A fa in modo che tutto il cloni il repository git. Voglio sapere qual è l'hash di commit e assegnare l'hash commit git a una variabile che può essere utilizzata successivamente nel MakefileIn un Makefile, come posso recuperare e assegnare un hash di commit git a una variabile?

ad es.

all: download 
     echo '$(GIT_COMMIT)' 

download: 
     cd buildarea && git clone [email protected]:proj/project.git 
     $(eval GIT_COMMIT = $(shell cd buildarea/project && git log -l --pretty=format:"%H")) 
     echo '$(GIT_COMMIT)' 
+0

1) Come si ottiene l'hash * senza * Make (cioè utilizzando git direttamente) e 2) si è disposti a memorizzare l'hash in un file? – Beta

+0

1) Uso un "git log -1 --pretty = formato:"% H "2) È davvero l'unico modo? – user2569618

+0

Qual è la tua domanda effettiva (poiché l'argomento della domanda viene risposto all'intera domanda completa)? Ci sono _multiple_ modi per ottenere l'hash del commit più recente, e il tuo va bene – Guildencrantz

risposta

1

Come utilizzare la funzione shell e 2 target per esso?

all: download getver 

getver: VER=$(shell cd buildarea/project && git log -1 --pretty=format:"%H") 
getver: 
     @echo GIT_COMMIT=$(VER) 

download: 
     mkdir -p buildarea && cd buildarea && [email protected]:proj/project.git 
+0

L'unico mod che devo fare è 'getver: $ (eval GIT_COMMIT = $ (shell cd buildarea/project && git log -1 --pretty = formato:"% H ")' – user2569618

0

Non so esattamente perché, ma sembra che dopo la git clone$(shell) è in grado di cd nella directory. Quello che puoi fare è semplicemente eseguire l'intero atto in una singola chiamata $(shell).

all: download 
     echo '$(GIT_COMMIT)' 

download: 
     $(eval GIT_COMMIT = $(shell git clone [email protected]:proj/project.git buildarea/project && cd buildarea/project && git rev-parse HEAD)) 
     echo '$(GIT_COMMIT)' 
Problemi correlati