2016-07-24 16 views
1

Ich habe bereits einige Bash-Code, der den aktuellen Git-Zweig-Namen erkennt, und ich möchte dies in Makefile portieren.Wie erkennt man Git-Zweig-Namen aus einem Makefile?

if [ -z ${GIT_BRANCH+x} ]; then 
    if [ ! -z ${BRANCH_NAME+x} ]; then 
     export GIT_BRANCH=${BRANCH_NAME} 
    else 
     export GIT_BRANCH=$(git branch | sed -n '/\* /s///p') 
    fi 
fi 
echo "INFO:>Branch:>$GIT_BRANCH" 

Falls jemand fragt, warum diese komplexere Logik erforderlich ist, um git Zweignamen zu erkennen, das ist, weil dieser Code in mehreren Kontexten ausgeführt wird und in einigen von ihnen (Continuous Integration Systeme wie Jenkins und Travis, dass kann Verwenden Sie sparse Checkouts) Sie können den git-Verzweigungsbefehl nicht verwenden. Glücklicherweise stellen diese Umgebungen die Verzweigungsnamen in einer Umgebungsvariablen zur Verfügung.

+0

Wenn das Makefile Teil des Repositorys ist, ist es möglicherweise einfacher, den branchspezifischen Code direkt im Makefile zu bearbeiten. – chepner

+3

Es ist nicht klar, was Sie mit "Port dies zu Makefile" meinen. Wollen Sie den obigen Shell-Code als Makefile-Code umschreiben? Oder wollen Sie ein Skript aufrufen, das den obigen Code aus einem Makefile enthält? Oder etwas anderes? – MadScientist

+0

http://stackoverflow.com/questions/589276/how-cani-i-use-bash-syntax-in-makefile-targets?rq=1 – xxfelixxx

Antwort

0

Nehmen Sie den Code, den Sie haben, und sagen Sie es, sagen wir /usr/local/bin/git-branch-report. Dann können Sie in Ihrem Makefile so auf es zugreifen:

GITVER = $(shell /usr/local/bin/git-branch-report) 

Das ist GNU machen. BSD make hat eine ähnliche Funktion mit unterschiedlicher Syntax.