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

Re: nested copies broken on trunk

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Thu, 28 Jan 2010 18:12:57 +0000

Philip Martin <philip.martin_at_wandisco.com> writes:

> workqueue.c:run_deletion_postcommit calls svn_wc__db_scan_base_repos
> assuming that the deleted file has a base_node entry, but it doesn't
> because it was copied.

copy_tests.py 8 tests this and it passes. It turns out that it
matters whether the deleted file is an immediate child of the copied
directory, or in a subdirectory:

   svnadmin create repo
   svn import -mm Makefile file://`pwd`/repo/A/B/f
   svn import -mm Makefile file://`pwd`/repo/A/f
   svn co file://`pwd`/repo wc
   svn mv wc/A wc/A2

At this stage neither A2/f nor A2/B/f have a base node:

   echo "select * from base_node;" | sqlite3 wc/A2/.svn/wc.db
   echo "select * from base_node;" | sqlite3 wc/A2/B/.svn/wc.db

After the delete:

   svn rm wc/A2/f wc/A2/B/f

A2/f still has no base node, but the delete creates a base node for
A2/B/f:

   echo "select * from base_node;" | sqlite3 wc/A2/B/.svn/wc.db
   1|f|1|A2/B/f||normal|file|2|$md5 $34faba561e9cce512f02464e7bc263cd|33921|2|1264701908557819|pm|infinity||1264701908000000||||

If I rm just A2/B/f and commit it works, if I rm just A2/f and commit
I get the error you reported, and if rm both A2/f and A2/B/f I get a
different error:

   svn ci -mm wc1/
   Adding wc1/A2
   Deleting wc1/A2/B/f
   Deleting wc1/A2/f
   ../src/subversion/libsvn_subr/sqlite.c:280: (apr_err=235000)
   svn: In file '../src/subversion/libsvn_wc/wc_db.c' line 4574: assertion failed (child_presence != svn_wc__db_status_not_present)

-- 
Philip
Received on 2010-01-28 19:13:36 CET

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