The script below creates a tree-conflict in a rather strange way
(checkout on top of an existing unversioned tree). But what happens
next is more interesting. It tries to move the tree-conflict victim
and this triggers an assertion in wc_db.c.
This reproduces with trunk and 1.7.x.
Script:
[[[
#!/bin/sh
set -e
cwd=`pwd`
basename=`basename $0`
scratch_area="`echo $basename | sed -e s/\.sh$//`"
repos=$scratch_area/repos
trunk=$scratch_area/trunk
branch=$scratch_area/branch
trunk_url=file:///$cwd/$repos/trunk
branch_url=file:///$cwd/$repos/branch
set -x
rm -rf $scratch_area
mkdir -p $scratch_area
mkdir -p $trunk
mkdir $trunk/epsilon
echo zeta > $trunk/epsilon/zeta
svnadmin create $cwd/$repos
svn import $trunk $trunk_url -m "importing project tree"
# Do not remove the imported tree, but try to checkout a WC on top of it:
svn checkout $trunk_url $trunk
svn st $trunk
svn mv $trunk/epsilon $trunk/epsilon2
]]]
The output (with 1.7.x) is:
$ ./bug.sh
+ rm -rf bug
+ mkdir -p bug
+ mkdir -p bug/trunk
+ mkdir bug/trunk/epsilon
+ echo zeta
+ > bug/trunk/epsilon/zeta
+ svnadmin create /tmp/bug/repos
+ svn import bug/trunk file:////tmp/bug/repos/trunk -m importing project tree
Adding bug/trunk/epsilon
Adding bug/trunk/epsilon/zeta
Committed revision 1.
+ svn checkout file:////tmp/bug/repos/trunk bug/trunk
C bug/trunk/epsilon
A bug/trunk/epsilon/zeta
Checked out revision 1.
+ svn st bug/trunk
D C bug/trunk/epsilon
> local unversioned, incoming add upon update
D bug/trunk/epsilon/zeta
Summary of conflicts:
Tree conflicts: 1
+ svn mv bug/trunk/epsilon bug/trunk/epsilon2
A bug/trunk/epsilon2
subversion/libsvn_wc/wc_db.c:4122: (apr_err=235000)
svn: E235000: In file 'subversion/libsvn_wc/wc_db.c' line 4122: assertion failed (presence == svn_wc__db_status_normal)
Abort trap (core dumped)
Received on 2011-07-29 01:38:10 CEST