2012-04-03 45 views
7

我目前在使用git語義版本化方面遇到問題。語義版本化如何適用於git工作流程

我們使用git的版本模型在http://nvie.com/posts/a-successful-git-branching-model/

我們也想跟着在http://semver.org/

概括這裏的語義版本的指南是樣本使用案例我們。

Release branch: ----1----2----3----4 <- tag v1.2  ----7---8---9 <- tag v1.3 
       /    \    /   \ 
Develop branch: --0--------5---------4--6-----------------------------9-- 

這是我們的樣品的用例:發生在釋放並行

  • 發展自己,發展
  • 版本已經準備就緒,我們將其標記爲V1.2。我們爲更改1,2,3,4生成發行說明。
  • 我們將發佈合併發展。
  • 當我們準備再次開發另一個版本的分支時,我們可以。然而,標籤v1.2指向4,因此如果我們查詢v1.2和v1.3之間的變化,5的發行註記實際上會丟失。

我們想要做的是能夠搜索所有新添加的簽名,因爲創建了標籤v1.2,新添加到標籤v1.3中,以便我們可以確定我們需要製作的組件的什麼樣的版本凹凸(xyz)。

如果5碰巧是一個重大改變,但是從v1.2開始,所有東西都不是,我們會錯誤地碰撞小版本,因爲checkin 5不在構建中。

有沒有人有任何建議如何解決這個問題?

回答

2

我想這取決於你如何「查詢變化」。但如果你的意思是使用git log v1.2..v1.3或類似的東西,那麼應該顯示你正好你想要什麼,也就是包括提交5.

+0

如果我們使用git log v1.2..v1.3,那麼提交5將被排除在外,因爲開發的HEAD會在從版本v1.2合併到開發右側之後指向提交4。因此提交5將在提交4之前插入,因此,由於HEAD指向提交4,因此提交5基本上將被視爲「已覆蓋」。 – 2012-04-04 03:20:27

+0

不,它確實不會被排除。你試過了嗎? 'v1.2..v1.3' for git的意思是「提交v1.3中的內容,不包括v1.2中的內容」,這意味着它將包含5. – svick 2012-04-04 09:05:44

+0

我在樣本回購中試過了,你是對的。謝謝!我的困惑是,我正在考慮HEAD發佈v1.3標籤,而不是v1.2到v1.3。 – 2012-04-04 13:23:20