“git log --follow” Enthusiastically Tracks Empty Files
This bug I just found in
git log --follow
is impressively massive. Until I worked out what was going on I was really perplexed, and even considered that my repository might have become corrupted.[…]
It appears that Git, having detected that
book/Watchmen.blog
was moved tomovie/Watchmen.blog
in Febraury 2012, is now followingbook/Watchmen.blog
backward in time. It sees that in January 2012 the file was modified, and was formerly empty, and after that it sees that in June 2009 the empty file was created. At that time there was another empty file,wikipedia/mega.notyet
. Andgit-log
decides that the empty filebook/Watchmen.blog
was copied from the other empty file.At this point it has gone completely off the rails, because it is now following the unrelated empty file
wikipedia/mega.notyet
. It then makes more mistakes of the same type.
Update (2018-09-14): Mark Dominus:
The roadblock is: how does
--rename-empty
fit together with my proposed--rename-size-threshhold
flag? Should they be the same thing? Or should they be separate options? There appear to be at least three subsystems in Git that try to decide if two similar or identical files (which might have different names, or the same name in different directories) are “the same file” for various purposes. Do we want to control the behavior of these subsystems separately or in unison?