2012-07-12 430 views
2

因此,我有兩個版本,即trunk和branch1的併發工作。在某個時候,我被告知:「不要爲rel1增加任何版本,修復rel2中的bug」。所以我在branch1中進行了bug修復,也可以應用到trunk。後來,我被告知:「如果我們將rel1與那些已知的bug相關聯,這將是一個大的PITA,請在rel1中修復它們。」cherrypick svn合併分支到樹幹,後面再合併--reintegrate?

所以,我的問題是(。〜/ REL1爲主幹的電流,修改的工作副本RevM,RevN在BRANCH1版本號的範圍內,我要合併到主幹修訂):

如果我做了

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 

它將如何影響從分支稍後svn merge --reintegrate到主幹?請記住RevM之前的分支1有修改,RevN之後會有更多的修改。特別是,當我最終重新整合時,是否會像我最初完成rel1中的修復並將它們合併到rel2中一樣,首先應該這樣做?

+0

在你的問題開始時,你把trunk,rel1,rel2等混合了一下。也許你可以解決這個問題,使問題更清楚。 – janitor048 2012-07-20 23:04:16

回答

5

櫻桃採摘從一個分支變成樹幹是一件總是扭曲我的思想。這是一個解決方案,應該在你的情況下工作,訣竅是阻止櫻桃採摘的變化再次合併到分支。

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 
svn commit -m "cherry pick RevM:RevN from branch1 into rel1" 

現在假設這個提交已經創建了RevX。進入您的分支並通過使用--record-only選項來阻止未來合併操作中的此版本。

cd ../branch1 
svn merge -c RevX --record-only ^/rel1 
svn commit -m "mark RevX as already merged to block it from future merge actions" 

現在,你應該能夠進一步改變像往常一樣再次從合併到rel1branch1也重返你的支進REL1一旦你用它做。

+0

請注意,這應該從svn 1.5起。我有時讀過svn上的1.6,應該更聰明地處理這種情況 - 所以也許阻塞並不總是必要的?我真的不知道這是否確實如此。我會在明天嘗試做一個測試場景。 總的來說,我的感覺是櫻桃採摘從樹枝到樹幹並沒有真正得到svn工作方式的很好的支持。 – janitor048 2012-07-20 23:02:39

+0

即使我不完全確定它是正確的,我仍然會接受這一點。它開始出現我從事合併的分支永遠不會重新集成,所以我可能永遠無法確定會發生什麼。 – wades 2012-08-20 18:44:42