Re: git log --follow doesn't follow a rename over a merge
From: James Blackburn <hidden>
Date: 2016-06-15 22:51:29
On 16 June 2011 19:15, Jeff King [off-list ref] wrote:
This test case shows full-history helping:
This test shows what I've done:
commit() {
echo $1 >>$1 && git add $1 && git commit -m $1
}
git init repo
cd repo
commit one
commit two
commit three
git symbolic-ref HEAD refs/heads/newroot
rm *
git rm --cached *
commit four
commit four
commit four
commit four
commit four
commit four
commit five
git checkout master
git merge --no-commit newroot
git mv four four2
commit six
commit four2
commit five
git log --graph --oneline
* 7c4c441 five
* 02a7262 four2
* 6ac2fe0 six
|\
| * d4f5e35 five
| * 350d3e9 four
| * b975d48 four
| * 3bdbf38 four
| * 5b58da8 four
| * 9fb4f59 four
| * a6d1492 four
* b301c9c three
* 38865e2 two
* 9a9c689 one
At this point, only git-blame seems correct:git blame -- four2
Correct
git log --oneline -- four2
02a7262 four2 6ac2fe0 six
git log --follow --oneline -- four2
02a7262 four2
From the above: I can't log past four2 (without using blame-log.sh).
git log -- four
<no output>
git log --follow --oneline -- four
350d3e9 four b975d48 four 3bdbf38 four 5b58da8 four 9fb4f59 four a6d1492 four
From above: I can't log four without doing '--follow', and the output
is missing the deletion in the merge commit. Log of 'five', which hasn't been renamed, looks ok. James