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

svn diff very slow with 1.0 server and 1.1 client

From: Stelian Pop <stelian_at_popies.net>
Date: 2005-02-02 15:02:38 CET


I'm playing currently with svn and I noticed that 'svn diff -r X:Y <url>'
is very slow when using a 1.0 svn server with a 1.1 client.

Looking at the network traces, it shows that when invoking 'svn diff',
the *whole* revision log is sent by the server (for every revision in
the repository).

In my case, I use svn to manage the linux kernel tree, and it takes
about 10 minutes (!!!) to the server to compute and send out the entire
kernel history when all I wanted is something like the differences
between revision 26540 and 26541 of a single file...

Looking at the source, subversion/libsvn_client/ra.c shows indeed that
a different path (slow_locations()) is needed to access a 1.0 server,
and slow_locations() is implemented on top of get_log().

What I don't understand however is why the call to get_log() seems
to want *all* the logs between 'youngest' (a calculated revision)
and '1', instead of just getting the logs for the youngest revision:

    622 /* Let the RA layer drive our log information handler, which will do
    623 the work of finding the actual locations for our resource.
    624 Notice that we always run on the youngest rev of the 3 inputs. */
    625 SVN_ERR (ra_lib->get_log (ra_session, targets, youngest, 1,
    626 TRUE, FALSE, log_receiver, &lrb, pool));

Could someone familiar with this code or the inner workings of svn
comment on this ?



Stelian Pop <stelian@popies.net>
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Feb 2 15:02:43 2005

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.