我們CI的一部分是使用version.txt
文件中指定的版本標記我們的repo。我們簡單地做:如果標籤已經在我要提交的提交中,git標籤應該不會失敗
git tag `cat version.txt`
由於我們沒有辦法自動增加版本的方式(有沒有辦法知道我們正在做的主要或次要版本),更新version.txt
文件留給個人開發者。這意味着錯誤可以發生。
我們要的是:
- 如果版本已經更新,回購應被標記和部署。
- 如果版本尚未更新,CI週期應該失敗。
- 但如果手動重新啓動CI週期,這應該流暢運行
要求3可能是很容易滿足,如果git tag
沒有失敗,每當我要標記的電流,它已經有一個標籤提交。
也就是說,如果git tag 1.2.3
標籤1.2.3
已經是一個老犯(好)失敗,但如果是在提交我要標記(壞)它也失敗。
是否有辦法告訴git tag
不要失敗,如果我想標記當前提交的標籤之一,它已經有?
否則,我需要自己實現此功能,通過獲取標記引用的提交,並根據HEAD中的當前提交來檢查它。
不要這樣做:Git *假設*標記是永久的並且不變。如果某人刪除了一個標籤,然後重新標記,那麼*已經有*標籤的其他人將保留* old *標籤值。要選擇新的標籤,他們必須*刪除並重新創建標籤。所以如果你有1000個用戶,你會讓1000個人運行2000個命令(一個刪除,一個創建)。 – torek