2009-02-20 51 views
1

我的開發小組遵循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中維護多個併發分支是很容易出錯和耗時的。在這種情況下,無論如何,許多開發者的簽入評論都是不準確的。所以真的沒有辦法回頭追溯他們的步驟。相反,我們將全面測試最近的分支並關閉其餘分支。

+0

這真的聽起來像一個可怕的政策和容易出錯。我一直試圖堅持「只在必要時,儘可能晚」的概念。我確定我錯過了一些東西,而沒有遇到需要按照你的方式去做,但對我來說,這聽起來像是在招惹麻煩。 – Tim 2009-02-20 21:55:59

回答

1

如果開發人員正在檢查其在分支機構中的更改,是不是可以在合併之前創建新的分支,將正確合併更改,然後將其新代碼合併到?也許我錯過了一些東西。

我並不熟悉各種Subversion模式,但是我的公司遵循一個流程,即我們的trunk始終穩定,開發人員無法更改它(只能更改分支)。因此,我們從來沒有合併過問題,我們在SVN中擁有超過10,000個修訂版本和100個分支機構。我只提出這個問題,因爲如果有多個開發人員合併問題,聽起來您的流程/模式中存在重大缺陷。

+0

我們剛剛討論了兩種不同的分支技術。我不得不說他們每個人都有自己的優點和問題。與其他源代碼控制軟件合作後,我認爲Subversion可以做得更好,但我不確定如何。 – staticsan 2009-04-15 23:03:14

0

那麼,要獲得一切你可以合併到URL沒有特定的修訂。如在:

cd /path/to/working/copy/of/stable/brunch 
svn merge https://company.com/repo/project/branch/stable https://company.com/repo/project/trunk 

這樣你就會從你忘了融合到穩定的樹幹中得到一切。審查,恢復你不需要的東西,然後提交。