Subject: Re: git and bzr

From: Aaron Bentley <[email-masked]>
Date: Tue, 28 Nov 2006 12:07:07 -0500

Linus Torvalds wrote:
> in order to realize how well git blame follows both renames _and_ pure 
> data movement).
> 
> The reason this is a good example is simply the fact that it should 
> totally silence anybody who still thinks that tracking file identities is 
> a good thing. It explains well why tracking file identities is just 
> _stupid_.

No need to be aggressive about this.  Yes, it's true that file identity
doesn't directly solve this problem, but it doesn't prove that an
identity-based approach is wrong.

In the end, everything comes down to identity of some kind.  Because if
you're going to apply someone else's changes, you must apply them to the
same thing that they changed.

Git determines identity based on content, while bzr has the user
indicate it.  Both approaches work.

Bzr supports merging based on line identity (our weave merge, not our
knit merge).  At the moment, our concept of line identity is based on
file identity, but there's no reason it has to stay that way.

> You simply couldn't have done that kind of split sanely with file identity 
> tracking (well, that one only had a single copy, so you could argue that a 
> file identity tracker with copies could have done it, but the fact is that 
> (a) they never do and (b) "git blame" can equally well track stuff that 
> comes from _multiple_ different "file iddentities").

I think you're wrong about that.  There's nothing stopping bzr from
inferring a file split, or even explicitly recording it.  bzr doesn't
record copies, because we think there are no sane merge semantics across
copies.

> So yes, "git blame" is a _hell_ of a lot more powerful than anybody elses 
> "annotate", as far as I know. I literally suspect that nobody else comes 
> even close.

I notice that blame has an option to limit the annotation to recent
history.  I can only assume that is for performance reasons.  bzr
annotate doesn't need a feature like that, because annotations are
explicit in bzr's storage format.  I expect that even if we were to
extend annotate to track content across files, it would still be so fast
that we wouldn't need it.

Aaron