2016-07-24 22 views
1

我已經有一些檢測當前git分支名稱的bash代碼,我想將它移植到Makefile中。如何檢測Makefile中的git分支名稱?

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" 

如果有人想知道爲什麼是必要的,以檢測混帳分支名這個更復雜的邏輯,這是因爲這段代碼在多種環境中執行,並在其中一些(持續集成系統,如詹金斯和Travis可能使用稀疏簽出)你不能使用git分支命令。幸運的是,這些環境確實在環境變量中公開分支名稱。

+0

如果Makefile是版本庫的一部分,直接編輯特定於代碼的代碼到Makefile中可能會更簡單。 – chepner

+3

目前還不清楚「將此端口移植到Makefile」是什麼意思。你的意思是,你想重寫上面的shell代碼作爲makefile代碼嗎?或者你的意思是,你想從一個makefile中調用包含上述代碼的腳本?或者是其他東西? – MadScientist

+0

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

回答

0

拿你的代碼,並把它放在,比如說,/usr/local/bin/git-branch-report。然後,在你的makefile中你可以這樣訪問:

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

這就是GNU make。 BSD make具有不同語法的相似特徵。