我们的CI的一部分是使用version.txt
文件中指定的版本来标记我们的仓库。我们只是这样做:
git tag `cat version.txt`
由于我们无法自动增加版本(无法知道我们是在进行主要版本还是次要版本),因此更新version.txt
文件只留给个别开发人员。这意味着错误可以而且确实发生。
我们想要的是:
如果git tag
没有失败,只要我想用已有的标签标记当前提交,就可以轻松满足要求3。
也就是说,如果标记git tag 1.2.3
已经在旧提交(好)中,则1.2.3
会失败,但如果它在我要标记的提交中,则也会失败(坏)。
如果我想用已有的其中一个标签标记当前提交,有没有办法告诉git tag
不要失败?
否则我需要自己实现此功能,方法是获取标记引用的提交,并在HEAD中检查当前提交。
答案 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