Shell脚本-凹凸版自动git

1 linux git bash shell makefile

我有以下命令,我想通过“ makefile”通过一个命令执行该命令

1. git tag -a v0.0.1 -m "new release"
2. git push origin v0.0.1
Run Code Online (Sandbox Code Playgroud)

现在我已经创建了一些开始

git:
    git add .
    git commit -m "$m"
    git push origin master
Run Code Online (Sandbox Code Playgroud)

现在有两个问题,如何解决版本问题,例如,这里是v0.0.1,但是对于每个新发行版,我都需要修改它,例如第一个是v0.0.1,下一个发行版应该是v0.0.2,是否可以自动完成(也许有柜台...)?如果不是,也许将其作为参数添加到一个命令中

  1. git tag -a v0.0.1 -m“新版本”
  2. git push origin v0.0.1

更新

有以下看起来好的回答

git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
Run Code Online (Sandbox Code Playgroud)

但是我应该如何结合呢?

  1. git tag -a v0.0.1 -m“新版本”
  2. git push origin v0.0.1

更新2

当我尝试以下建议作为凯文答案中的建议时,出现错误:

.PHONY:git

VERSION =git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'

git:
    git add .
    git commit -m "$m"
    git push origin master
    git tag -a $(VERSION) -m "new release"
    git push origin $(VERSION)
Run Code Online (Sandbox Code Playgroud)

错误是: fatal: tag 'ERSION' already exists 似乎无法正常工作,并且以某种方式v从版本中删除了

我进行了另一项检查,删除了回购协议,并为第一个发行版从头开始手动启动它,0.0.1现在我确实更改了一个文件并运行了脚本,该版本现在应该是0.0.2成功的,但是没有提示错误的fatal: tag 'v0.0.1' already exists原因是不起作用,知道为什么吗?

我想这与代码''{$ NF + = 1; OFS =“。”; 打印$ 0}'

Kev*_*sse 6

使用最后按下的标签,您可以自动增加版本号:

git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
Run Code Online (Sandbox Code Playgroud)

请记住,您将其存储在变量中并用于tagpush

VERSION=`git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'`
git tag -a $VERSION -m "new release"
git push origin $VERSION
Run Code Online (Sandbox Code Playgroud)

说明:

git describe-显示可通过提交访问的最新标记

--tags-启用匹配轻量级(无注释)标签的功能。

--abbrev = 0-将取消长格式显示,仅显示最接近的标记。


awk -F -使用“。”的处理模式。作为分隔符

'{$ NF + = 1; OFS =“。”; print $ 0}' -仅递增最后一个数字并与“。”连接。


生成文件

.PHONY: git

git:
    $(eval VERSION=$(shell git describe --tags --abbrev=0 | awk -F. '{$$NF+=1; OFS="."; print $0}'))
    git add .
    git commit -m "$m"
    git push origin master
    git tag -a $(VERSION) -m "new release"
    git push origin $(VERSION)
Run Code Online (Sandbox Code Playgroud)

  • 我发现较新版本的 awk 不起作用。[GNU awk](https://www.gnu.org/software/gawk) 和 [20180827 版本的 awk](https://github.com/onetrueawk/awk) 都不在输出中打印句点。例如,“v0.0.3”会变为“v0 0 4”。我发现切换了顺序,所以它是`awk -F。'{OFS=”。”; $NF+=1;print $0}'` 工作正常。 (3认同)