Re: git crashes in `git commit --patch` with diff.suppressBlankEmpty = true
From: Phillip Wood <hidden>
Date: 2024-07-04 13:14:59
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:
quoted hunk ↗ jump to hunk
Hello. `git commit --patch` crashes with diff.suppressBlankEmpty option enabled under certain conditions. Steps to reproduce: 1. Prepare .gitconfig: [user] name = User email = user@example.com [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