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

Re: State of tree conflict detection in trunk (for directories) (was: same for files)

From: Stefan Sperling <stsp_at_elego.de>
Date: Sun, 16 Nov 2008 22:03:34 +0000

On Fri, Nov 14, 2008 at 01:43:24PM +0000, Stefan Sperling wrote:
> 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.

Same story (i.e. tree conflict *detection* only) for directories,
using trunk build from r34234.

I am happy to announce that Subversion now detects more tree conflicts
than Mercurial and Git combined:

        svn: 21, hg: 4, git: 15

The svn count is from mails in this thread.
Subversion 1.5 would detect NO tree conflicts at all.
See thesis paper linked above for were git and hg numbers come from.
Note that for hg and git, tree conflicts treated as text conflicts
were not counted. Do not take these numbers too seriously, they
are not universal indicators of the quality of any particular system.

While svn can detect 21 and possibly more tree conflicts, we still have
to improve the resolving part.
See http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=145339

Now, here's what detection currently look like for directories:

=== svn-directories-copy1-destroyed
Not detected (not detected for files either)

--- Merging r2 through r3 into 'svn-directories-copy1-destroyed/branch':
A svn-directories-copy1-destroyed/branch/gamma.copied
A svn-directories-copy1-destroyed/branch/gamma.copied/delta

$ svn status svn-directories-copy1-destroyed/branch
 M svn-directories-copy1-destroyed/branch
D svn-directories-copy1-destroyed/branch/gamma
D svn-directories-copy1-destroyed/branch/gamma/delta
A + svn-directories-copy1-destroyed/branch/gamma.copied
A + svn-directories-copy1-destroyed/branch/gamma.copied/delta

=== svn-directories-copy1-no-object
Not detected (not detected for files either)

--- Merging r4 into 'svn-directories-copy1-no-object/branch':
A svn-directories-copy1-no-object/branch/eta.copied

$ svn status svn-directories-copy1-no-object/branch
 M svn-directories-copy1-no-object/branch
A + svn-directories-copy1-no-object/branch/eta.copied

=== svn-directories-copy2-created
Not detected (detected for files!)

--- Merging r2 through r3 into 'svn-directories-copy2-created/branch':
   C svn-directories-copy2-created/branch/gamma.copied
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-copy2-created/branch
 M svn-directories-copy2-created/branch
A C svn-directories-copy2-created/branch/gamma.copied
A svn-directories-copy2-created/branch/gamma.copied/iota

=== svn-directories-copy2-moved
Detected.

--- Merging r2 through r3 into 'svn-directories-copy2-moved/branch':
   C svn-directories-copy2-moved/branch/gamma.copied
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-copy2-moved/branch
 M svn-directories-copy2-moved/branch
A + C svn-directories-copy2-moved/branch/gamma.copied
D svn-directories-copy2-moved/branch/epsilon
D svn-directories-copy2-moved/branch/epsilon/zeta
$ svn info svn-directories-copy2-moved/branch/gamma.copied
[...]
Tree conflict:
  The merge attempted to add 'gamma.copied'.
Either you have added 'gamma.copied' locally, or it has been added in the
history of the branch you are merging into.

=== svn-directories-create-created
Detected.

--- Merging r2 through r3 into 'svn-directories-create-created/branch':
   C svn-directories-create-created/branch/eta
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-create-created/branch
 M svn-directories-create-created/branch
A C svn-directories-create-created/branch/eta
A svn-directories-create-created/branch/eta/theta
$ svn info svn-directories-create-created/branch/eta
[...]
Tree conflict:
  The merge attempted to add 'eta'.
Either you have added 'eta' locally, or it has been added in the
history of the branch you are merging into.

=== svn-directories-create-moved
Detected.

--- Merging r2 through r3 into 'svn-directories-create-moved/branch':
   C svn-directories-create-moved/branch/eta
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-create-moved/branch
 M svn-directories-create-moved/branch
D svn-directories-create-moved/branch/gamma
D svn-directories-create-moved/branch/gamma/delta
A + C svn-directories-create-moved/branch/eta
$ svn info svn-directories-create-moved/branch/eta
[...]
Tree conflict:
  The merge attempted to add 'eta'.
Either you have added 'eta' locally, or it has been added in the
history of the branch you are merging into.

=== svn-directories-destroy-modified
Not detected (detected for files!)

--- Merging r2 through r4 into 'svn-directories-destroy-modified/branch':
D svn-directories-destroy-modified/branch/gamma

$ svn status svn-directories-destroy-modified/branch
 M svn-directories-destroy-modified/branch
D svn-directories-destroy-modified/branch/gamma
D svn-directories-destroy-modified/branch/gamma/delta
D svn-directories-destroy-modified/branch/gamma/iota

