Re: git blame --reverse doesn't find line in HEAD
- From
Nick Snyder <nick@sourcegraph.com>
- Date
- Dec 7, 2017, 17:02 UTC
- Message-ID
- <CA+SQVf3LuYj-N9NaDPxRcADjgWK5DFbF8LM=6VhY9N0GnbxyyA@mail.gmail.com>
- In-Reply-To
- <CA+SQVf14g4zBP14BHEZQkyeqUE5Oqif3bUVADEwBZQTSwE=bKA@mail.gmail.com>
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@sourcegraph.com> wrote:
Show 33 quoted lines
>> 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@pobox.com> wrote: >> Nick Snyder <nick@sourcegraph.com> 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. >>