Subject: Re: `git stash pop` UX Problem

From: Omar Othman <[email-masked]>
Date: Wed, 26 Feb 2014 08:28:58 +0100

>> [omar_othman main (trunk|MERGING*)]$ git add path/to/file.txt
>> [omar_othman main (trunk*)]$
>>
>> Note how the status message has changed to show that git is now happy.
>> It is at that moment that the stash reference should be dropped
> Dropping the stash on a "git add" operation would be really, really
> weird...
>
>> (or the user (somehow) is notified to do that herself if desired),
>> because this means that the popping operation has succeeded.
> But how would you expect to "be notified"?
Answering the last question, your previous comments are fine with me:
>> If there's any change that should be made it should be purely
>> providing more detailed instructions to the user about how to deal
>> with it.
> Yes, there may be room for improvement, but that does not seem so easy.
> Today, we have:
>
> $ git stash pop
> Auto-merging foo.txt
> CONFLICT (content): Merge conflict in foo.txt
>
> $ git status
> On branch master
> Unmerged paths:
>    (use "git reset HEAD <file>..." to unstage)
>    (use "git add <file>..." to mark resolution)
>
>          both modified:      foo.txt
>
> => The advices shown here are OK. Then:
>
> $ git add foo.txt
> $ git status
> On branch master
> Changes to be committed:
>    (use "git reset HEAD <file>..." to unstage)
>
>          modified:   foo.txt
>
> => here, "git status" could have hinted the user "you may now run 'git
> stash drop' if you are satisfied with your merge".
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. I don't know whether git has 
such customizations (in general) currently.

This is very useful (maybe we can agree on wording later):
> 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 reference:
>
>    git stash drop