2016-07-24 10 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" 

このより複雑なロジックはGitのブランチ名を検出するために必要とされる理由は、誰かがこのコードは複数のコンテキストで、そのかもしれジェンキンスとトラヴィスのようなそれらのいくつか(継続的インテグレーション・システムで実行されているため、それはだ、不思議場合スパースチェックアウトを使用する)git branchコマンドを使用することはできません。幸いなことに、これらの環境では、環境変数にブランチ名が公開されます。

+0

Makefileがリポジトリの一部である場合、ブランチ固有のコードをMakefileに直接編集するほうが簡単かもしれません。 – chepner

+3

"これをMakefileに移植する"という意味ははっきりしません。上記のシェルコードを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は、構文が異なると同様の機能を持っています。

関連する問題