我的開發小組遵循Subversion中不穩定的主幹,穩定的分支模式。每個月都會從主幹創建一個穩定的發佈分支。有時候,需要將這些更改分支中的更改合併到後續發佈分支中,最後將其更改爲主幹。合併Subversion中的錯過更改
問題是,在過去的幾個月裏,所有這些分支的合併都做得不正確。由於開發人員誤解了他們需要合併的修訂版本,因此許多修訂都被忽略了。
一個例子不正確的合併歷史是這樣的:
------------------------------------------------------------------------
r57 | Bob | 2008-11-27 04:02:46 -0600 (Thu, 27 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:28-55
------------------------------------------------------------------------
r28 | Alice | 2008-11-25 10:14:00 -0600 (Tue, 25 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:10-25
這裏,鮑勃應該從R25,愛麗絲的合併結束了,而不是R28,開始了自己的合併。
因此,現在我有6個分支機構自10月初以來就以這種方式被錯誤地合併了。這會導致測試失敗以及主幹中的許多回歸。所以現在,我想回去併合並所有錯過的更改。
有沒有一個容易和正確方式做到這一點?我目前的計劃是回到開始,並開始在每個差距合併。所以在這個例子中,我將合併版本25-28從分支1合併到分支2.但我期望有很多衝突,我希望有更好的方法。
真的沒有快速簡單的解決方法。迫使開發人員在Subversion中維護多個併發分支是很容易出錯和耗時的。在這種情況下,無論如何,許多開發者的簽入評論都是不準確的。所以真的沒有辦法回頭追溯他們的步驟。相反,我們將全面測試最近的分支並關閉其餘分支。
這真的聽起來像一個可怕的政策和容易出錯。我一直試圖堅持「只在必要時,儘可能晚」的概念。我確定我錯過了一些東西,而沒有遇到需要按照你的方式去做,但對我來說,這聽起來像是在招惹麻煩。 – Tim 2009-02-20 21:55:59