=== svn-directories-destroy-moved
Detected.

--- Merging r2 through r4 into 'svn-directories-destroy-moved/branch':
   C svn-directories-destroy-moved/branch/gamma
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-destroy-moved/branch
 M svn-directories-destroy-moved/branch
! C svn-directories-destroy-moved/branch/gamma
$ svn info svn-directories-destroy-moved/branch/gamma
[...]
Tree conflict:
  The merge attempted to delete 'gamma',
  or attempted to rename it.
  You have deleted 'gamma' locally.
  Maybe you renamed it?

=== svn-directories-move1-destroyed
Detected.

--- Merging r2 through r3 into 'svn-directories-move1-destroyed/branch':
A svn-directories-move1-destroyed/branch/gamma.moved
A svn-directories-move1-destroyed/branch/gamma.moved/delta
--- Merging r2 through r3 into 'svn-directories-move1-destroyed/branch/gamma':
   C svn-directories-move1-destroyed/branch/gamma
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-move1-destroyed/branch
 M svn-directories-move1-destroyed/branch
D C svn-directories-move1-destroyed/branch/gamma
D svn-directories-move1-destroyed/branch/gamma/delta
A + svn-directories-move1-destroyed/branch/gamma.moved
A + svn-directories-move1-destroyed/branch/gamma.moved/delta
$ svn info svn-directories-move1-destroyed/branch/gamma
[...]
Tree conflict:
  The merge attempted to delete 'gamma',
  or attempted to rename it.
  You have deleted 'gamma' locally.
  Maybe you renamed it?

=== svn-directories-move1-moved
Detected.

--- Merging r2 through r3 into 'svn-directories-move1-moved/branch':
A svn-directories-move1-moved/branch/gamma.moved1
A svn-directories-move1-moved/branch/gamma.moved1/delta
--- Merging r2 through r3 into 'svn-directories-move1-moved/branch/gamma':
   C svn-directories-move1-moved/branch/gamma
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-move1-moved/branch
 M svn-directories-move1-moved/branch
D C svn-directories-move1-moved/branch/gamma
D svn-directories-move1-moved/branch/gamma/delta
A + svn-directories-move1-moved/branch/gamma.moved1
A + svn-directories-move1-moved/branch/gamma.moved1/delta
A + svn-directories-move1-moved/branch/gamma.moved2
$ svn info svn-directories-move1-moved/branch/gamma
[...]
Tree conflict:
  The merge attempted to delete 'gamma',
  or attempted to rename it.
  You have deleted 'gamma' locally.
  Maybe you renamed it?

=== svn-directories-move1-no-object
Not detected (detected for files!)

--- Merging r4 into 'svn-directories-move1-no-object/branch':
A svn-directories-move1-no-object/branch/eta.copied

$ svn status svn-directories-move1-no-object/branch
 M svn-directories-move1-no-object/branch
A + svn-directories-move1-no-object/branch/eta.copied

=== svn-directories-move2-created
Detected.

--- Merging r2 through r3 into 'svn-directories-move2-created/branch':
   C svn-directories-move2-created/branch/gamma.moved
D svn-directories-move2-created/branch/gamma
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-move2-created/branch
 M svn-directories-move2-created/branch
D svn-directories-move2-created/branch/gamma
D svn-directories-move2-created/branch/gamma/delta
A C svn-directories-move2-created/branch/gamma.moved
A svn-directories-move2-created/branch/gamma.moved/iota
$ svn info svn-directories-move2-created/branch/gamma.moved
[...]
Tree conflict:
  The merge attempted to add 'gamma.moved'.
Either you have added 'gamma.moved' locally, or it has been added in the
history of the branch you are merging into.

=== svn-directories-move2-moved
Detected.

--- Merging r2 through r3 into 'svn-directories-move2-moved/branch':
   C svn-directories-move2-moved/branch/gamma.moved
D svn-directories-move2-moved/branch/gamma
Summary of conflicts:
  Tree conflicts: 1

$ svn status svn-directories-move2-moved/branch
 M svn-directories-move2-moved/branch
D svn-directories-move2-moved/branch/gamma
D svn-directories-move2-moved/branch/gamma/delta
D svn-directories-move2-moved/branch/epsilon
D svn-directories-move2-moved/branch/epsilon/zeta
A + C svn-directories-move2-moved/branch/gamma.moved
$ svn info svn-directories-move2-moved/branch/gamma.moved
[...]
Tree conflict:
  The merge attempted to add 'gamma.moved'.
Either you have added 'gamma.moved' locally, or it has been added in the
history of the branch you are merging into.
===

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-16 23:03:51 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.