Re: git blame --follow
- From
- Wolfgang Rohdewald <wolfgang@rohdewald.de>
- Date
- Mar 15, 2011, 18:26 UTC
- Message-ID
- <201103151926.58449.wolfgang@rohdewald.de>
- In-Reply-To
- <7vy64g9tqs.fsf@alter.siamese.dyndns.org>
On Dienstag 15 März 2011, Junio C Hamano wrote:
Show 25 quoted lines
> Wolfgang Rohdewald <wolfgang@rohdewald.de> writes: > > git log --follow filename > > > > shows the full history, while > > > > git blame --follow filename > > > > blames everything to the latest commit (which was > > a file rename) > > Huh? > > $ git checkout master^0 > $ git mv COPYING RENAMING > $ git commit -m renamed > $ git blame --follow RENAMING > > gives everything blamed to 075b845a COPYING (but that is > probably by accident, see below). FYI, > > $ git blame RENAMING > > should also blame everything to the same commit and the same > COPYING file. If you get a different behaviour out of the > above command sequence, there is something else going on.
I get the same - except that only most is attributed to 075b845a, some is attributed to 703601d6. But git blame and git blame --follow return the same output with your example
Show 5 quoted lines
> I didn't know "blame" even accepted "--follow". It is > entirely out of the scope of its design to take "--follow" > option, as the "blame" command itself has its own and real > "follow" logic that is enabled by default (i.e. it follows a > whole file rename without any option)
so if I rename a parent directory of myfile and do git blame myfile, blaming should ignore the renaming. This works with the git repo
git mv xdiff xxx git ci -m'mv xdiff xxx' cd xxx git blame xemit.c
But with my repository (which I cannot share), this does not happen. git blame attributes everything to the renaming commit. If I checkout the commit before, git blame shows everything correctly.
So there must be something special with my repo. How could I debug that? BTW the renaming happened in svn, it is the last svn commit for this file before I imported this svn repo into git (like described in the Pro Git book)
And - for directories below the renamed one git log --follow cannot cross this barrier either but if the "follow" logic is different I suppose this is not related
-- Wolfgang