[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

State of tree conflict detection in trunk (for files)

From: Stefan Sperling <stsp_at_elego.de>
Date: Fri, 14 Nov 2008 13:43:24 +0000

Hi,

I took the time to run the tree-conflict scripts I've created for my
thesis (https://www.inf.fu-berlin.de/w/SE/ThesisTreeConflicts)
against current Subversion trunk (r34187).

These scripts provoke many different tree conflicts scenarios.
For the thesis I ran them with Subversion 1.5, and not a single
tree conflict was detected.

The results for current trunk however are most pleasing. Note that
I've only tested for files (since directories are, AFAIK, not the
main focus for 1.6).

I've noticed a few minor issues, see comments inline marked XXX.

I have not yet tested behaviour of subsequent update, revert, resolve,
and commit operations, but I am planning to do so later today and post
my results here.

I hope there won't be any more problems like the one Mark Phippard reported
in http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=144666
but you never know. We had better catch them before release ;)

Anyone struggling to understand what is happening below will probably want
to refer to my scripts, which are included in this tarball inside the
'scripts/svn/' directory:
https://www.mi.fu-berlin.de/wiki/pub/SE/ThesisTreeConflicts/thesis-tree-conflicts.tar.gz
Plain http link: http://stsp.name/thesis-tree-conflicts.tar.gz

Now, on to the show:

=== svn-files-copy1-destroyed
Not detected -- file at copy target path is added,
file at copy source path is left destroyed.

$ svn st svn-files-copy1-destroyed/branch
 M svn-files-copy1-destroyed/branch
D svn-files-copy1-destroyed/branch/alpha
A + svn-files-copy1-destroyed/branch/alpha.copied

=== svn-files-copy1-no-object
Not detected, item at copy target path is created unconditionally.

$ svn st svn-files-copy1-no-object/branch/
 M svn-files-copy1-no-object/branch
A + svn-files-copy1-no-object/branch/eta.copied

=== svn-files-copy2-created
Detected.

--- Merging r2 through r3 into 'svn-files-copy2-created/branch':
   C svn-files-copy2-created/branch/alpha.copied
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-copy2-created/branch
 M svn-files-copy2-created/branch
A C svn-files-copy2-created/branch/alpha.copied
$ svn info svn-files-copy2-created/branch/alpha.copied
[...]
Tree conflict:
  The merge attempted to add 'alpha.copied'.
This action was obstructed by an item in the working copy.

=== svn-files-copy2-moved
Detected.

--- Merging r2 through r3 into 'svn-files-copy2-moved/branch':
   C svn-files-copy2-moved/branch/alpha.copied
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-copy2-moved/branch/
 M svn-files-copy2-moved/branch
A + C svn-files-copy2-moved/branch/alpha.copied
D svn-files-copy2-moved/branch/beta
$ svn info svn-files-copy2-moved/branch/alpha.copied
[...]
Tree conflict:
  The merge attempted to add 'alpha.copied'.
This action was obstructed by an item in the working copy.

=== svn-files-create-created
Detected.

--- Merging r2 through r3 into 'svn-files-create-created/branch':
   C svn-files-create-created/branch/eta
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-create-created/branch
 M svn-files-create-created/branch
A C svn-files-create-created/branch/eta
$ svn info svn-files-create-created/branch/eta
[...]
Tree conflict:
  The merge attempted to add 'eta'.
This action was obstructed by an item in the working copy.

=== svn-files-create-moved
Detected.

--- Merging r2 through r3 into 'svn-files-create-moved/branch':
   C svn-files-create-moved/branch/eta
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-create-moved/branch/
 M svn-files-create-moved/branch
D svn-files-create-moved/branch/alpha
A + C svn-files-create-moved/branch/eta
$ svn info svn-files-create-moved/branch/eta
[...]
Tree conflict:
  The merge attempted to add 'eta'.
This action was obstructed by an item in the working copy.

=== svn-files-destroy-modified
Detected.

--- Merging r2 through r4 into 'svn-files-destroy-modified/branch':
   C svn-files-destroy-modified/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-destroy-modified/branch
 M svn-files-destroy-modified/branch
      C svn-files-destroy-modified/branch/alpha
$ svn info svn-files-destroy-modified/branch/alpha
[...]
Tree conflict:
  The merge attempted to delete 'alpha'
  (possibly as part of a rename operation).
Either you have edited 'alpha' locally, or it has been edited in the
history of the branch you are merging into, but those edits are not
present on the branch you are merging from.

=== svn-files-destroy-moved
Detected.

--- Merging r2 through r3 into 'svn-files-destroy-moved/branch/alpha':
   C svn-files-destroy-moved/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-destroy-moved/branch
 M svn-files-destroy-moved/branch
D C svn-files-destroy-moved/branch/alpha
A + svn-files-destroy-moved/branch/alpha.moved
$ svn info svn-files-destroy-moved/branch/alpha
[...]
Tree conflict:
  The merge attempted to delete 'alpha'
  (possibly as part of a rename operation).
  You have deleted 'alpha' locally.
  Maybe you renamed it?

