2010-01-29 64 views
1

我們的團隊有一個cvs存儲庫,我們通過cvs2svn轉換爲svn。我們的信息庫有一個主要分支(我們可以撥打main),它可以有效地用作主幹(儘管它在技術上遠遠地從主幹分支出去)。cvs2svn遷移後的svn合併問題

在cvs2svn轉換之後,我將main分支到branch

branch做了小改動,然後試圖合併branchmain

[~/main] svn merge https:.../branch 

這應計算diff來branch,因爲分裂發生,而且DIFF適用於main。然而,這回溯了幾年,導致了數十起衝突。

有關如何解決此問題的任何想法?我搜遍谷歌,但找不到任何東西。

我知道我可以調用svn merge並傳遞確切的版本號。我正在尋找一個更好的選擇。

+0

我看不出有任何理由懷疑您的問題與cvs2svn轉換有任何關聯。 – mhagger 2010-01-30 05:09:47

+1

svn合併取決於正確的血統信息才能正確運行。 cvs沒有這些信息,所以cvs2svn試圖猜測它。從我讀過的內容來看,它通常很好,但在分支分支方面有困難。 – dshin 2010-02-01 15:21:18

回答

0

你需要告訴svn合併你的合併點是什麼,所以它知道什麼範圍的提交同步到主。由於您沒有指定範圍,因此它默認通過HEAD修訂版提交的範圍。這會導致太多修改。

這將讓先前提交版本,你會從被同步:

svn log --xml --stop-on-copy https://.../branch | grep 'revision=' | head -n 1 | sed 's/.*revision="\([0-9][0-9]*\)".*/\1/g' 

基本上,獲取在樹枝上的第一個副本的版本(我稱之爲「REV」)。然後,您將合併,爲您的「主」副本的HEAD修訂版(主目錄):

cd main 
svn merge https://.../branch:REV https://.../branch:HEAD . 

應適用所有的變化來自REV通過HEAD上的「分支」複製到「主」副本。即使從分支到主要重複合併,這也應該正常工作。

乾杯!