2013-03-05 150 views
1

我得到SVN中的樹衝突。有點奇怪!svn merge:樹衝突怪異

我有標準的樹幹,分支,標籤結構,並遵循多個團隊模型。 分支1,店2創建形式軀幹和活性平行

步驟如下:
1. Branch1 Worknewfile.c加入並致力於在Branch1
2. Merge:從分支1 - >幹線(成功;在軀幹添加的文件)
3. Merge:從中繼向下合併 - > Branch2。 (成功;文件在Branch2中添加)
4. Branch2 Work:執行常規的Branch2工作並提交。
5. Merge:從店2主幹=>這一步會因newfile.c

店2隊越來越樹衝突的newfile.c他們還沒有觸及根本樹衝突。 這是爲什麼發生。任何建議請,這可以避免?這個問題困擾了我很多。

PS:我用TortoiseSVN的客戶端1.6.0和TortoiseSVN 1.6.16 - 32位(兩者分開使用)

合併誤差(上述步驟-5):

>svn merge file:///E:/Treeconflict_test/svnRepo/Branches/Br2 Trunk 
--- Merging r3 through r8 into 'Trunk': 
    C Trunk\src\ARTransactionFeeDto2.java 
U Trunk\pom.xml 
G Trunk 
Summary of conflicts: 
    Tree conflicts: 1 

>svn status Trunk 
M  Trunk 
     C Trunk\src\ARTransactionFeeDto2.java 
     > local obstruction, incoming add upon merge 
M  Trunk\pom.xml 

PFB svn的日誌(上述步驟1-4):

>svn log -v file:///E:/Treeconflict_test/svnRepo 
------------------------------------------------------------------------ 
r8 | rohit | 2013-03-05 16:30:35 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    M /Branches/Br2/src/ARTransactionFeeDto2.java 

br2 branch changes 
------------------------------------------------------------------------ 
r7 | rohit | 2013-03-05 16:29:34 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    M /Branches/Br2 
    M /Branches/Br2/pom.xml 
    A /Branches/Br2/src/ARTransactionFeeDto2.java (from /Trunk/src/ARTransactionF 
eeDto2.java:6) 

dowm-merge from Trunk to branch-Br2 
------------------------------------------------------------------------ 
r6 | rohit | 2013-03-05 16:26:56 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    M /Branches/Br2/pom.xml 

br2 branch changes 
------------------------------------------------------------------------ 
r5 | rohit | 2013-03-05 16:22:26 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    M /Trunk 
    M /Trunk/pom.xml 
    A /Trunk/src/ARTransactionFeeDto2.java (from /Branches/Br1/src/ARTransactionFeeDto2.java:4) 

up-merge from branch-Br1 to Trunk 
------------------------------------------------------------------------ 
r4 | rohit | 2013-03-05 16:20:48 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    M /Branches/Br1/pom.xml 
    A /Branches/Br1/src/ARTransactionFeeDto2.java 

br1 changes 
------------------------------------------------------------------------ 
r3 | rohit | 2013-03-05 16:19:07 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    A /Branches/Br2 (from /Trunk:2) 

created branch br2 
------------------------------------------------------------------------ 
r2 | rohit | 2013-03-05 16:18:57 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    A /Branches/Br1 (from /Trunk:1) 

created branch Br1 
------------------------------------------------------------------------ 
r1 | rohit | 2013-03-05 16:18:13 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    A /Branches 
    A /Tags 
    A /Trunk 
    A /Trunk/pom.xml 
    A /Trunk/src 
    A /Trunk/src/ARTransactionFeeDelegateResponse.java 
    A /Trunk/src/ARTransactionFeeDto.java 
    A /Trunk/src/ResponseARTransFeeDtlsDto.java 

initial commit Trunk 
------------------------------------------------------------------------ 
+0

SVN中的樹衝突可能如果合併樹中的文件**在不同部分**中同時更名並編輯** ** AFAIK – 2013-03-05 11:56:23

+0

...您通常會得到一個詳細解釋: – 2013-03-05 12:00:54

+0

@ÁlvaroG.Vicario - 不,我**沒有得到**的衝突樹無論如何 – 2013-03-06 04:16:16

回答

2

這是不可能在該工作流中,即使是1.6。你必須讓 所有命令和輸出

根據記錄,你的"XFAIL conflict from merge of add over versioned file"受害者,在"Tree Conflict"設計文檔的2009年版提及。最重要的部分是

在r35341

我不能說,這次修訂是如何被翻譯成TortoiseSVN的建立與修正錯誤修正預期。我將在最新的1.6版本(TortoiseSVN 1.6.16, Build 21511 - 32 Bit , 2011/06/01 19:00:35)上測試您的工作流程。

我的日誌使用TortoiseSVN 1.7.11, Build 23600 - 32 Bit(所有合併 - 基於GUI,本地倉庫)

>svn log -v file:///Z:/Repo/ 
------------------------------------------------------------------------ 
r10 | Badger | 2013-03-05 17:32:32 +0600 (Вт, 05 мар 2013) | 2 lines 
Changed paths: 
    M /trunk 
    M /trunk/Base.txt 
    M /trunk/C1.txt 
    M /trunk/C2.txt 

Merge from branches/b2: 

