Re: Bugreport: git log -L
- From
- Tim Tassonis <stuff@decentral.ch>
- Date
- Sep 21, 2026, 18:04 UTC
- Message-ID
- <b6600538-afdd-4402-ad2c-2a5380b6c0cd@decentral.ch>
- In-Reply-To
- <41c54b809eb1490fb467ba0fd4c5a8cf@yadro.com>
On 9/21/26 09:45, Nikita Makarov wrote:
Show 35 quoted lines
> Hello, I have the found the strange behavior of "git log -L" command with python function. > It is counting a blank line that sits after a function's last statement as part of that function. > This happens only when the function is at the end of a file. > > The way to reproduce that > > git init repro && cd repro > git config user.email t@t && git config user.name t > > printf 'def foo():\n return 1\n\n' > bug.py > git add bug.py && git commit -qm c1 > > printf 'def foo():\n return 1\n' > bug.py > git add bug.py && git commit -qm c2 > > Then do > > git log -L :'foo':bug.py > > And you'll see > > Author: t <t@t> > Date: Fri Sep 18 18:21:10 2026 +0300 > > c2 > > diff --git a/bug.py b/bug.py > --- a/bug.py > +++ b/bug.py > @@ -1,2 +1,3 @@ > def foo(): > return 1 > + > > Though I expect that commit "c2" should never appear in log, since the changes from it doesn't affect the functions body at all.
From git log --help ... If :<funcname> is given in place of <start> and <end>, it is a regular expression that denotes the range from the first funcname line that matches <funcname>, up to the next funcname line. :<funcname> searches from the end of the previous -L range, if any, otherwise from the start of file. ^:<funcname> searches from the start of file. The function names are determined in the same way as git diff works out patch hunk headers (see Defining a custom hunk-header in gitattributes(5)). ..
So, the bug is rather the expectation that such a thing can reliably know what a function is, regardless of coding style and language used.
To quote the late and great Christopher Tolkien: This could only be achieved. if at all, at heavy and needless cost.
Bye>
Show 15 quoted lines
> [System Info] > git version: > git version 2.43.0 > cpu: x86_64 > no commit associated with this build > sizeof-long: 8 > sizeof-size_t: 8 > shell-path: /bin/sh > uname: Linux 7.0.0-31-generic #31~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Aug 10 09:38:02 UTC 2 x86_64 > compiler info: gnuc: 13.3 > libc info: glibc: 2.39 > $SHELL (typically, interactive shell): /bin/bash > > > [Enabled Hooks]
-- decentral.ch - IT Stuff Tim Tassonis Badenerstrasse 219 8003 Zürich stuff@decentral.ch +41 79 229 36 17