2013-01-08 78 views
2

我們最近引入了功能分支(使用SVN)的概念,在這裏我工作,我偶然發現了一個我不知道如何處理它的情況。SVN分支和子分岔技術

這裏是我的情況的圖形: sticky situation

這裏的圖形這樣說:我從主幹創建一個分支(feature_phase_1)和分支工作,直到我很滿意我的工作。然後,因爲我們必須在代碼重新回到主幹之前檢查我們的代碼,並且因爲我需要feature_phase_1中的代碼繼續工作,所以我從第一個分支(feature_phase_1)創建了一個新分支(feature_phase_2)。我在那個分支上工作,直到第一個分支上的代碼審查完成,我對feature_phase_2進行了更改,切換到feature_phase_1,完成了請求的更改,提交給分支,然後重新合併到主幹。

然後我頭疼。

由於建議不要繼續在已重新集成的分支上工作,我以爲我會用我的兩個分支之間的差異做一個補丁,並將其應用到新的分支(從中繼,重新集成後我的feature_phase_1分支),並刪除當前的feature_phase_2。但它給了我更多的衝突,而且超出了我的預期。

我在某處從分支創建分支也沒有建議。我現在明白了爲什麼,因爲我不知道如何處理那裏的內容。我設法應用補丁和編輯衝突,但它很混亂,並且在整個過程中有些東西滑落。

這種情況下的建議方法是什麼?這樣可以最大限度地降低衝突和人工處理合並過程的風險?這是我所看到的:

  • 從樹幹而不是從分支創建feature_phase_2,從feature_phase_1合併更改爲feature_phase_2,然後繼續從主幹合併的事情上(我希望衝突去重新整合後, feature_phase_1)。 example
  • 繼續feature_phase_2的工作,一旦feature_phase_1重新整合,然後重新整合feature_phase_2到trunk(有點像here所述),繼續從trunk中合併。這個技術在我看來似乎有點不潔,因爲你必須從一個分支分支,然後重新整合兩個層次
  • ??

感謝

回答

1

爲您的照片。 1(原始工作流程)更好(我猜)可以選擇:

將feature_phase_1合併到feature_phase_2中,而不是將trunk合併到phase_2(phase_1-239將是phase_2-241的父代,而不是trunk-240),並且在合併phase_2到主幹

+0

是否有任何意外的驚喜,可能會產生合併已經重新集成的分支到另一個分支,重新集成到分支的第二個分支? –

+0

@AlexandreVaillancourt AFAIK(TBT !!!)1. --reintegrate僅用於計算更精確的delta值,用於合併TARGET 2. SRC不存儲任何信息,何時何地合併(mergeinfo存儲在TARGET中) 3.由於mergeinfo 4,已經合併到TARGET修訂版將在下次合併(另一個SRC)時忽略。將phase_1的HEAD合併到phase_2的HEAD中**不包含235-236個修訂(因爲**它們在phase_2中已經是**),只有239個合併在phase_1的trunk中 - 並且phase_2合併到phase_1後的trunk有效地只包含237-238 –

+0

似乎是一個有趣的方法,我會測試下一次!謝謝! –