On Thu, Apr 12, 2018 at 2:14 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > So I just had an interesting experience that has happened before too, > but this time I decided to try to figure out *why* it happened. > <snip> > include/linux/mm.h > > and yeah, that rather core header file causes pretty much everything > to be re-built. > > Now, the reason it was marked as changed is that the xfs branch _had_ > in fact changed it, but the changes were already upstream and got > merged away. But the file still got written out (with the same > contents it had before the merge), and 'make' obviously only looks at > modification time, so make rebuilt everything. <snip> Wow, timing. I've been looking at this independently -- it turns out to be in the exact same code area involved in the breakage my recent series caused. The bug you are observing here will happen with current git (going back about seven years, at which time it had different bugs) whenever no rename is involved and the modifications on the other branch are a subset of the changes made on HEAD's side. My series (reverted yesterday morning) made this particular code break in a new, totally different way. This is a code path that would be trivial to get right with Junio's suggested re-design of merge-recursive[1], but the current design just makes this a bit of a mess, thus resulting in various code changes over the years with different breakages, each with its own curious flavor of incorrectness. Anyway, I'm writing a bunch of test cases, and will try to get a patch (or patches) out soon. Pretty busy this week, but I should definitely have something out next week. Elijah [1] https://public-inbox.org/git/xmqqd147kpdm.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxx/