2011-01-12 55 views
1

我們即將開始構建新應用程序,該應用程序將與現有應用程序共享一些現有基礎結構程序集,並涉及現有域模型的重要子集。長期運行和破壞性分支的問題

對於這個新應用程序,部分域模型可能會經歷一些嚴重的改變,一旦新的應用程序被完全指定並準備就緒,所有這些的最終結果就是我們希望重新統一這兩個應用程序的模型(以及共享數據庫,鏈接功能等),但是在開發,原型設計等過程中,我們將使用單獨的數據庫,以便我們可以改變事情而不用擔心影響開發或使用現有的應用程序。由於它是一個原型,因此會有一個相當長的時間窗口,在這個窗口期間,可以進行嚴重的變更或重新架構,因爲產品管理實驗使用不同的工作流程,不同的客戶羣進行調查,並且我們試着跟上。

我們已經做了一個顛覆的分支,從而在成熟的應用程序不會影響並行開發,並與2種勢與此前進的方式被玩弄:

  1. 使用svn分支爲唯一的分離機制。當我們確定我們的長期支行足夠穩定以重新進入中繼線時,對現有的域模型進行更改,並評估它們對現有應用程序的影響(並對ProjectA進行必要的更改)。 「暫存」共享代碼(暫時):將ProjectA.Entities複製到NewProject.Entities,並將所有NewProject代碼視爲自包含的。當模型周圍的所有擾動都停止並且我們感到滿意時,手動將更改(如粒度或掃描保證)重新集成到ProjectA.Entities中,更新ProjectA以在每個步驟使用改進的模型(這可以採用放置在顛覆合併發生之前或之後)。然後,顛覆合併將不會處理這裏任何重大更改的重組。注意:「fork」方法只適用於我們看到存儲器發生重大變化的代碼,並且其修改會破壞ProjectA - 共享基礎架構的東西,例如,我們只需修改位置(在我們的分支上)並讓合併理清。

  2. 發展很難,去購物。

很自然地,在沒有達成協議之後,我們將它轉​​變爲權力的預言者。任何這些方法的經驗,需要注意的難點,完全是新的東西?

回答

0

我贊成2.因爲與最終的結果從原來的代碼基礎完全不同的長期發展的努力,我經常看到了「重返社會階段」爲:

  • 採取的大部分時間的在新項目中開發的精確代碼(即,大多數情況下不涉及實際合併,只是簡單的複製)
  • 有限使用歷史(即,我不再需要在新項目中完成的所有中間提交將其重新集成在原始項目中)。
相關問題