------------------------------------------------------------------------ 
r9 | Badger | 2013-03-05 17:27:42 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    M /branches/b2/Base.txt 
    M /branches/b2/C1.txt 
    M /branches/b2/C2.txt 

Anfanglichen Deutsch Korperregion 
------------------------------------------------------------------------ 
r8 | Badger | 2013-03-05 17:19:28 +0600 (Вт, 05 мар 2013) | 2 lines 
Changed paths: 
    M /branches/b2 
    M /branches/b2/Base.txt 
    M /branches/b2/C1.txt 
    M /branches/b2/C2.txt 
    A /branches/b2/Reference.txt (from /trunk/Reference.txt:7) 

Merge from trunk 

------------------------------------------------------------------------ 
r7 | Badger | 2013-03-05 17:15:29 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    M /trunk 
    M /trunk/Base.txt 
    A /trunk/Reference.txt (from /branches/b1/Reference.txt:6) 

Merge B1 branch changes 
------------------------------------------------------------------------ 
r6 | Badger | 2013-03-05 17:12:26 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    M /branches/b1/Base.txt 
    A /branches/b1/Reference.txt 

Structure reflected 
------------------------------------------------------------------------ 
r5 | Badger | 2013-03-05 17:09:46 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    M /trunk/C1.txt 
    M /trunk/C2.txt 

Edition 1 
------------------------------------------------------------------------ 
r4 | Badger | 2013-03-05 17:06:38 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    A /branches/b2 (from /trunk:3) 

Branching for task2 
------------------------------------------------------------------------ 
r3 | Badger | 2013-03-05 17:05:49 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    A /branches/b1 (from /trunk:2) 

Branching for task1 
------------------------------------------------------------------------ 
r2 | Badger | 2013-03-05 17:03:21 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    A /trunk/Base.txt 
    A /trunk/C1.txt 
    A /trunk/C2.txt 

Basic set 
------------------------------------------------------------------------ 
r1 | Badger | 2013-03-05 16:59:36 +0600 (Вт, 05 мар 2013) | 1 line 
Changed paths: 
    A /branches 
    A /tags 
    A /trunk 

Imported folder structure 
------------------------------------------------------------------------ 

評論

我試圖重複你的動作儘可能準確地

  • r2-r4 - 準備的測試區域:樹幹和兩個分支
  • r5 - 改變了主幹以便有分歧歷史
  • r6 - 在分支b1中添加了新文件(Reference.txt)
  • r7 - 合併分支b1到主幹(參考文獻。TXT出現在軀幹)
  • R8 - 合併主幹分支B2(Reference.txt出現在B2)
  • R9 - 在B2改變的文件,Reference.txt不變
  • R10 - 合併B2沒有任何錯誤
  • 幹路

附加

與1.6.16測試,得到的結果說明,即使我有預合併編輯分支文件到主幹合併樹

附加2

該死!它也不適用於最新的1.7版本。它我發瘋

+0

嗨,獾,我已經更新了問題將所有回購活動都進行了。我還沒有嘗試使用v1.7。因爲我需要按照我的組織當前版本在v1.6上工作。 – rohit 2013-03-05 13:42:35

1

錯誤消息可能看起來神祕,但基本上解釋了這個問題:

局部阻塞,進入加時合併

您從BR2移植R3到R8到軀幹。問題是,在R7中添加ARTransactionFeeDto2.java

r7 | rohit | 2013-03-05 16:29:34 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    A /Branches/Br2/src/ARTransactionFeeDto2.java (from /Trunk/src/ARTransactionF 
eeDto2.java:6) 

...但因爲該文件已經存在,這種變化不能被移植到主幹:

r5 | rohit | 2013-03-05 16:22:26 +0530 (Tue, 05 Mar 2013) | 1 line 
Changed paths: 
    A /Trunk/src/ARTransactionFeeDto2.java (from /Branches/Br1/src/ARTransactionFeeDto2.java:4) 

顛覆提供了非常複雜的方式,以避免它但我建議你只是使用TortoiseSVN來進行合併,並在r7提示衝突時,選擇保留本地文件(無論如何都與傳入文件相同)。

+0

我的目標是讓所有從Trunk到Br2的變化。然後將我所有的Br2變更合併回Trunk。 @Álvaro - 在'r7'中,文件從Trunk添加到Br2;在'r8'中,它在Br2中被修改; Br2合併回Trunk並顯示樹狀衝突。在此,當我將本地副本保留在主幹中時,所有Br2更改都會丟失。 – rohit 2013-03-06 09:22:01

0

我試圖用SVN 1.7按照這些步驟(儘可能沒有實際可用的命令列表),它似乎按照我的預期工作。

我認爲它可能不適合你,因爲你需要在合併一個分支到樹幹時使用'--reintegrate'選項。你確定每次從任一分支合併到主幹時都使用這個選項嗎?

如果您確實使用了該選項,請忽略此答案。

+0

不,我沒有使用'--reintegrate'選項,因爲在我的情況下,分支將用於進一步的開發和合並將從樹幹 - >分支和分支 - >樹幹發生。 – rohit 2013-03-27 15:16:16

+0

請重新測試 - 製作不正確的工作流程相當容易:我擁有它,後來我無法避免在最新的TSVN中出現「樹型衝突」 – 2013-03-27 16:20:18