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

Re: `git stash pop` UX Problem

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 26, 2014, 19:36 UTC
Message-ID
<xmqqd2i94qfq.fsf@gitster.dls.corp.google.com>
In-Reply-To
<vpqzjlez3c4.fsf@anie.imag.fr>
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
Show 15 quoted lines
> Omar Othman <omar.othman@booking.com> writes:
>
>> Though I don't know why you think this is important:
>>> Now, the real question is: when would Git stop showing this advice. I
>>> don't see a real way to answer this, and I'd rather avoid doing just a
>>> guess.
>> If it is really annoying for the user, we can just have a
>> configuration parameter to switch this message on/off.
>
> Just saying "You have X stash" is OK to me as long as there is an option
> to deactivate it.
>
> Hinting "You should now run "git stash drop"." OTOH is far more dangerous
> if guessed wrong. Keeping a stash active when you don't need it does no
> real harm, but droping one you actually needed is data loss.
Yes, definitely.

I'm inclined to say that we should go in the direction you suggested earlier in Message-ID: <vpqlhx0a3cb.fsf@anie.imag.fr>, that is:

Show 13 quoted lines
>> One easy thing to do OTOH would be to show a hint at the end of "git
>> stash pop"'s output, like
>> 
>> $ git stash pop
>> Auto-merging foo.txt
>> CONFLICT (content): Merge conflict in foo.txt
>> 'stash pop' failed. Please, resolve the conflicts manually. The stash
>> was not dropped in case you need to restart the operation. When you are
>> done resolving the merge, you may run the following to drop the stash:
>> 
>>   git stash drop
>> 
>> or so (I couldn't find a concise yet accurate wording).

I'd however have to say that even "please resolve the conflicts manually" is over-assuming.

I often start some WIP of a fix, realize that the fix should apply to a lot older maintenance branch than where I happened to have started the WIP (which typically is at the tip of somebody else's branch where I received the series from the list---and then noticed some existing breakage that needs to be fixed), stash the WIP, and then repeat:

 (1) checkout an old maintenance track;
 (2) try to pop;
 (3) if it succeeds, stop the iteration;
 (4) otherwise, reset and go back to (1) to checkout a bit newer
     maintenance track.

to decide. So "resolve the conflicts" is assuming the intention of the user who issued "pop" too much (let alone "manually"---it does not matter how the user resolves conflicts---the only thing we want to say is Git did all it would and no further automated help in resolving is availble, but "manually" is not quite the word).

"The stash was not dropped" is the most important thing in your additional text. How about rephrasing like this?

    $ git stash pop
    Auto-merging foo.txt
    CONFLICT (content): Merge conflict in foo.txt
    The stashed change could not be replayed cleanly, leaving
    conflicts in the working tree. The stash was not dropped in case
    you need it again.
    After you are done with the stash, you may want to "git stash
    drop" to discard it.
Previous: Matthieu MoyNext: Matthieu Moy
Message 39 of 46 in “`git stash pop` UX Problem”
  1. Omar OthmanFeb 24, 2014
  2. Brandon McCaigFeb 24, 2014
  3. Matthieu MoyFeb 24, 2014
  4. Holger HellmuthFeb 25, 2014
  5. Matthieu MoyFeb 25, 2014
  6. Omar OthmanFeb 25, 2014
  7. Junio C HamanoFeb 25, 2014
  8. Stephen LeakeFeb 25, 2014
  9. Junio C HamanoFeb 25, 2014
  10. Stephen LeakeFeb 27, 2014
  11. Omar OthmanFeb 26, 2014
  12. Theodore Ts'oFeb 26, 2014
  13. brian m. carlsonFeb 25, 2014
  14. Omar OthmanFeb 26, 2014
  15. Simon RuderichFeb 26, 2014
  16. Stephen LeakeFeb 27, 2014
  17. Omar OthmanFeb 25, 2014
  18. Matthieu MoyFeb 25, 2014
  19. Omar OthmanFeb 25, 2014
  20. Matthieu MoyFeb 25, 2014
  21. Stephen LeakeFeb 25, 2014
  22. Junio C HamanoFeb 25, 2014
  23. Stefan HallerFeb 26, 2014
  24. Matthieu MoyFeb 26, 2014
  25. Stephen LeakeFeb 28, 2014
  26. Brandon McCaigFeb 28, 2014
  27. Stephen LeakeFeb 28, 2014
  28. Matthieu MoyFeb 28, 2014
  29. Stephen LeakeFeb 28, 2014
  30. Matthieu MoyFeb 28, 2014
  31. Stephen LeakeMar 1, 2014
  32. David KastrupFeb 28, 2014
  33. Stephen LeakeFeb 28, 2014
  34. Matthieu MoyFeb 28, 2014
  35. Junio C HamanoFeb 28, 2014
  36. Stephen LeakeMar 1, 2014
  37. Omar OthmanFeb 26, 2014
  38. Matthieu MoyFeb 26, 2014
  39. Junio C HamanoFeb 26, 2014
  40. Matthieu MoyFeb 26, 2014
  41. Junio C HamanoFeb 26, 2014
  42. David KastrupFeb 26, 2014
  43. Junio C HamanoFeb 26, 2014
  44. David KastrupFeb 27, 2014
  45. Stephen LeakeFeb 28, 2014
  46. Stephen LeakeFeb 27, 2014

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.