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