3

我們的項目從svn到git一直是converted。開發人員現在使用git-svn,但希望 繼續開發以利用更多的權力。心願:在發佈主線和分期工作之間擁有多個穩定分支的Git工作流程,與svn同步

  • 強大的分支,e.g話題/特性分支
  • 隔離,有時多個並行。
  • 瘦&平均和穩定詹金斯-CI設置 - 最少的維護(VS改變每一個版本後的工作配置)
  • 短迭代,開發團隊發佈到每2周QA;不一定在外部
  • 多個產品(P1..P3)由相同來源構建,獨立發佈;隨着變化的壓力
  • 有更多的休閒,非Git用戶在「更大的團隊」...他們S&U :) ..但我們必須讓他們svn訪問至少1分支(幹線)。他們的貢獻限制了幾個目標,所以這裏沒有太多的風險。

以下策略會起作用嗎?

  1. 發展:主線分支那裏發展情況,網HRS歐洲混帳流
  2. 穩定的產品分支:產品1 ..產品3。其中一個或多個將在dev發佈時從主線合併。似乎在Git流程中類似於'release start 1.4.3' - 但這些將是永久分支。發佈會在此標記,然後合併回來開發。這一點它會很穩定,就像git-flow中的主人一樣,其中只有幾個。
  3. 直接停止使用git-svn - 代之以推/拉鏡子。也可以使用功能分支,如果需要
  4. merge svn/trunk - > develop。 Svn會得到偶爾和孤立的檢查;所以計劃通過Jenkins的工作自動化它,通知人們是否失敗,以便可以手動合併
  5. 合併develop-> svn/trunk:定期(例如每天),以批處理模式。這可能是最動人的部分(至少對於新手來說)。規劃類似rebase or some reset wizardy
  6. CI設置將會是直接的,如測試和開發建立關主線,產品正式建立了他們自己的產品分支

Git-Flow是誘人的 - 主要是因爲它很好地描述和自動化。但它似乎不適合我的情況;主要是由於潛在的並行版本,多個產品線和CI aspects

任何知情意見將不勝感激。

回答

3

那麼,一旦你轉換爲混帳,這將是非常哈克得到一些分支設置爲SVN。我認爲那些「用戶」應該學習或消失。如果你需要git的功能來做更好的分支管理,那麼它是正確的解決方案,無論是哪一種,我都會爲你提供我爲之提供的模型Net-SNMP,工作得很好。我們有很多生產版本分支機構維護了好幾年,因此在SVN下跟蹤補丁程序總是很痛苦。在我們新的Workflow下,我們更加快樂,並且通常具有足夠好的感覺,因爲我們沒有因爲真正的合併而將補丁放到某個分支或另一個分支(與SVN相反,我們必須手動確保每個分支包含每個補丁)。

+0

On svn-> git syncing(point 4),again:聽起來很簡單:簡單的合併。另一種方式(#5)則不那麼重要 - 需要將歷史記錄線性化。它基本上與git-svn(我曾經在其中進行復雜合併)相同,只是在團隊級別。關鍵,恕我直言,是定期和一貫地做到這一點。你會期望什麼樣的痛苦 - 除了政治? (即使我同意人們應該樂於學習,他們可以爭辯說,現在沒有時間了,我寧願逐步推出,也不要混合政治)。 – inger 2012-03-05 22:07:02

+0

感謝您分享您的工作流,級聯發佈分支和瀑布合併很有趣,即使不適用於我的上下文。在你的情況下,版本分支似乎是爲了維護目的,在我的版本中,它們更多的是平行推出/硬化+以提供清晰的,以產品爲中心的歷史。 – inger 2012-03-05 22:17:16

+0

如果你的分支是真正平行的,那麼儘可能考慮使用特徵分支,並列出哪些特徵需要進入哪些產品分支等。 – 2012-03-05 22:22:31