Thread (4 messages) 4 messages, 4 authors, 9d ago

Re: Bugreport: git log -L

From: Kristofer Karlsson <hidden>
Date: 2026-09-21 09:49:46

On Mon, 21 Sept 2026 at 09:49, Nikita Makarov [off-list ref] 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

    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.
I tried to reproduce this but failed to do so. I first started
wondering if this meant the bug had been fixed in master already,
but then I also failed to reproduce it on 2.43.

I think the reproduction steps were wrong here, perhaps
you meant to put the double newline in c2 instead of in c1?
Because if I change that, I can reproduce it.

So the steps should have:

    printf 'def foo():\n    return 1\n' > bug.py
    git add bug.py && git commit -qm c1

    printf 'def foo():\n    return 1\n\n' > bug.py
    git add bug.py && git commit -qm c2

instead.

I think I should be able to submit a fix for this shortly.

Thanks,
Kristofer
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help