Shell脚本 - Bump版自动git

时间:2018-04-04 15:55:12

标签: linux bash git shell makefile

我想通过' makefile'执行以下命令,我想用一个命令执行 我怎么能这样做?

1. git tag -a v0.0.1 -m "new release"
2. git push origin v0.0.1

现在我已经创造了一些可以开始的东西

git:
    git add .
    git commit -m "$m"
    git push origin master

现在我有两个问题,如何解决版本,例如 这是v0.0.1但是对于每个新版本我都需要像第一个那样碰撞它 v0.0.1和下一个版本应该是v0.0.2,它可以以某种方式自动(也许有一些反...)?如果不是,可以将其作为参数添加到一个命令

  1. git tag -a v0.0.1 -m"新版本"
  2. git push origin v0.0.1
  3. 更新

    以下

    有好看的回答
    git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}'
    

    但我应该如何将其与?

    1. git tag -a v0.0.1 -m"新版本"
    2. git push origin v0.0.1
    3. 更新2

      当我在Kevin的回答中尝试以下建议时,我收到了错误:

      .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)
      

      错误是: fatal: tag 'ERSION' already exists 它看起来不起作用,它以某种方式从版本

      中删除了v

      我做了另一次检查,删除了repo并从头开始手动启动第一个版本0.0.1现在我在一个文件中进行了更改并运行了脚本,现在版本应为0.0.2成功,但没有我得到错误fatal: tag 'v0.0.1' already exists,这解释了凹凸不起作用,任何想法为什么?

      我猜它与此代码相关`' {$ NF + = 1; OFS ="&#34 ;;打印$ 0}'

1 个答案:

答案 0 :(得分:3)

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

@ElementCollection(targetClass = Long.class, fetch = FetchType.EAGER)
@CollectionTable(name = "TABLE_A_B", joinColumns = @JoinColumn(name="fk_table_b_id"))
@Column(name = "fk_table_a_id")
private Collection<Long> entityBIds;

请注意,您将其存储在变量中并将其用于git describe --tags --abbrev=0 | awk -F. '{$NF+=1; OFS="."; print $0}' tag

push

说明:

git describe - 显示可以从提交中访问的最新标记

- 标记 - 启用匹配轻量级(非注释)标记。

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

awk -F。 - 处理模式使用&#34;。&#34;作为分隔符

<强>&#39; {$ NF + = 1; OFS =&#34;&#34 ;;打印$ 0}&#39; - 只增加最后一个号码并加入&#34;。&#34;

makefile

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