2013-03-05 132 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