Re: BUG: git log: fatal: internal error in diff-resolve-rename-copy
- From
Linus Torvalds <torvalds@linux-foundation.org>
- Date
- Aug 13, 2010, 17:53 UTC
- Message-ID
- <AANLkTinSUy9pDtsJizmQTTOsMOVEQ=7+U5Ri4=-RZmB-@mail.gmail.com>
- In-Reply-To
- <7vhbiyl8ji.fsf@alter.siamese.dyndns.org>
On Fri, Aug 13, 2010 at 10:36 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 13 quoted lines
> > Another potential "funny" is this (unrelated to the reported issue). > > The "--follow" logic is called from diff_tree_sha1() function, but the > input trees to diff_tree_sha1() are not necessarily the top-level trees > (compare_tree_entry() calls it while it recursively descends into > subtrees). For example, with the example Constantine gave us, the first > "try-to-follow-renames" call happens with the "base" set to "platform/" > but the rename source is actually "lang-api/src/com/intellij/..." > hierarchy, so it is a wasted call. I think we only want to run the rename > following at the very top level, i.e. like the attached patch. > > Linus, what do you think? Am I missing something obvious?
I think you're right. You're certainly not missing anythng _obvious_. Iirc the only reason I put that 'follow' hack in diff_tree_sha1() was because that way I didn't need to worry about all the callers, but I didn't even think about the whole recursion issue.
So ack on that.
Linus