Message ID | DM8PR02MB7942969BE7FEAFB48D9AEDCEC7112@DM8PR02MB7942.namprd02.prod.outlook.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | git restore --staged -p on merge conflict causes crash | expand |
On Tue, Jan 7, 2025, at 15:41, Keith Mendoza wrote: > What did you do before the bug happened? (Steps to reproduce your issue) > 1. Start with a main branch > 1. Add a new file (test.yaml) > 1. git checkout --no-track -b branch-1 > 1. Commit a change to test.yaml > 1. git checkout main > 1. Commit a change to the same lines in test.yaml that was updated in branch-1 > 1. git checkout branch-1 > 1. git merge main > 1. git restore --staged -p test.yaml > > What did you expect to happen? (Expected behavior) > Be able to select which updates to restore > > What happened instead? (Actual behavior) > The following is displayed on the console > ``` > BUG: add-patch.c:497: diff starts with unexpected line: > * Unmerged path test.yaml > > Aborted (core dumped) > ``` It looks[1] like this was fixed in 28d1122f9ca (add-patch: handle "* Unmerged path" lines, 2023-03-09).[2] That fix was included in v2.41.0 and later. So not on your maintenance release (v2.39.5). The bug was introduced in 2.37.0: Jeff King wrote: > Thanks, a fix is below. While the escape-hatch of the perl version is > going away in v2.40, people have been exposed to the bug since we > flipped the default in v2.37.0. At least I wasn’t able to reproduce on 2.48.0.rc2 with the below. ``` git init && touch test.yaml && git add test.yaml && git commit -minit && git checkout --no-track -b branch-1 && echo something >test.yaml && git add test.yaml && git commit -mchange && git checkout main && echo 'something else (conflict)' >test.yaml && git add test.yaml && git commit -m'change here too' && git checkout branch-1 && # Merge conflict git merge main git restore --staged -p test.yaml ``` † 1: Based on: BUG: add-patch.c:498: diff starts with unexpected line:
Thanks for the information. -----Original Message----- From: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com> Sent: Tuesday, January 7, 2025 7:34 AM To: Keith Mendoza <kmendoza@beyondtrust.com>; git@vger.kernel.org Subject: Re: git restore --staged -p on merge conflict causes crash This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. On Tue, Jan 7, 2025, at 15:41, Keith Mendoza wrote: > What did you do before the bug happened? (Steps to reproduce your issue) > 1. Start with a main branch > 1. Add a new file (test.yaml) > 1. git checkout --no-track -b branch-1 > 1. Commit a change to test.yaml > 1. git checkout main > 1. Commit a change to the same lines in test.yaml that was updated in branch-1 > 1. git checkout branch-1 > 1. git merge main > 1. git restore --staged -p test.yaml > > What did you expect to happen? (Expected behavior) > Be able to select which updates to restore > > What happened instead? (Actual behavior) > The following is displayed on the console > ``` > BUG: add-patch.c:497: diff starts with unexpected line: > * Unmerged path test.yaml > > Aborted (core dumped) > ``` It looks[1] like this was fixed in 28d1122f9ca (add-patch: handle "* Unmerged path" lines, 2023-03-09).[2] That fix was included in v2.41.0 and later. So not on your maintenance release (v2.39.5). The bug was introduced in 2.37.0: Jeff King wrote: > Thanks, a fix is below. While the escape-hatch of the perl version is > going away in v2.40, people have been exposed to the bug since we > flipped the default in v2.37.0. At least I wasn’t able to reproduce on 2.48.0.rc2 with the below. ``` git init && touch test.yaml && git add test.yaml && git commit -minit && git checkout --no-track -b branch-1 && echo something >test.yaml && git add test.yaml && git commit -mchange && git checkout main && echo 'something else (conflict)' >test.yaml && git add test.yaml && git commit -m'change here too' && git checkout branch-1 && # Merge conflict git merge main git restore --staged -p test.yaml ``` † 1: Based on: BUG: add-patch.c:498: diff starts with unexpected line:
diff --cc test.yaml index 26bf81a,46282a7..0000000 --- a/test.yaml