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

Re: Peg revisions, diff, and repository roots

From: Garrett Rooney <rooneg_at_electricjellyfish.net>
Date: 2006-02-01 02:00:09 CET

On 1/31/06, Ben Collins-Sussman <sussman@red-bean.com> wrote:
> On 1/31/06, Garrett Rooney <rooneg@electricjellyfish.net> wrote:
>
> > 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?
>
> You know why, because one is doing peg-tracing, and one isn't. :-)
>
> The first form begins with URL@HEAD, then traces history backwards to
> discover whatever URL used to be called in rFOO, and then repeats the
> trace backwards to rBAR as well. The ultimate result is that the
> command may end up comparing two totally different paths in rFOO and
> rBAR.
>
> The second form skips the history tracing altogether; you've already
> pinpointed the exact (rev, path) coordinates to compare.

Sure, I know that's the difference, I'm failing to see WHY there's a
difference though. From a UI perspective, why is it a good thing that
-rFOO:BAR URL different from URL@FOO URL@BAR? I'm perfectly willing
to stipulate that we probably can't change this now, I'm just trying
to understand the underlying reason for it was in the beginning.

> > 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?
>
> Consistency with other commands. That's the party line, at least. :-)

/me still fails to see why defaulting to HEAD makes sense for the
other commands anyway...

> > 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?
>
> How do we know it's the repository root?
>
> The logic which decides "do a history trace or not" is client-side,
> not server-side.

Sure, but it seems like this history trace code should be able to say
"duh, this is the root node, it's never going to move!" and bail early
or something... And even the client side could check for the repos
root URL and bail early if we wanted to, although I'm not sure a round
trip is worth it.

-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 02:00:37 2006

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