Re: git crashes in `git commit --patch` with diff.suppressBlankEmpty = true
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jul 4, 2024, 13:14 UTC
- Message-ID
- <ab974e62-098c-4200-bee3-7de8d9115516@gmail.com>
- In-Reply-To
- <9b31e86f-c408-4625-8d13-f48a209b541b@gmail.com>
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:
Show 61 quoted lines
> 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 >