2012-10-24 54 views
8

這裏是謎語:SVN合併重返失蹤的範圍,但沒有合併

C:\code\trunk> svn merge --reintegrate http://svn.e.com/repos/branches/lih --accept postpone --dry-run 
svn: E195016: Reintegrate can only be used if revisions 11430 through 12384 were previously merged from http://svn.e.com/repos/trunk to the reintegrate source, but this is not the case: 
    branches/lih 
    Missing ranges: /trunk:11902 

不過,如果我進入分支的目錄,並嘗試合併範圍,沒有什麼合併!

C:\code\branches\branch> svn merge -r 11901:11902 http://svn.e.com/repos/trunk --accept postpone --dry-run 
C:\code\branches\branch> 

即使svn merge -r 11898:11903顯示沒有合併。

現在我似乎無法將我的分支重新整合到主幹中!請幫忙!

P.S. lih分支直到1190年才被創建。它從從樹幹分支的hd分支分支(並且hd已經合併回到樹幹)。

回答

3

這似乎適用於我,但我不能聲稱理解它或保證它是解決我的問題的最佳方法。

首先,你的分支擁有所有最新的提交都是很重要的。所以同步它(做一個從樹幹到分支的合併)。

然後,您可以通過在trunk目錄中執行此操作來強制重新集成: svn merge http://svn.e.com/repos/trunk/@REV http://svn.e.com/repos/branches/lih/ . --dry-run(但用最新版本#替換REV)。

+1

這真的對我有幫助,但不是REV是最新版本的主幹,我必須將其設置爲分支創建的版本。這可以避免在分支開發過程中發生在主幹中的合併還原修改。 – ceztko

4

我剛剛遇到了類似的問題,其中問題是該中繼線有兩個取消修訂版本(即20815版主幹網絡版20857版)。所以當我第一次從主幹合併到分支時,它沒有任何東西可以合併這對修訂版本,但沒有將它們包含在合併信息中。然後,當我試圖從分支合併回主幹時,它反對說這兩個修訂版缺失。

我的解決方案(在手動驗證爲所討論的文件取消修訂版本後)是將兩個修訂版本中的每一個明確地合併爲分支(通過svn merge ^/trunk -c 20857和svn merge ^/trunk -c 20865),提交,然後將分支合併回主幹。第二次,它進展順利。這是Subversion 1.8.0(r1490375)。

我能夠在早期使用合併和--record-only來標記更改爲正確合併在分支上的類似問題,但它可能更安全的合併實際文件(以防萬一有變化並不完全取消)。

看起來像Subversion 1.8處理mergeinfo取消對我的更改的方式中的錯誤。