如果标签已经在我想要标记的提交中,那么git标签不会失败

时间:2016-12-01 06:45:25

标签: git bash

我们的CI的一部分是使用version.txt文件中指定的版本来标记我们的仓库。我们只是这样做:

git tag `cat version.txt`

由于我们无法自动增加版本(无法知道我们是在进行主要版本还是次要版本),因此更新version.txt文件只留给个别开发人员。这意味着错误可以而且确实发生。

我们想要的是:

  1. 如果版本已更新,则应标记并部署回购。
  2. 如果版本尚未更新,则CI循环将失败。
  3. 如果手动重新启动CI周期,则应该顺利运行
  4. 如果git tag没有失败,只要我想用已有的标签标记当前提交,就可以轻松满足要求3。

    也就是说,如果标记git tag 1.2.3已经在旧提交(好)中,则1.2.3会失败,但如果它在我要标记的提交中,则会失败(坏)。

    如果我想用已有的其中一个标签标记当前提交,有没有办法告诉git tag不要失败?

    否则我需要自己实现此功能,方法是获取标记引用的提交,并在HEAD中检查当前提交。

2 个答案:

答案 0 :(得分:0)

在标记之前,检查当前提交是否已有该标记。

git tag -l --points-at HEAD <tag>
  

由于我们无法自动增加版本(无法知道我们是在进行主要版本还是次要版本),因此更新version.txt文件将留给个别开发人员。这意味着错误可以而且确实发生。

当我实施这样一个系统时,我已经将该版本拖欠了一个小版本。因此,默认情况下,1.2.3变为1.2.4。我还在&#34;准备发布&#34;之间留下了最后的手动步骤。并且&#34;做发布&#34;允许验证。

答案 1 :(得分:0)

只需删除之前提交中已经提供的标记即可。不同的提交git中的相同标记不允许,也不需要我认为。

$ git tag -d <tag-name>                       # delete the tag from local
$ git push origin :refs/tags/<tag-name>       # delete a tag from remote 
$ git tag <cat version.txt>                   # give a new tag on current commit
$ git push --tags                             # push tag