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

Re: server diffs and svn diff -rREV1:REV2

From: Greg Stein <gstein_at_lyra.org>
Date: 2002-01-22 23:26:16 CET

On Tue, Jan 22, 2002 at 08:35:47PM +0000, Philip Martin wrote:
> Hello
>
> I have a fix for 'svn diff -rREV1:REV2' that copes with the new diffs
> sent over ra_dav. It all works :-) except it breaks ra_local :-(
>
> Consider a file at REV3 in the working copy. When asking for a REV1 to
> REV2 diff, then it appears that ra_dav sends a diff that will
> construct REV2 from REV3, but ra_local sends a diff that will
> construct REV2 from REV1. [When using ra_dav the the
> svn_ra_callbacks_t get_wc_prop function is invoked to determine the
> working copy revision. This doesn't happen over ra_local.]

Hmm. The get_file() call needs to be changed. It shouldn't just return a
diff. How is the caller supposed to know whether they got a fulltext or a
diff?

When I did the diff work, I realized that we probably want a callback that
says "give me the base fulltext that you said I have." e.g. if the client
provides wc-props for rev 5 of FOO, then the callback would return that
fulltext. The get_file function would then compose the fulltext with the
diff to provide the fulltext of rev R to the caller.

The diff code would then get_file() two fulltexts and then diff them.

> Am I right in thinking that ra_local sends diffs differently from
> ra_dav?

ra_local will never return a diff against a working copy file. It just grabs
the fulltext of the rev/path that you ask for.

> Now I know how to cause ra_dav to mimic the ra_local behaviour, but
> that is effectively disabling an ra_dav feature. It would also make
> some of my new code redundant, which seems like a waste.

Turning off the diff-over-the-wire would suck. I think the problem is in
get_file, and the need for the extra callback.

> There doesn't seem to be a way within the editor to determine which
> file is the baseline for the diff, I just have to know. Is passing an
> ra_dav/ra_local flag into the function that creates the editor the
> best way to do this?

I don't know how the "svn diff -r REV1:REV2" works. It seems that you always
have to fetch two full texts and have the client run diff over them (using
whatever options the user supplies; e.g. -u or -C)

I'm not sure how I see this as an editor change. But that is probably
because I don't see how the editor plays into fetching the two full texts to
perform the diff.

[ you can't do a diff with the standard editor stuff because that would
  deliver you delta windows or an svndiff -- no context ]

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:58 2006

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.