[英]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
個別開發人員完成。 這意味着錯誤可以而且確實發生。
我們想要的是:
如果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.