On Tue, 2010-08-10 at 15:31 +0100, Julian Foad wrote: > Upgrading a WC to single-DB: > > upgrade_to_wcng() calls > > svn_wc__db_upgrade_begin() to create a new DB, and then > svn_wc__db_wclock_obtain() and then > svn_wc__write_upgraded_entries() > > The _wclock_obtain() fails because it checks that the node with relpath > "" exists. Normally in libsvn_wc a new DB is created with > svn_wc__db_init() which inserts a row for relpath "", but > svn_wc__db_upgrade_begin() doesn't. > > What's the best solution here? Not lock it? Have > svn_wc__db_upgrade_begin() create an initial "" row? Have > svn_wc__db_wclock_obtain() NOT check for existence of a "" row? The > first and last options don't sound right. Creating an initial "" row > does sound right, and requires (presumably) a modification of > svn_wc__write_upgraded_entries().
The upgrade function is creating new DBs (or a new single-DB). Should it perhaps be asking for a lock on the DB as a whole, as distinct from a recursive lock on the WC root directory? In normal operation, those two mean the same, but maybe here we need to distinguish these as two different concepts. - Julian