我正在编写一个Makefile,并希望将一个变量中的当前分支名称捕获到--define中。 由于脚本有时但并不总是在travis上运行,因此git存储库可能处于分离状态。
我可以在命令行中提取分支名称,但遗憾的是不能在变量中捕获它。似乎print $$ 2在Makefile环境中不起作用。
我现在的行是:
BRANCH := $(shell git for-each-ref --format='%(objectname) %(refname:short)' refs/heads | awk "/^$$(git rev-parse HEAD)/ {print $$2}")
我得到了
dfd943a57015dbd2129ca7b7033c4e1749f18974 BRANCH_NAME
而不仅仅是
BRANCH_NAME
答案 0 :(得分:2)
接受的答案有一个问题是可靠地提取分支名称(哈希是好的)。如果当前HEAD提交是多个分支的当前头部,那么BRANCH的值将是“branch1 branch2”,这将在Makefile中产生意外结果。
只需使用:
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
HASH := $(shell git rev-parse HEAD)
答案 1 :(得分:0)
最适合我的是:
BRANCH := $(shell git for-each-ref --format='%(objectname) %(refname:short)' refs/heads | awk "/^$$(git rev-parse HEAD)/ {print \$$2}")
HASH := $(shell git rev-parse HEAD)
然后可以使用那些变量,例如与$(BRANCH)