我正在使用git describe
作爲構建時在我的應用程序中進行版本控制的驅動程序。 大致是它的樣子:git describe --always --dirty --match version*
如何合理地將「git describe --match」與淺層克隆結合使用?
標記我的版本,像version.1.2.3
模式,並構建出數字基於什麼關最後一次提交的應用程序的版本被標記的東西,如version.*
了。 如果我沒有標記給定的提交,那麼版本號碼最後會出現類似version.1.14.3-24-ged66bf5
的內容,它基於最近的標記,自該標記以來提交了多少次提交以及git commit id。
這對我個人而言確實很好,但是我在CI服務器上建立一個淺層克隆時遇到問題。當我在我的git build上使用「淺克隆」選項時(我猜這只是在執行「--depth = 1」),我的「git describe」命令不再按照我希望的那樣執行做。 我的版本號最後只是提交ID - 我猜這是因爲在淺克隆中沒有標籤版本,因此describe命令的--always
參數只是最終將提交ID吐出。
我可以通過不做淺層克隆來解決這個問題。
但我真的很喜歡把我的版本從git描述中解放出來 - 即使對淺層克隆我怎麼能繼續使用它呢? 我認爲我需要做的是在淺層克隆時指定深度爲「從分支尖端回到具有匹配version.*
的標籤的最新版本」。
這是我能用Git做的事嗎?
你有沒有想過建立一個'混帳alias'是做到了這一點呢?我絕不是在創建複雜的人的專家,但我知道,你可以得到相當瘋狂的工作流程來實現,通過使用它們。 或者使用偵聽您的部署分支('post-commit-hook')的git鉤子,並做幾乎相同的事情。 –
@JensHöpken這個git別名是什麼樣的? – Shorn