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

PROPPATCHing revisions

From: Ben Collins-Sussman <sussman_at_collab.net>
Date: 2002-09-27 21:37:32 CEST

Herr Stein,

I need to understand how to best map deltaV concepts to svn; I'm
attempting to make our dav layer implement the new
revision-prop-changing RA function.

 * I've already written simple libsvn_ra_dav code that calls PROPPATCH
   on a baseline collection url (something like !svn/bc/5).

 * On the server, dav_method_proppatch handles the request. It begins
   by asking mod_dav_svn for the resource. The resource that comes
   back claims to be TYPE_REGULAR, versioned, but *not* baselined (is
   that correct?) and not working.

 * dav_auto_checkout then runs. Because the resource claims to be
   versioned but NOT working, it calls mod_dav_svn's
   auto_versionable() routine, as a way figuring out if an
   auto-checkout is possible. mod_dav_svn doesn't do auto-anything
   yet, so it always returns 0 ("not auto-versionable"), and mod_dav
   then returns general 409 failure to the client. :-(

So now I look and see what happens when we apply the 'svn:log'
property during a commit:

 * client does a PROPPATCH against a 'working baseline',
   (something like !svn/wbl/huge-activity-id/12)

 * On the server, dav_method_proppatch handles the request. It begins
   by asking mod_dav_svn for the resource. The resource that comes
   back claims to be TYPE_WORKING, versioned, baselined, and working.

 * dav_auto_checkout then runs. Because the resource claims to be
   versioned and *working*, no auto-checkout is attempted. Instead,
   dav_auto_checkout automatically returns success.

 * dav_method_proppatch finishes by stuffing the property into the
   provider's prop database.

So it appears here that mod_dav refuses to proppatch any resource that
isn't a 'working' resource. If such a request comes in, it valiantly
attempts to do an auto-checkout to *get* a working resource, but
mod_dav_svn doesn't provide that yet.

I'm confused about what needs to change here. I see different
options:

  1. should mod_dav_svn claim that the bc resource is 'working'? or
     is that just wrong? and why isn't the bc resource 'baselined'?

  2. should mod_dav_svn start implementing auto-checkout on
     baseline-collection resources, producing a working-baseline that
     can be patched? At the moment, mod_dav_svn assumes all
     working-baselines have activity (transaction) ids in them.
     Should we break this assumption? Or maybe we should create an
     activity anyway, even though there's no fs txn, *just* for the
     purpose of generating a wbl from a bc? Our auto-checkin could then
     cleanup the activity.

Awaiting the Oracle's answer...

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Sep 27 21:39:23 2002

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