=== svn-files-modify-destroyed
Detected.

--- Merging r2 through r3 into 'svn-files-modify-destroyed/branch/alpha':
   C svn-files-modify-destroyed/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-modify-destroyed/branch
 M svn-files-modify-destroyed/branch
D C svn-files-modify-destroyed/branch/alpha
$ svn info svn-files-modify-destroyed/branch/alpha
[...]
Tree conflict:
  The merge attempted to edit 'alpha'.
'alpha' does not exist locally. Maybe you renamed it? Or has it been
renamed in the history of the branch you are merging into?

=== svn-files-modify-no-object
Detected.

--- Merging r4 into 'svn-files-modify-no-object/branch':
   C svn-files-modify-no-object/branch/eta
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-modify-no-object/branch
 M svn-files-modify-no-object/branch
! C svn-files-modify-no-object/branch/eta
$ svn info svn-files-modify-no-object/branch/eta
[...]
Tree conflict:
  The merge attempted to edit 'eta'.
'eta' does not exist locally. Maybe you renamed it? Or has it been
renamed in the history of the branch you are merging into?

=== svn-files-move1-destroyed
Detected.

--- Merging r2 through r3 into 'svn-files-move1-destroyed/branch':
A svn-files-move1-destroyed/branch/alpha.moved
--- Merging r2 through r3 into 'svn-files-move1-destroyed/branch/alpha':
   C svn-files-move1-destroyed/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-move1-destroyed/branch
 M svn-files-move1-destroyed/branch
D C svn-files-move1-destroyed/branch/alpha
A + svn-files-move1-destroyed/branch/alpha.moved
$ svn info svn-files-move1-destroyed/branch/alpha
[...]
Tree conflict:
  The merge attempted to delete 'alpha'
  (possibly as part of a rename operation).
  You have deleted 'alpha' locally.
  Maybe you renamed it?

=== svn-files-move1-moved
Detected.

--- Merging r2 through r3 into 'svn-files-move1-moved/branch':
A svn-files-move1-moved/branch/alpha.moved1
--- Merging r2 through r3 into 'svn-files-move1-moved/branch/alpha':
   C svn-files-move1-moved/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-move1-moved/branch
 M svn-files-move1-moved/branch
A + svn-files-move1-moved/branch/alpha.moved1
A + svn-files-move1-moved/branch/alpha.moved2
D C svn-files-move1-moved/branch/alpha
$ svn info svn-files-move1-moved/branch/alpha
[...]
Tree conflict:
  The merge attempted to delete 'alpha'
  (possibly as part of a rename operation).
  You have deleted 'alpha' locally.
  Maybe you renamed it?

=== svn-files-move1-no-object
Detected.

--- Merging r4 into 'svn-files-move1-no-object/branch':
A svn-files-move1-no-object/branch/eta.moved
   C svn-files-move1-no-object/branch/eta
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-move1-no-object/branch
 M svn-files-move1-no-object/branch
! C svn-files-move1-no-object/branch/eta
A + svn-files-move1-no-object/branch/eta.moved
$ svn info svn-files-move1-no-object/branch/eta
[...]
Tree conflict:
  The merge attempted to delete 'eta'
  (possibly as part of a rename operation).
  You have deleted 'eta' locally.
  Maybe you renamed it?

XXX: Should say 'eta does not exist locally'.

=== svn-files-move2-created
Detected.

--- Merging r2 through r3 into 'svn-files-move2-created/branch':
   C svn-files-move2-created/branch/alpha.moved
D svn-files-move2-created/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-move2-created/branch
 M svn-files-move2-created/branch
D svn-files-move2-created/branch/alpha
A C svn-files-move2-created/branch/alpha.moved
$ svn info svn-files-move2-created/branch/alpha.moved
[...]
Tree conflict:
  The merge attempted to add 'alpha.moved'.
This action was obstructed by an item in the working copy.

XXX: Should say 'attempted to either newly add alpha.moved
     or copy or move another file to this location'.

=== svn-files-move2-moved
Detected:

--- Merging r2 through r3 into 'svn-files-move2-moved/branch':
   C svn-files-move2-moved/branch/alpha.moved
D svn-files-move2-moved/branch/alpha
Summary of conflicts:
  Tree conflicts: 1
$ svn st svn-files-move2-moved/branch/
 M svn-files-move2-moved/branch
D svn-files-move2-moved/branch/alpha
D svn-files-move2-moved/branch/beta
A + C svn-files-move2-moved/branch/alpha.moved
$ svn info svn-files-move2-moved/branch/alpha.moved
[...]
Tree conflict:
  The merge attempted to add 'alpha.moved'.
This action was obstructed by an item in the working copy.

XXX: See XXX for svn-files-move2-created. Applies here, too.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-11-14 14:43:49 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.