Re: Bugreport: git log -L
flat view
From: Tim Tassonis <hidden>
Date: 2026-09-21 18:30:25
On 9/21/26 09:45, Nikita Makarov wrote:
quoted hunk ↗ jump to hunk
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 c2diff --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>
[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