You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by James French <Ja...@naturalmotion.com> on 2013/09/09 15:37:05 UTC

Reverse merge with 1.8.3 yielded tree conflicts

Hi,

I got a report today of svn 1.8.3 (tortoise 1.8.2) producing tree conflicts when a sync up merge was reverted. I ran the merge again with 1.8.3 to confirm the issue and again using 1.7.8 command line (which worked). See the status reports below (a bit hacked manually to remove some sensitive stuff but hopefully there's enough to get an idea). Looks like a regression.

1.8.3:

D       Common
D       Common\TBCommsNetworkManagement.cpp
D       Common\TBCommsNetworkManagement.h
D       Common\TBCommsSimpleDataManager.h
D       Common\TBDebugDraw.cpp
D       Common\TBDebugDraw.h
D       Common\TBUtilities.cpp
D       Common\TBUtilities.h
D       ProjectData\Scenes\ResponsiveCharacter.mcn
D       ProjectData\Scenes\TestBoneLocking.mcn
A  +    ProjectData\win32
      C SceneInteraction
      >   local dir edit, incoming dir delete upon merge
A  +    TBCommsNetworkManagement.cpp
A  +    TBCommsNetworkManagement.h
A  +    TBCommsSimpleDataManager.h
A  +    TBDebugDraw.cpp
A  +    TBDebugDraw.h
A  +    TBGameCharacter.cpp
A  +    TBGameCharacter.h
A  +    TBUtilities.cpp
A  +    TBUtilities.h
      C TestAnimationOnly
      >   local dir edit, incoming dir delete upon merge
A  +    TestAnimationOnly.cpp
A  +    TestAnimationOnly.h
      C TestBareBones
      >   local dir edit, incoming dir delete upon merge
A  +    TestBareBones.cpp
A  +    TestBareBones.h
      C TestBoneLocking
      >   local dir edit, incoming dir delete upon merge
      C TestInverseNetworkControl
      >   local dir edit, incoming dir delete upon merge
A  +    TestInverseNetworkControl.cpp
A  +    TestInverseNetworkControl.h
      C TestVaulting
      >   local dir edit, incoming dir delete upon merge
A  +    TestVaulting.cpp
A  +    TestVaulting.h
M       gameIntegration_WIN32.vcproj
M       gameIntegration_WIN32.vcxproj
M       gameIntegration_WIN32.vcxproj.filters
M       gameIntegration_WIN32.vs2008.sln
M       gameIntegration_WIN32.vs2010.sln
M       gameIntegration_X360.vcxproj
M       gameIntegration_X360.vcxproj.filters
M       gameIntegration_X360.vs2010.sln
A  +    main.cpp
Summary of conflicts:
  Tree conflicts: 11

1.7.8

D       Common
D       Common\TBCommsNetworkManagement.cpp
D       Common\TBCommsNetworkManagement.h
D       Common\TBCommsSimpleDataManager.h
D       Common\TBDebugDraw.cpp
D       Common\TBDebugDraw.h
D       Common\TBUtilities.cpp
D       Common\TBUtilities.h
D       ProjectData\Scenes\ResponsiveCharacter.mcn
D       ProjectData\Scenes\TestBoneLocking.mcn
A  +    ProjectData\win32
D       SceneInteraction
D       SceneInteraction\SceneInteraction.cpp
D       SceneInteraction\SceneInteraction.h
D       SceneInteraction\SceneInteraction_WIN32.vcproj
D       SceneInteraction\SceneInteraction_WIN32.vcxproj
D       SceneInteraction\SceneInteraction_WIN32.vcxproj.filters
D       SceneInteraction\SceneInteraction_WIN32.vs2008.bat
D       SceneInteraction\SceneInteraction_WIN32.vs2008.sln
D       SceneInteraction\SceneInteraction_WIN32.vs2010.bat
D       SceneInteraction\SceneInteraction_WIN32.vs2010.sln
D       SceneInteraction\SceneInteraction_X360.vcxproj
D       SceneInteraction\SceneInteraction_X360.vcxproj.filters
D       SceneInteraction\SceneInteraction_X360.vs2010.bat
D       SceneInteraction\SceneInteraction_X360.vs2010.sln
D       SceneInteraction\TBXInput.cpp
D       SceneInteraction\TBXInput.h
D       SceneInteraction\main.cpp
A  +    TBCommsNetworkManagement.cpp
A  +    TBCommsNetworkManagement.h
A  +    TBCommsSimpleDataManager.h
A  +    TBDebugDraw.cpp
A  +    TBDebugDraw.h
A  +    TBGameCharacter.cpp
A  +    TBGameCharacter.h
A  +    TBUtilities.cpp
A  +    TBUtilities.h
D       TestAnimationOnly
D       TestAnimationOnly\TestAnimationOnly.cpp
D       TestAnimationOnly\TestAnimationOnly.h
D       TestAnimationOnly\TestAnimationOnly_WIN32.vcproj
D       TestAnimationOnly\TestAnimationOnly_WIN32.vcxproj
D       TestAnimationOnly\TestAnimationOnly_WIN32.vcxproj.filters
D       TestAnimationOnly\TestAnimationOnly_WIN32.vs2008.bat
D       TestAnimationOnly\TestAnimationOnly_WIN32.vs2008.sln
D       TestAnimationOnly\TestAnimationOnly_WIN32.vs2010.bat
D       TestAnimationOnly\TestAnimationOnly_WIN32.vs2010.sln
D       TestAnimationOnly\TestAnimationOnly_X360.vcxproj
D       TestAnimationOnly\TestAnimationOnly_X360.vcxproj.filters
D       TestAnimationOnly\TestAnimationOnly_X360.vs2010.bat
D       TestAnimationOnly\TestAnimationOnly_X360.vs2010.sln
D       TestAnimationOnly\main.cpp
A  +    TestAnimationOnly.cpp
A  +    TestAnimationOnly.h
D       TestBareBones
D       TestBareBones\TestBareBones.cpp
D       TestBareBones\TestBareBones.h
D       TestBareBones\TestBareBones_WIN32.vcproj
D       TestBareBones\TestBareBones_WIN32.vcxproj
D       TestBareBones\TestBareBones_WIN32.vcxproj.filters
D       TestBareBones\TestBareBones_WIN32.vs2008.bat
D       TestBareBones\TestBareBones_WIN32.vs2008.sln
D       TestBareBones\TestBareBones_WIN32.vs2010.bat
D       TestBareBones\TestBareBones_WIN32.vs2010.sln
D       TestBareBones\TestBareBones_X360.vcxproj
D       TestBareBones\TestBareBones_X360.vcxproj.filters
D       TestBareBones\TestBareBones_X360.vs2010.bat
D       TestBareBones\TestBareBones_X360.vs2010.sln
D       TestBareBones\main.cpp
A  +    TestBareBones.cpp
A  +    TestBareBones.h
D       TestBoneLocking
D       TestBoneLocking\TBXInput.cpp
D       TestBoneLocking\TBXInput.h
D       TestBoneLocking\TestBoneLocking.cpp
D       TestBoneLocking\TestBoneLocking.h
D       TestBoneLocking\TestBoneLocking_WIN32.vcproj
D       TestBoneLocking\TestBoneLocking_WIN32.vcxproj
D       TestBoneLocking\TestBoneLocking_WIN32.vcxproj.filters
D       TestBoneLocking\TestBoneLocking_WIN32.vs2008.bat
D       TestBoneLocking\TestBoneLocking_WIN32.vs2008.sln
D       TestBoneLocking\TestBoneLocking_WIN32.vs2010.bat
D       TestBoneLocking\TestBoneLocking_WIN32.vs2010.sln
D       TestBoneLocking\TestBoneLocking_X360.vcxproj
D       TestBoneLocking\TestBoneLocking_X360.vcxproj.filters
D       TestBoneLocking\TestBoneLocking_X360.vs2010.bat
D       TestBoneLocking\TestBoneLocking_X360.vs2010.sln
D       TestBoneLocking\main.cpp
D       TestInverseNetworkControl
D       TestInverseNetworkControl\TestInverseNetworkControl.cpp
D       TestInverseNetworkControl\TestInverseNetworkControl.h
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vcproj
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vcxproj
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vcxproj.filters
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vs2008.bat
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vs2008.sln
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vs2010.bat
D       TestInverseNetworkControl\TestInverseNetworkControl_WIN32.vs2010.sln
D       TestInverseNetworkControl\TestInverseNetworkControl_X360.vcxproj
D       TestInverseNetworkControl\TestInverseNetworkControl_X360.vcxproj.filters
D       TestInverseNetworkControl\TestInverseNetworkControl_X360.vs2010.bat
D       TestInverseNetworkControl\TestInverseNetworkControl_X360.vs2010.sln
D       TestInverseNetworkControl\main.cpp
A  +    TestInverseNetworkControl.cpp
A  +    TestInverseNetworkControl.h
D       TestVaulting
D       TestVaulting\TestVaulting.cpp
D       TestVaulting\TestVaulting.h
D       TestVaulting\TestVaulting_WIN32.vcproj
D       TestVaulting\TestVaulting_WIN32.vcxproj
D       TestVaulting\TestVaulting_WIN32.vcxproj.filters
D       TestVaulting\TestVaulting_WIN32.vs2008.bat
D       TestVaulting\TestVaulting_WIN32.vs2008.sln
D       TestVaulting\TestVaulting_WIN32.vs2010.bat
D       TestVaulting\TestVaulting_WIN32.vs2010.sln
D       TestVaulting\TestVaulting_X360.vcxproj
D       TestVaulting\TestVaulting_X360.vcxproj.filters
D       TestVaulting\TestVaulting_X360.vs2010.bat
D       TestVaulting\TestVaulting_X360.vs2010.sln
D       TestVaulting\main.cpp
A  +    TestVaulting.cpp
A  +    TestVaulting.h
R  +    gameIntegration_WIN32.vcproj
R  +    gameIntegration_WIN32.vcxproj
R  +    gameIntegration_WIN32.vcxproj.filters
R  +    gameIntegration_WIN32.vs2008.sln
R  +    gameIntegration_WIN32.vs2010.sln
R  +    gameIntegration_X360.vcxproj
R  +    gameIntegration_X360.vcxproj.filters
R  +    gameIntegration_X360.vs2010.sln
A  +    main.cpp

RE: Reverse merge with 1.8.3 yielded tree conflicts

Posted by James French <Ja...@naturalmotion.com>.
Thanks for the explanation Stefan. Glad svn is working properly :-)

