Thread (21 messages) flat view 21 messages, 9 authors, 2016-06-15

Re: git-stash: RFC: Adopt the default behavior to other commands

From: Wincent Colaiuta <hidden>
Date: 2016-06-15 22:44:00
Subsystem: the rest · Maintainer: Linus Torvalds

Possibly related (same subject, not in this thread)

El 18/12/2007, a las 15:22, Andreas Ericsson escribió:
Johannes Schindelin wrote:
quoted
Hi,
On Tue, 18 Dec 2007, Sebastian Harl wrote:
quoted
On Mon, Dec 17, 2007 at 04:31:12PM -0800, Junio C Hamano wrote:
quoted
But the original point by Sebastian hasn't been answered.  He  
wanted to make the command list the stash without arguments.

This was discussed already in the early days of stash and there  
indeed was a suggestion to do so (I think I sided with that), but  
the users did not want it.  IIRC, the argument went like: "when I  
say 'stash', that is because I want a quick and immediate way to  
stash, and I do not want a list.  If I do not have to have a  
quick way, I would create a temporary commit on the current  
branch, or switch to a temporary branch and commit there."
Well, "git stash save" is just five characters more - I really  
don't see why this would be less comfortable (and for the really  
lazy people there are still aliases...). On the other hand (if  
"list" is the default), we'd get a more consistent interface which  
imho is imho more important than typing five characters less.
It's more about what you're used to.  I had an alias named 'stash'  
long before it became a git command.  And now guess how _annoying_  
it would be to type "git stash<Return><Curse out loud at my  
mouse>git stash save<Return>".
Not nearly as annoying as losing work because of it, and you obviously
*know* what to do when you're done cursing, while clueless-newbie-X  
just
hops away and uses subversion.
There's not really any peril of losing work here, seeing as this  
should be a lossless round trip:

git stash
# oops! didn't mean to save
git stash apply

We could help clueless-newbie-X here by augmenting the save output:

   Saved "WIP on master: 8ed8a26... s"
   HEAD is now at 8ed8a26... s

As follows (or similar):

   Saved working directory and index state "WIP on master: 8ed8a26... s"
   (To restore them type "git stash apply")
   HEAD is now at 8ed8a26... s

ie. we explicitly tell them what was saved (their working directory  
and index state), and also how to get it back immediately if that's  
not what they meant to do. Something like this (no doubt will be  
whitespace-mangled because I'm pasting this into my email client, but  
it's just to demo the idea):
diff --git a/git-stash.sh b/git-stash.sh
index f16fd9c..a2f3723 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -99,7 +99,8 @@ save_stash () {

         git update-ref -m "$stash_msg" $ref_stash $w_commit ||
                 die "Cannot save the current status"
-       printf >&2 'Saved "%s"\n' "$stash_msg"
+       printf >&2 'Saved working directory and index state "%s"\n'  
"$stash_msg"
+       echo >&2 '(To restore them type "git stash apply")'
  }

  have_stash () {

Cheers,
Wincent
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help