git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: 'git stash push' isn't atomic when Ctrl-C is pressed

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jan 26, 2022, 13:41 UTC
Message-ID
<220126.86bkzyfw3q.gmgdl@evledraar.gmail.com>
In-Reply-To
<4493bcea-c7dd-da0a-e811-83044b3a1cac@tsoft.com>
On Tue, Jan 25 2022, Yuri wrote:
Show 5 quoted lines
> Ctrl-C was pressed in the middle. git creates the stash record and
> didn't update the files.
>
>
> Expected behavior: Ctrl-C should cleanly roll back the operation.
Yes, you're right. It really should be fixed.

It's a known issue with builtin/stash.c being written in C, but really only still being a faithful conversion of the code we had in a git-stash.sh shellscript until relatively recently.

(No fault of those doing the conversion, that's always the logical first step).

So it modifies various refs, reflogs etc., but does so mostly via shelling out to other git commands, whereas it really should be moved to using the ref transaction API.

Ig you or anyone else is interested in would be a most welcome project to work on...

Previous: YuriNext: John Cai
Message 2 of 11 in “'git stash push' isn't atomic when Ctrl-C is pressed”
  1. YuriJan 25, 2022
  2. Ævar Arnfjörð BjarmasonJan 26, 2022
  3. John CaiJan 26, 2022
  4. Ævar Arnfjörð BjarmasonJan 26, 2022
  5. Junio C HamanoJan 26, 2022
  6. Ævar Arnfjörð BjarmasonJan 26, 2022
  7. Junio C HamanoJan 26, 2022
  8. Ævar Arnfjörð BjarmasonJan 27, 2022
  9. Junio C HamanoJan 27, 2022
  10. John CaiJan 27, 2022
  11. Junio C HamanoJan 26, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.