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