You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Eric Gillespie <ep...@pretzelnet.org> on 2007/12/20 03:50:43 UTC

dav_svn__update_report and resource-walk

In tightening up the operational logging, I've encountered
another mystery.  dav_svn__update_report looks for
"resource-walk" from the client, but I'm not really sure what
that causes it to do.  It doesn't really matter, though, as serf
*never* sends this and neon has code in fetch.c:make_reporter to
send it, but no make_reporter calls use it!

It was added over 5 years ago:

------------------------------------------------------------------------
r2680 | cmpilato | 2002-07-24 11:43:27 -0700 (Wed, 24 Jul 2002) | 28 lines

Create a do_diff() RA layer vtable function.

* subversion/libsvn_ra_dav/ra_dav.h
  (svn_ra_dav__do_diff): New.

* subversion/mod_dav_svn/update.c
  (dav_svn__update_report): Support new 'resource_walk' attribute.

* subversion/libsvn_ra_dav/fetch.c
  (make_reporter): Add 'resource_walk' argument.
  (svn_ra_dav__do_update, svn_ra_dav__do_status, 
    svn_ra_dav__do_switch): Update calls to make_reporter().
  (svn_ra_dav__do_diff): New.

* subversion/libsvn_ra_dav/session.c
  (dav_plugin): Add reference to svn_ra_dav__do_diff.

* subversion/include/svn_ra.h
  (svn_ra_plugin_t): Add do_diff() vtable entry.

* subversion/libsvn_ra_local/ra_plugin.c
  (make_reporter, svn_ra_local__do_diff): New.
  (svn_ra_local__do_update, svn_ra_local__do_switch, 
    svn_ra_local__do_status): Use new make_reporter() helper.
  (ra_local_plugin): Add reference to svn_ra_local__do_diff.

* subversion/libsvn_client/diff.c
  (do_merge, do_diff): Use new RA->do_diff() instead of RA->do_switch().
------------------------------------------------------------------------

Unless I'm dense, I see no explanation in that log message of
what this resource-walk is supposed to do.  As far as I can tell,
this code is completely dead.  Well, except for pre-1.2 clients,
I guess?

Thanks.

-- 
Eric Gillespie <*> epg@pretzelnet.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: dav_svn__update_report and resource-walk

Posted by "C. Michael Pilato" <cm...@collab.net>.
David Glasser wrote:
> Is requesting the resource-walk something you can do by reading our
> include/svn_*.h functions and calling an svn_foo function, or just
> something you can do by reverse-engineering our WebDAV protocol (or
> admittedly reading the notes/webdav-protocol doc)?  If the latter, I
> don't see why we need to support it; I thought our policy has always
> been that we make it as easy as possible to bind to us, but if you
> want to reverse-engineer, goo luck.

That's fair, I suppose.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: dav_svn__update_report and resource-walk

Posted by David Glasser <gl...@davidglasser.net>.
On Dec 20, 2007 5:04 AM, C. Michael Pilato <cm...@collab.net> wrote:
>
> C. Michael Pilato wrote:
> > David Glasser wrote:
> >> On Dec 19, 2007 7:50 PM, Eric Gillespie <ep...@pretzelnet.org> wrote:
> >>> In tightening up the operational logging, I've encountered
> >>> another mystery.  dav_svn__update_report looks for
> >>> "resource-walk" from the client, but I'm not really sure what
> >>> that causes it to do.  It doesn't really matter, though, as serf
> >>> *never* sends this and neon has code in fetch.c:make_reporter to
> >>> send it, but no make_reporter calls use it!
> >
> > [...]
> >
> >> I found this code a couple of months ago, was concerned about its
> >> interaction with something new (depth?), and eventually realized it
> >> was pretty dead.  Wasn't sure what to do though.
> >
> > The resource walk was used at the end of 'switch' operations as a way for
> > the client to rebuild the wc-props cache.  It was later found to be lacking
> > in certain situations, so we instead taught our clients to invalidate all
> > the wc-props before doing the real switch work, and then repopulating them
> > lazily as info became available.  The server-side logic exists for
> > compatability for older clients (who, by the way, won't know anything of the
> > new depth support).
> >
> > (If this helps to explain things, perhaps you could take the above and slap
> > it in as a comment at just the right spot in the code?)
>
> Oh!  All that said, a new non-official client (such as SVNKit) could still
> request the resource-walk, so we *should* make it depth-aware.

Is requesting the resource-walk something you can do by reading our
include/svn_*.h functions and calling an svn_foo function, or just
something you can do by reverse-engineering our WebDAV protocol (or
admittedly reading the notes/webdav-protocol doc)?  If the latter, I
don't see why we need to support it; I thought our policy has always
been that we make it as easy as possible to bind to us, but if you
want to reverse-engineer, goo luck.

--dave


-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: dav_svn__update_report and resource-walk

Posted by "C. Michael Pilato" <cm...@collab.net>.
C. Michael Pilato wrote:
> David Glasser wrote:
>> On Dec 19, 2007 7:50 PM, Eric Gillespie <ep...@pretzelnet.org> wrote:
>>> In tightening up the operational logging, I've encountered
>>> another mystery.  dav_svn__update_report looks for
>>> "resource-walk" from the client, but I'm not really sure what
>>> that causes it to do.  It doesn't really matter, though, as serf
>>> *never* sends this and neon has code in fetch.c:make_reporter to
>>> send it, but no make_reporter calls use it!
> 
> [...]
> 
>> I found this code a couple of months ago, was concerned about its
>> interaction with something new (depth?), and eventually realized it
>> was pretty dead.  Wasn't sure what to do though.
> 
> The resource walk was used at the end of 'switch' operations as a way for
> the client to rebuild the wc-props cache.  It was later found to be lacking
> in certain situations, so we instead taught our clients to invalidate all
> the wc-props before doing the real switch work, and then repopulating them
> lazily as info became available.  The server-side logic exists for
> compatability for older clients (who, by the way, won't know anything of the
> new depth support).
> 
> (If this helps to explain things, perhaps you could take the above and slap
> it in as a comment at just the right spot in the code?)

Oh!  All that said, a new non-official client (such as SVNKit) could still
request the resource-walk, so we *should* make it depth-aware.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: dav_svn__update_report and resource-walk

Posted by "C. Michael Pilato" <cm...@collab.net>.
David Glasser wrote:
> On Dec 19, 2007 7:50 PM, Eric Gillespie <ep...@pretzelnet.org> wrote:
>> In tightening up the operational logging, I've encountered
>> another mystery.  dav_svn__update_report looks for
>> "resource-walk" from the client, but I'm not really sure what
>> that causes it to do.  It doesn't really matter, though, as serf
>> *never* sends this and neon has code in fetch.c:make_reporter to
>> send it, but no make_reporter calls use it!

[...]

> I found this code a couple of months ago, was concerned about its
> interaction with something new (depth?), and eventually realized it
> was pretty dead.  Wasn't sure what to do though.

The resource walk was used at the end of 'switch' operations as a way for
the client to rebuild the wc-props cache.  It was later found to be lacking
in certain situations, so we instead taught our clients to invalidate all
the wc-props before doing the real switch work, and then repopulating them
lazily as info became available.  The server-side logic exists for
compatability for older clients (who, by the way, won't know anything of the
new depth support).

(If this helps to explain things, perhaps you could take the above and slap
it in as a comment at just the right spot in the code?)

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: dav_svn__update_report and resource-walk

Posted by David Glasser <gl...@davidglasser.net>.
On Dec 19, 2007 7:50 PM, Eric Gillespie <ep...@pretzelnet.org> wrote:
> In tightening up the operational logging, I've encountered
> another mystery.  dav_svn__update_report looks for
> "resource-walk" from the client, but I'm not really sure what
> that causes it to do.  It doesn't really matter, though, as serf
> *never* sends this and neon has code in fetch.c:make_reporter to
> send it, but no make_reporter calls use it!
>
> It was added over 5 years ago:
>
> ------------------------------------------------------------------------
> r2680 | cmpilato | 2002-07-24 11:43:27 -0700 (Wed, 24 Jul 2002) | 28 lines
>
> Create a do_diff() RA layer vtable function.
>
> * subversion/libsvn_ra_dav/ra_dav.h
>   (svn_ra_dav__do_diff): New.
>
> * subversion/mod_dav_svn/update.c
>   (dav_svn__update_report): Support new 'resource_walk' attribute.
>
> * subversion/libsvn_ra_dav/fetch.c
>   (make_reporter): Add 'resource_walk' argument.
>   (svn_ra_dav__do_update, svn_ra_dav__do_status,
>     svn_ra_dav__do_switch): Update calls to make_reporter().
>   (svn_ra_dav__do_diff): New.
>
> * subversion/libsvn_ra_dav/session.c
>   (dav_plugin): Add reference to svn_ra_dav__do_diff.
>
> * subversion/include/svn_ra.h
>   (svn_ra_plugin_t): Add do_diff() vtable entry.
>
> * subversion/libsvn_ra_local/ra_plugin.c
>   (make_reporter, svn_ra_local__do_diff): New.
>   (svn_ra_local__do_update, svn_ra_local__do_switch,
>     svn_ra_local__do_status): Use new make_reporter() helper.
>   (ra_local_plugin): Add reference to svn_ra_local__do_diff.
>
> * subversion/libsvn_client/diff.c
>   (do_merge, do_diff): Use new RA->do_diff() instead of RA->do_switch().
> ------------------------------------------------------------------------
>
> Unless I'm dense, I see no explanation in that log message of
> what this resource-walk is supposed to do.  As far as I can tell,
> this code is completely dead.  Well, except for pre-1.2 clients,
> I guess?
>
> Thanks.

I found this code a couple of months ago, was concerned about its
interaction with something new (depth?), and eventually realized it
was pretty dead.  Wasn't sure what to do though.

--dave


-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org