因此,我已经编写了一个Makefile,它的release函数可以像:make release bump=patch那样运行,并且我希望它在Makefile中完全可执行。我当前实现的唯一问题是存在大量冗余和长行命令,我认为这可以简化很多,尽管我还没有找到更好的解决方案(主要是因为增量)。然后,它标记并推挤。
所需的功能是能够传递补丁程序,次要的,主要的,并让它用新版本覆盖当前文件,提交该文件并推送新标记。
它只是有那种“恶心”的感觉,这是我努力避免的。
我当前的makefile看起来如下:
release:
$(eval v := $(shell git describe --tags --abbrev=0 | sed -E -e 's/^v//' -e 's/(.*)-.*/\1/'))
ifeq ($(bump),patch)
@echo "$v" | grep -Eo '[0-9]+$' | tail -n 1 | awk '{print $1 + 1}' | xargs -I '{}' sed -i '' -E 's/([0-9]+"$)/{}"/' ._version_.py
else ifeq ($(bump),minor)
@echo "$v" | grep -Eo '(\.[0-9]+\.)' | awk '{print $1 + 1}' | xargs -I{} sed -i '' -E 's/(\.[0-9]+\.)/.{}./' ._version_.py
else ifeq ($(bump),major)
@echo "$v" | grep -Eo '([0-9]+)' | head -n 1 | awk '{print $1 + 1}' | xargs -I{} sed -i '' -E 's/([0-9]+)/{}/' ._version_.py
endif
$(eval a := $(shell grep -Eo '([0-9]+\.[0-9]+\.[0-9]+)' ._version_.py))
@git tag "$a"
@git commit -am "Bumped to version $a"
@git push --tags发布于 2018-06-07 18:14:42
我认为有更简单的方法来完成这件事:
例如:
release:
$(eval v := $(shell git describe --tags --abbrev=0 | sed -Ee 's/^v|-.*//'))
ifeq ($(bump), major)
$(eval f := 1)
else ifeq ($(bump), minor)
$(eval f := 2)
else
$(eval f := 3)
endif
@echo $(v) | awk -F. -v OFS=. -v f=$(f) '{ $f++ } 1'我会添加一些验证,以防版本没有主要的、次要的补丁组件。
https://codereview.stackexchange.com/questions/196047
复制相似问题