Bash 如何从Makefile内部检测git分支名称?

Bash 如何从Makefile内部检测git分支名称?,bash,makefile,continuous-integration,Bash,Makefile,Continuous Integration,我已经有了一些检测当前git分支名称的bash代码,我想将其移植到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:>Branc

我已经有了一些检测当前git分支名称的bash代码,我想将其移植到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"

如果有人想知道为什么需要这个更复杂的逻辑来检测git分支名称,那是因为此代码在多个上下文中执行,并且在其中一些上下文中(像Jenkins和Travis这样的连续集成系统可能使用稀疏签出),您不能使用git分支命令。幸运的是,这些环境确实在环境变量中公开了分支名称。

获取您的代码,然后将其放入,比如说,
/usr/local/bin/git branch report
。然后,在makefile中,您可以通过以下方式访问它:

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

那是GNU制造的。BSD make具有类似的功能,但语法不同

将您拥有的代码放入,比如说,
/usr/local/bin/git branch report
。然后,在makefile中,您可以通过以下方式访问它:

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

那是GNU制造的。BSD make具有类似的功能,但语法不同

如果Makefile是存储库的一部分,那么直接将特定于分支的代码编辑到Makefile中可能会更简单。你的意思是,你想把上面的shell代码重写为makefile代码吗?或者,您的意思是,您希望从makefile中调用包含上述代码的脚本?或者其他什么?如果Makefile是存储库的一部分,那么直接将分支特定的代码编辑到Makefile中可能会更简单。不清楚“将其移植到Makefile”是什么意思。你的意思是,你想把上面的shell代码重写为makefile代码吗?或者,您的意思是,您希望从makefile中调用包含上述代码的脚本?还是别的什么?