I built from source and was unable to find a git version where this has ever worked correctly. I wasn't able to compile and test versions older than 1.6.1. Confirmed not working: 2.15.1 2.13.6 (Apple Git-96) 2.0.0 1.7.0 1.6.3 1.6.2 1.6.1 I updated the https://github.com/nicksnyder/git-blame-bug with a script to easily reproduce. On Wed, Dec 6, 2017 at 10:00 AM, Nick Snyder <nick@xxxxxxxxxxxxxxx> wrote: >> Can you bisect to see when the feature stopped working as you expect? > > I will see if I can do that but might take some time. > >> It finds up to which commit each line survived without getting touched since the oldest commit in the range. > > Right, this is where it is failing in my case. > > With a history like this: > A <- B <- C <- HEAD > > I have a particular line in C (HEAD) that blames to commit A. > If I run a git blame --reverse starting at commit A for that line, it > doesn't give me back C, it gives me back B instead. > The line is not added/deleted/moved between B and C. > > > > On Wed, Dec 6, 2017 at 9:22 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >> Nick Snyder <nick@xxxxxxxxxxxxxxx> writes: >> >>> This can be reproduced on Linux and Mac. This behavior seems to be a bug. >> >> Can you bisect to see when the feature stopped working as you expect? >> >> Unlike a forward blame, where the command tries to find a commit >> that is responsible for a line being in the final result (i.e. >> typically, HEAD), a reverse blame is not about finding a commit >> that is responsible for a line (that used to be in the oldest >> commit) not being in a more recent codebase. It finds up to which >> commit each line survived without getting touched since the oldest >> commit in the range. >>