2015-08-31 32 views
6

雖然這與線程Git-flow and master with multiple parallel release-branchesWhat's best way to work with git on multiple master branch?類似,但它並不完全相同......我確實發現這個很類似:Multiple projects with same GIT master,但我想討論一下我的具體用例......帶有多個主分支的Gitflow

我工作的公司正在爲我們的Git工作流程建立政策和程序。我們想要使用文章http://nvie.com/posts/a-successful-git-branching-model/https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow中描述的「Gitflow」模型,並在有關此問題的許多討論中經常參考。

然而,我們有一個使用案例,其中我找不到一個解決方案的要求。如果您的項目用於生產多個最終產品會怎樣?因此,主分支不能像「單一產品」那樣表示「發佈點」。看來主人可能需要替代分支?那麼多個並行發佈分支?

例如,如果項目是骨幹或引擎,可能會有不同的皮膚,味道或變體,但您希望將每個完整的最終產品存儲在一個存儲庫中?

在我的特殊場景中,我有一個運行在Linux服務器上的程序,但它也是作爲本地Windows應用程序分發的。在這些不同的版本中,項目的大塊可能包含或不包含在一個或其他版本中。舉例來說,如果回購僅用於服務器,則不需要包含服務器上的庫,但是必須將其包含在本地分發中,否則它們不存在。我想在特定發佈點將更新推送到服務器上,但省略不屬於此類的那些部分。

從master分支,我會創建一個「Server Release」和「Local Release」分支嗎?

開發分支(和它的功能)從哪裏脫落?我不想要多個開發分支,每個分支都來自它自己的版本,因爲代碼開發事實上99%都適用於這兩者。我是否需要將一個開發分支合併爲一個,然後是另一個版本?

回答

4

如果兩個產品之間共享99%的代碼,則可以輕鬆共享同一個存儲庫。只要兩個產品處於同一發佈週期,例如2.0版同時發佈,您就可以擁有一個發佈/開發/主分支。

從master分支,我會創建一個「Server Release」和「Local Release」分支嗎?

在gitflow中,你實際上是從開發分支發佈!但是,如果它們處於不同的發佈週期,則沒有任何東西可以阻止您爲每個產品創建發佈分支。然後,當他們完成自己的時間時,您可以自由地將發佈分支合併到開發和主分支中。這裏唯一的問題是,您可能需要在主分支上有兩種不同的標籤,以便您可以看到每個產品在其發佈週期中的位置。或者爲了使標籤保持相同的格式,您可以有兩個主分支(每個產品一個),當相應產品的功能完成時,分別合併到這兩個分支中。

+0

我同意。如果代碼大致相同,則有一個存儲庫,並且只需將不同的部署腳本/工具(例如'ant'files)添加到此存儲庫中。 Git-Flow應該在這裏工作。 – mstrap

+0

謝謝mvd。這有幫助。我仍然在學習這種分支模型,並且通過查看次要來源,我顯然被誤導入Gitflow。看看主要來源,我看到了發佈分支是如何暫時的,而不是發展。我雖然釋放了一個永久的中間人,最初來自主人,然後開發者來自那裏。結果,我提出的解決方案很糟糕。我喜歡2主分支的想法。這與我的真正意思相似。我現在正在和這裏的團隊交談。如果我們實施你的計劃,我會除了這個答案。 – BuvinJ

+0

還有其他模式,發佈分支是長壽的。工作從開發開始,併入主(一旦它被認爲足夠穩定以便測試),並且當.0標籤被標記時發佈分支從主分支分支。不要覺得你必須用git-flow去,因爲它很受歡迎!你有一個獨特的情況,最後你應該選擇一個最適合你公司的策略。 – mvd