git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git blame --follow

From
WRWolfgang 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
Previous: Junio C HamanoNext: Jakub Narebski
Message 3 of 6 in “git blame --follow”
  1. Wolfgang RohdewaldMar 15, 2011
  2. Junio C HamanoMar 15, 2011
  3. Wolfgang RohdewaldMar 15, 2011
  4. Jakub NarebskiMar 17, 2011
  5. Wolfgang RohdewaldMar 17, 2011
  6. Jakub NarebskiMar 17, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.