Hi, I was interested to know the origin of the UE_ALWAYS et al flags in builtin/reflog.c, so I asked git: ; git log --oneline -S'UE_ALWAYS' --follow builtin/reflog.c 81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory 4264dc1 git reflog expire Ok, clearly it was not introduced in the builtin/ move. I guess the UE_ flags were part of the original ‘reflog’ implementation. Right? ; git show 4264dc1 | grep UE_ALWAYS ; git show 4264dc1:builtin-reflog.c | grep UE_ALWAYS ; No, that’s not it. At this point I decided -S is broken and just did a grep through log -p, to find that apparently this symbol was introduced in builtin-reflog.c with v1.7.2-rc0~122^2 (reflog --expire-unreachable: special case entries in "HEAD" reflog, 2010-04-09). So why is log confused? As far as log -S knows, because of the builtin/ move, commit v1.7.2-rc0~122 was an evil merge that produced the UE_ flags in builtin/reflog.c out of thin air. It should be blaming that commit, then. With a little coaxing, it does. ; git log --format=oneline \ --first-parent -m -S'UE_ALWAYS' --follow builtin/reflog.c | git name-rev --tags --stdin | cut -d' ' -f2- (tags/v1.7.2-rc0~122) Merge branch 'jc/maint-no-reflog-expire-unreach-for-head' (tags/v1.7.1-rc0~76) Merge branch 'lt/deepen-builtin-source' (tags/v1.5.0-rc1~188) Merge branch 'jc/fsck-reflog' ; The first is the culprit, the second and third the file’s renaming and introduction[1]. The more logical ; git log --oneline -c -S'UE_ALWAYS' --follow builtin/reflog.c does not work --- it mentions _all_ merges. Why? [1] I don’t know why ‘log -S --follow’ should feel the need to point these out, but that’s a different story. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html