多年來,我們一直使用TFS(TFVC)作爲我們的版本控制系統。我們可能會遷移到git,但我試圖找出分支策略 - 維護多個版本
1)是否有比我們當前使用的更明智的分支策略/模型,特別是用於維護多個生產版本(通常用於多個不同的版本顧客)?
2)至於1),是與git超過TFVC有具體的好處?
我們今天做的其實很簡單:
Mainline ----------------------------------------------------
| | | | |
Release 3 Release 4 Release 5 Release 6 "Release" 7
所有版本都對主線自己的分公司,甚至在將來的版本的開發工作已經完成的「未來」的發佈分支。在上文中,「第7版」正在進行中,尚未發佈。
在每個分支都可能會進一步支行等功能分支隔離工作,並隨時發佈分支穩定的,但我不認爲這是本次討論的重要。
每當有這些版本分支之一的變化,它最終合併主線,並從那裏到所有未來版本,以避免客戶從,說要去迴歸,3版版本5
實際上,對這些「舊」分支的更改不僅是小錯誤修正,還可能是第3版客戶要求的更大功能,並且是在第3版中開發的,客戶將收到新版本的第3版。最終,功能將被合併到主線,並從那裏到所有未來的版本。
一直以來合併來自主線的每一個新的分支每一個分支發生,這實際上意味着主線主要是與最新發布分支相同。
這是第一個令人頭痛的問題:從舊版本3在主線這是非常新的,然後從主線到舊版本5的合併有一些不自然的現象(事實上它會導致問題)。例如,比較版本3和版本6可能會很大並且發生變化。直接從版本3合併到版本5會更自然,但TFVC不支持這一點。您只能合併到您的直接父母(或子女)。 git是否有相同的限制?
的另一個問題是,它是不可能在TFVC櫻桃挑合併整個功能,如果它的變更不是一個連續的,在歷史上不間斷的塊。如果某些其他功能的變更集是交錯的,則必須合併每個連續的子功能塊變更集,或者必須合併源分支到目標分支的所有內容。而做多個櫻桃挑選合併並不總是可能的,因爲所有的變更集可能需要建設或單元測試,甚至是可能的。我可以看到爲什麼TFVC具有此限制,因爲該功能的更新更改集可能基於來自另一個功能的較舊的交錯更改集。因此,合併最初來自此功能的變更集可能沒有意義。在實踐中,我們傾向於合併準備合併的所有內容,無論如何都需要合併。 git在這方面如何比較?
什麼是對我們的情況下,明智的分支策略/模型,將在遷移與git幫助我們嗎?
你檢查混帳流? http://nvie.com/posts/a-successful-git-branching-model/ –
是的,我已閱讀,但我發現的一切似乎集中在只有一個主要釋放。有人提到支持分支可能是我們需要的東西,但它看起來像一個深奧的功能,你不應該將你的修復合併回主,我不明白。人們通常如何維護多個發佈分支? – pinkfloydhomer
master只是默認的分支,但它只是一個分支,它取決於你使用它。對於某些項目,我根本沒有掌握,我直接按產品名稱創建分支。你可以有多個發佈分支。有沒有[支持分支機構]的概念(https://gitversion.readthedocs.io/en/latest/git-branching-strategies/gitflow-examples/#support-branches)其高達你的流量來定義分支你的方式想。此外,當您鬆開,沒有什麼,告訴你必須從主版本中,您可以從任何一間分行發行,你可以標記針對這一分支 –