Ben Collins-Sussman <sussman@collab.net> writes:
> Hey Philip, I'm glad you're trying to figure out what's up with 'svn
> diff'. I'm also working on it. I'm seeing a DAV bug in the URL to
> URL diffing codepath, not just in the wc-to-URL diffing codepath.
Are you referring to issue 753? I am looking but I may give up, I
don't know very much about mod_dav_svn :-(
>
> I notice that when I run
>
> svn diff -r1000:HEAD http://svn.collab.net/repos/svn/trunk/README
>
> I get back an error; in particular, my ethereal trace shows ra_dav
> sending an initial GET request for the url to r1000 (something like
> !svn/bc/1000/trunk/README), which succeeds. Then a little bit later
> on, it sends a request to fetch !svn/bc/1000/trunk/README/README.
> Obviously, the fs throws an error here.
Yeah, I'd spotted that.
>
> But then I went and ran a very similar URL-to-URL diff over ra_local,
> and it worked fine. This makes me think that there's nothing wrong
> with our URL-to-URL diff editor logic; it hasn't changed in a long
> time, after all.
>
> Instead, I think there's something wonky in ra_dav, or perhaps in the
> opaque data being sent to ra_dav by mod_dav_svn.... I mean, there are
> a *heck* of a lot of PROPFINDs going on to derive that baseline
> collection url. If mod_dav_svn started changing something subtley,
> then ra_dav's logic would need to follow along.
I suspect ra_dav as well. In the example in issue 753 the dodgy URL
first appears in a response from the server
<S:update-report xmlns:S="svn:" xmlns:D="DAV:">
<S:target-revision rev="4"/>
<S:replace-directory rev="3">
<D:checked-in><D:href>/repo/!svn/ver/4/zig/zag/foo</D:href></D:checked-in>
<S:replace-file name="foo" rev="3">
<D:checked-in><D:href>/repo/!svn/ver/4/zig/zag/foo/foo</D:href></D:checked-in>
<S:fetch-file/>
Here zig/zag/foo is a file not a directory.
I don't understand vsn_urls, take the following comment in update.c
/* when sending back vsn urls, we'll try to see what this editor
path really points to in the repos. if it doesn't point to
something other than itself, we'll use path2. if it does point
to something else, we'll use the path that it points to. */
It tells me what the code does, which I can work out from reading the
code, but I don't understand why it does it.
--
Philip
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Jun 19 01:02:31 2002