簡體   English   中英

如果標簽已經在我想要標記的提交中,那么git標簽不會失敗

[英]git tag should not fail if tag is already in the commit I want to tag

我們的CI的一部分是使用version.txt文件中指定的版本標記我們的repo。 我們只是這樣做:

git tag `cat version.txt`

由於我們無法自動增加版本(無法知道我們是在進行主要版本還是次要版本),因此更新version.txt文件version.txt個別開發人員完成。 這意味着錯誤可以而且確實發生。

我們想要的是:

  1. 如果版本已更新,則應標記和部署repo。
  2. 如果版本尚未更新,則CI循環將失敗。
  3. 如果手動重啟CI循環,則應該順利運行

如果git tag沒有失敗,只要我想用當前提交標記已經擁有標記,就可以輕松滿足要求3。

也就是說,如果標簽1.2.3已經在舊提交中(好),則git tag 1.2.3失敗,但如果它在我想要標記的提交(壞)中,它也會失敗。

有沒有辦法告訴git tag不要失敗,如果我想用它已經擁有的標簽之一標記當前提交?

否則,我需要自己實現此功能,方法是獲取標記引用的提交,並在HEAD中針對當前提交進行檢查。

在標記之前,檢查當前提交是否已具有該標記。

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

由於我們無法自動增加版本(無法知道我們是在進行主要版本還是次要版本),因此更新version.txt文件將由個別開發人員完成。 這意味着錯誤可以而且確實發生。

當我實施這樣一個系統時,我已經將這個版本拖欠了一個小版本。 因此,默認情況下,1.2.3變為1.2.4。 我還在“准備發布”和“發布”之間留下了最后的手動步驟,以便進行驗證。

只需刪除先前提交中已經給出的標記即可。 不同提交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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM