On Wednesday 28 April 2004 17:49, C. Michael Pilato wrote:
> Shlomi Fish <firstname.lastname@example.org> writes:
> > <<<
> > Adds an libsvn_fs layer function to efficiently trace the file
> > historical (and to a limited extent) location based on its peg
> > revision+path.
> How many times do I have to say this? PUT THIS FUNCTIONALITY INTO THE
> SVN_REPOS LIBRARY, NOT THE SVN_FS LIBRARY. Your first clue should be
> the fact that your tree.c additions do nothing but consume public
> libsvn_fs APIs. I'm a fully -1 on your touching libsvn_fs at all for
> this change.
I suppose you are right. I have misunderstood the distinction between
libsvn_fs and libsvn_repos, and thus implemented my functionality in the
wrong place. My new patch (attached) fixes this problem and also the issues
that ghudson pointed to.
Here's the log:
Adds an libsvn_repos layer function to efficiently trace the file historical
(and to a limited extent) locations based on its peg revision+path. Also adds
a callack that implements it to the RA vtable and bindings to it from
libsvn_ra_local, libsvn_ra_dav and libsvn_ra_svn. It also implements the
Compile ra-get-past-location, which is a command line client for this
functionality to facilitate testing.
Added past_loc_test.py to the command line tests.
Added the declaration of svn_repos_trace_node_locations().
Added the get_locations binding to the bottom of svn_ra_plugin_t.
Added the definition of svn_ra_local__get_locations, a binding
to the RA vtable callback that handles the operation.
Added it to the end of the libsvn_ra_local vtable.
Added the definition of dav_svn__get_locations_report() which handles
the <S:get-locations> report and response. It has a helper function
(dav_svn_deliver_report): Added an appropriate case directive to
handle the get-locations report.
Added the declaration of dav_svn__get_locations_report().
(new file): a simple standalone command line client that queries for
the historical URLs at other revisions of a certain URL at a peg revision.
(new file): a test suite to test the past revision functionality.
Added the definition of svn_repos_trace_node_locations with two
Added the ra_svn_get_locations() handler, and added it to the plugin
Added the new elements to the enum.
Added the declaration of svn_ra_dav__get_locations().
Added svn_ra_dav__get_locations to the ra_dav plugin's vtable.
Added the definition of svn_ra_dav__get_locations() and helper functions
, struct declarations and comments. This function implements the
get_locations() handler() for ra_dav.
Added the get_locations() handler for the get-locations command.
Added it to the main_command map.
And here's the TODO list:
1. Get feedback on the places marked with "TODO" (in all caps) in the patch.
2. If there's a need, change the behaviour of the ra_dav handler to inform the
upper layer that the server does not support this operation and it should
trace the locations using the log instead. I can use sussman's input on this.
Likewise for ra_svn.
3. Document the get-locations protocol extensions in the appropriate places
for WebDAV and the SVN Custom Protocol.
4. Add Subpooling logic where appropriate.
5. Get this patch reviewed by other people.
6. Add a new test helper and some tests to test various relative path
related quirks in get_locations().
7. In WebDAV - use apr_xml_quote() where appropriate.
8. Get input on the fact that it is possible that because of a sequence
of copy and move operations, a node in a future revision would be traced
through a temporary location, while it is still present in the original
location, in that future rev.
Shlomi Fish email@example.com
Quidquid latine dictum sit, altum viditur.
[Whatever is said in Latin sounds profound.]
Received on Thu Apr 29 21:08:34 2004
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com