2011-04-20 166 views
3

不能做一個分支,然後主幹的修改合併到分支:SVN合併主幹分支:路全是樹衝突我似乎

svn copy file:///svn/project/trunk file:///svn/project/branches/feature-branch 
svn co file:///svn/project/branches/feature-branch 
cd feature-branch 
#change a couple of files, no additions/deletions 
svn commit 
svn merge file:///svn/project/trunk 

有了這個,分支的每一個路徑被列爲樹衝突(svn狀態顯示「本地添加,傳入添加合併」)。合併確實列出它正在從主幹上的r2向前合併...所以它看起來像svn copy實際上並沒有保持分支從幹線分叉的歷史嗎?這是1.5版顛覆書中列出的工作流程,是1.6完全不同的工作流程嗎? (使用1.6.11)

編輯: SVN日誌-v顯示:

A /branches/feature_branch (from /trunk:3091) 

的svn proplist變種是空的。 (也許是因爲我沒有解決樹衝突?)功能分支中的更改似乎也不在日誌中,並且r3091不在svn log -v中。合併信息是「通過r3093合併到'。'」,所以看起來問題在於記住分叉的位置。刪除並重新創建分支多次後,我們放棄了使用svn分支。

回答

0

我期望這工作正常(至少它對我來說,使用v1.6.13.19776)。如果這是一個測試回購,可以從每個特徵分支後的輸出:

svn log -v 

應該有一個副本入口的東西沿着線:

D:\svntest\feature-branch>svn log -v 
------------------------------------------------------------------------ 
r6 | XXXX | 2011-04-21 08:04:21 +0100 (Thu, 21 Apr 2011) | 1 line 
Changed paths: 
    A /project/branches/feature-branch (from /project/trunk:5) 

test branch 
------------------------------------------------------------------------ 

這都說明它跟蹤'特色分支'是從'trunk'創建的。

這也是值得檢查輸出:

svn proplist 

我希望這是空的,你已經嘗試從主幹合併,但之後(假設它工作正常)之前,你應該有一個mergeinfo屬性:

D:\svntest\feature-branch>svn proplist 
Properties on '.': 
    svn:mergeinfo 

然後你就可以查詢:

svn propget svn:mergeinfo 

再次,如果一切正常,這應該被更新,以表明已upmerged到分支的「主幹」的修訂,是這樣的:

D:\svntest\feature-branch>svn propget svn:mergeinfo 
/project/trunk:6-7 
+0

謝謝。合併後,文件衝突解決(但樹衝突懸而未決),我在頂部有一個提交(縮寫因爲註釋是單行):r3092;改變路徑; A/branches/feature_branch(來自/ trunk:3091),但svn proplist是空的。 (也許是因爲我沒有解決樹衝突?)我在功能分支中的更改似乎也不在日誌中。 – jtniehof 2011-04-21 13:43:41

+0

嗯。 r3091(從中繼複製的修訂版)未在svn log -v中列出。合併信息是「合併r2到r3093到'。」 – jtniehof 2011-04-21 14:38:37

+0

@ jtniehof:你可能想要編輯你的問題來添加你發現的任何額外信息,這可能是有用的。 – forsvarir 2011-04-21 15:03:39

3

我有同樣的問題。經過大量研究後,我發現在1.5之前的SVN服務器中,分支機構不會合並存儲在服務器中的信息。 因此,無論何時您嘗試在分支中進行合併,它都會嘗試從版本1同步到HEAD。由於您的分支中可能有不在r1中的新文件,因此會有很多樹衝突。有兩種解決方案:在合併命令(svn merge -r 1234:HEAD http://trunk)中使用修訂版本或將svn服務器更新爲版本大於等於1.5的版本,其中保存有關合並的信息,因此,無論何時嘗試執行合併到你的分支中,它會知道哪個是最後一個同步版本,並且只會從那個版本進行合併。

+0

謝謝...如果我再次遇到它,我會記住這一點,但我的問題不是1.5問題;運行1.6.11和「遠程」是一個文件:///遠程。 – jtniehof 2011-08-30 20:31:55

+0

我有同樣的問題,你是絕對正確的! :( – karim 2013-03-27 08:39:45

0

合併時請確保您提交根目錄。 在這個目錄屬性上,你有合併的版本號,如果你沒有提交它,你將在下一次合併時產生衝突。