-----Original Message-----
From: Stefan Sperling [mailto:stsp@elego.de] 
Sent: 09 September 2013 15:55
To: James French
Cc: users@subversion.apache.org
Subject: Re: Reverse merge with 1.8.3 yielded tree conflicts

On Mon, Sep 09, 2013 at 02:37:05PM +0100, James French wrote:
> Hi,
> 
> I got a report today of svn 1.8.3 (tortoise 1.8.2) producing tree conflicts when a sync up merge was reverted. I ran the merge again with 1.8.3 to confirm the issue and again using 1.7.8 command line (which worked). See the status reports below (a bit hacked manually to remove some sensitive stuff but hopefully there's enough to get an idea). Looks like a regression.
> 

No, this is a feature, not a regression.
It is listed in CHANGES as:

    * tree conflicts on directories detected better during merges (issue #3150)

Short story is that 1.7 was deleting subtrees during merges without considering the contents of what was being deleted. Whereas 1.8 flags a tree conflict if the subtree being deleted during a merge differs from what the commit being merged was deleting on the merge source branch.
This allows you to verify whether the deletion of that subtree is in fact desired within the context of the merge target.

In Subversion 1.7, users who were concerned about that had to manually verify every deleted subtree before committing the result of a merge.
The purpose of these new tree conflicts flagged by 1.8 is to point out the deleted subtrees which might require such manual verification.

In your case, you seem to be fine with the deletion of the affected subtrees. So you can run this to resolve the conflict for each subtree, for example:

  svn resolve --accept working SceneInteraction # clear conflict marker
  svn rm SceneInteraction  # delete what should be deleted

In the future, we hope to improve the UI to better guide users during interactive resolution of these conflicts.

Re: Reverse merge with 1.8.3 yielded tree conflicts

Posted by Stefan Sperling <st...@elego.de>.
On Mon, Sep 09, 2013 at 02:37:05PM +0100, James French wrote:
> Hi,
> 
> I got a report today of svn 1.8.3 (tortoise 1.8.2) producing tree conflicts when a sync up merge was reverted. I ran the merge again with 1.8.3 to confirm the issue and again using 1.7.8 command line (which worked). See the status reports below (a bit hacked manually to remove some sensitive stuff but hopefully there's enough to get an idea). Looks like a regression.
> 

No, this is a feature, not a regression.
It is listed in CHANGES as:

    * tree conflicts on directories detected better during merges (issue #3150)

Short story is that 1.7 was deleting subtrees during merges without
considering the contents of what was being deleted. Whereas 1.8 flags
a tree conflict if the subtree being deleted during a merge differs from
what the commit being merged was deleting on the merge source branch.
This allows you to verify whether the deletion of that subtree is in
fact desired within the context of the merge target.

In Subversion 1.7, users who were concerned about that had to manually
verify every deleted subtree before committing the result of a merge.
The purpose of these new tree conflicts flagged by 1.8 is to point out
the deleted subtrees which might require such manual verification.

In your case, you seem to be fine with the deletion of the affected
subtrees. So you can run this to resolve the conflict for each
subtree, for example:

  svn resolve --accept working SceneInteraction # clear conflict marker
  svn rm SceneInteraction  # delete what should be deleted

In the future, we hope to improve the UI to better guide users during
interactive resolution of these conflicts.