From: Ryan Anderson Date: Wed, 08 Feb 2006 21:07:57 GMT Subject: Re: [PATCH] Add git-annotate - a tool for annotating files with the revision and person that created each line in the file. Message-ID: <20060208210756.GA9490@mythryan2.michonline.com> In-Reply-To: <7vd5hxpr2d.fsf@assigned-by-dhcp.cox.net> On Wed, Feb 08, 2006 at 11:51:22AM -0800, Junio C Hamano wrote: > Ryan Anderson writes: > > > Signed-off-by: Ryan Anderson > > > > --- > > > > I think this version is mostly ready to go. > > > > Junio, the post you pointed me at was very helpful (once I got around to > > listening to it), but the code it links to is missing - if that's a > > better partial implementation than this, can you ressurrect it > > somewhere? I'd be happy to reintegrate it together. > > I still have it, but the reason why I withdrew circulating it > was because I found that on some inputs it did not work > correctly as intended. Not that the algorithm was necessarily > broken but the implementation certainly was. > > Unlike yours mine reads and interprets diff output to find which > lines are common and which lines are added, and I think the diff > interpretation logic has various corner cases wrong. I did > combine-diff.c diff interpreter without looking at my > 'git-blame', so I do not remember where I got it wrong, > though... I tried that approach at first, and it was much much more confusing to try to keep track of. The problem Linus found (that of a missing "all_lines_claimed()") was related to that code. This implementation is simple, though it has to have some problems with guessing at duplicated lines incorrectly. > It's been a while since I looked at it the last time so it may > not even work with the current git, but here it is.. I'll take a look through this in greater detail later, hopefully your approach can be applied. Diff-analyzing is apparently tricky. -- Ryan Anderson sometimes Pug Majere