Hi Ilya
Thanks for reporting this and for the example reproduction. The problem
is that the code that splits hunks expects context lines to begin with '
'. We could fix that fairly simply but I wonder if we should change
'diff-index' and 'diff-files' to ignore diff.suppressBlankEmpty instead.
The plumbing diff commands already ignore most of the options that
change diff output so I'm not quite sure why they respect this
particular config setting. I've cc'd a few people to see what they think.
Best Wishes
Phillip
On 03/07/2024 15:41, Ilya Tumaykin wrote:
Hello.
`git commit --patch` crashes with diff.suppressBlankEmpty option enabled
under certain conditions.
Steps to reproduce:
1. Prepare .gitconfig:
[user]
name = User
email = user@xxxxxxxxxxx
[diff]
suppressBlankEmpty = true
2. Initialize repo:
$ mkdir git_bug && cd git_bug
$ git init
$ echo -e 'test\n\n test \n\ntest' > test.txt
$ git add test.txt
$ git commit test.txt -m 'initial'
3. Make changes:
$ echo -e 'test\n\n test\ntest\n \n' > test.txt
4. Try to commit new changes
$ git commit --patch test.txt
5. Try to split the first hunk, press 's' in the git-commit interactive
interface.
Actual results:
diff --git a/test.txt b/test.txt
index 366cd4b..611ca9d 100644
--- a/test.txt
+++ b/test.txt
@@ -1,5 +1,6 @@
test
- test
-
+ test
test
+
+
(1/1) Stage this hunk [y,n,q,a,d,s,e,p,?]? s
BUG: add-patch.c:994: unhandled diff marker: '
'
Aborted (core dumped)
Expected results:
git-commit splits the hunk and continues.
Comment:
If I set diff.suppressBlankEmpty = false, then I get the expected behavior.
git --version: 2.45.2
OS: up-to-date Fedora 40