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

Peg revisions, diff, and repository roots

From: Garrett Rooney <rooneg_at_electricjellyfish.net>
Date: 2006-02-01 01:37:35 CET

So I was using 'svn diff' today, and it struck me that the usual way I
run repos->repos diffs (i.e. svn diff -r FOO:BAR http://server/repos/)
is really really slow with large repositories. If I add a @FOO to the
end of the repository URL the speed goes way the hell up.

Investigating a bit more, it seems to be in the location tracing code,
without the @FOO at the end we spend forever and a day sitting around
resolving our URLs to make sure they haven't moved around on us.

More investigation reveals that for repos->repos diffs it's pretty
much just -r FOO:BAR URL that's slow, if I do diff URL@FOO URL@BAR
it's fast, use the --new/--old syntax it's fast, etc.

I'm a little fuzzy on the logic behind peg revisions and diff, so bear
with me, but why the heck is there even a difference between -r
FOO:BAR URL and URL@FOO URL@BAR? Isn't one just a shorthand for the
other? And if there is a difference, why does the much more commonly
used case default to a behavior that results in terminally slow
results on large repositories?

Additionally, it seems awfully silly that we do history tracing at all
when pointed at the repository root. It's not like it's going to move
on us if we go back through history... Can we just special case that
to avoid this pain in at least that case?

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Feb 1 01:37:54 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.