threads / patch / 11106

patchgit-stash: Display help message if git-stash is run with wrong sub-commands

Subject: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

## tl;dr

6 messages between Dec 3, 2007 and Dec 4, 2007. Diffs are folded; open one to read it.

replies: 5people: 4as markdown or json

Kevin Leung· Dec 3, 2007, 02:34 UTC · lore

The current git-stash behaviour is very error prone to typos. For example, if you typed "git-stash llist", git-stash would think that you wanted to save to a stash named "llist", but in fact, you meant "git-stash list".

Signed-off-by: Kevin Leung <kevinlsk@gmail.com>
---
 git-stash.sh |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
Show changes to git-stash.sh +9 −7
diff --git a/git-stash.sh b/git-stash.sh
index 77c9421..a17cc25 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Copyright (c) 2007, Nanako Shiraishi

-USAGE='[ | list | show | apply | clear]'
+USAGE='[  | save | list | show | apply | clear ]'

 SUBDIRECTORY_OK=Yes
 . git-sh-setup
@@ -195,6 +195,10 @@ show)
        shift
        show_stash "$@"
        ;;
+save)
+       shift
+       save_stash "$@" && git-reset --hard
+       ;;
 apply)
        shift
        apply_stash "$@"
@@ -202,14 +206,12 @@ apply)
 clear)
        clear_stash
        ;;
-help | usage)
-       usage
-       ;;
 *)
-       if test $# -gt 0 && test "$1" = save
+       if test "$#" -eq "0"
        then
-               shift
+               save_stash && git-reset --hard
+       else
+               usage
        fi
-       save_stash "$*" && git-reset --hard
        ;;
 esac
-- 
1.5.3.7-dirty
Junio C Hamano· Dec 3, 2007, 02:48 UTC · re: Kevin Leung · lore

Re: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

"Kevin Leung" <kevinlsk@gmail.com> writes:
Show 5 quoted lines
> The current git-stash behaviour is very error prone to typos. For example,
> if you typed "git-stash llist", git-stash would think that you wanted to
> save to a stash named "llist", but in fact, you meant "git-stash list".
>
> Signed-off-by: Kevin Leung <kevinlsk@gmail.com>
Thanks.  Looks good.  except...
Show 8 quoted lines
> @@ -195,6 +195,10 @@ show)
>         shift
>         show_stash "$@"
>         ;;
> +save)
> +       shift
> +       save_stash "$@" && git-reset --hard
> +       ;;
... this should be "$*" as it was originally spelled.
Save this script in foo.sh and run "foo.sh a b c" to see what I mean.
#!/bin/sh
foo () {
	msg="$1"
	echo "Foo here <$1>"
}

foo "$@" foo "$*"

Kevin Leung· Dec 3, 2007, 03:36 UTC · re: Junio C Hamano · lore

Re: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

The current git-stash behaviour is very error prone to typos. For example, if you typed "git-stash llist", git-stash would think that you wanted to save to a stash named "llist", but in fact, you meant "git-stash list".

Signed-off-by: Kevin Leung <kevinlsk@gmail.com>
---
 Thanks, Junio. It should be alright now.
 git-stash.sh |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
Show changes to git-stash.sh +9 −7
diff --git a/git-stash.sh b/git-stash.sh
index 77c9421..844a3e5 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Copyright (c) 2007, Nanako Shiraishi

-USAGE='[ | list | show | apply | clear]'
+USAGE='[  | save | list | show | apply | clear ]'

 SUBDIRECTORY_OK=Yes
 . git-sh-setup
@@ -195,6 +195,10 @@ show)
        shift
        show_stash "$@"
        ;;
+save)
+       shift
+       save_stash "$*" && git-reset --hard
+       ;;
 apply)
        shift
        apply_stash "$@"
@@ -202,14 +206,12 @@ apply)
 clear)
        clear_stash
        ;;
-help | usage)
-       usage
-       ;;
 *)
-       if test $# -gt 0 && test "$1" = save
+       if test "$#" -eq "0"
        then
-               shift
+               save_stash && git-reset --hard
+       else
+               usage
        fi
-       save_stash "$*" && git-reset --hard
        ;;
 esac
-- 
1.5.3.7-dirty
Wayne Davison· Dec 3, 2007, 06:16 UTC · re: Kevin Leung · lore

Re: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

On Mon, Dec 03, 2007 at 10:34:05AM +0800, Kevin Leung wrote:
> +USAGE='[  | save | list | show | apply | clear ]'

It seems strange to me that git stash is using sub-sub-command words instead of options. Would it make more sense to be more like git branch and have a list be indicated by -l, etc.?

..wayne..
Johannes Schindelin· Dec 3, 2007, 10:25 UTC · re: Wayne Davison · lore

Re: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

Hi,
On Sun, 2 Dec 2007, Wayne Davison wrote:
Show 6 quoted lines
> On Mon, Dec 03, 2007 at 10:34:05AM +0800, Kevin Leung wrote:
> > +USAGE='[  | save | list | show | apply | clear ]'
> 
> It seems strange to me that git stash is using sub-sub-command words 
> instead of options.  Would it make more sense to be more like git branch 
> and have a list be indicated by -l, etc.?

But those are not really options, are they? They are commands, which exclude each other. And even if they are sub-sub-commands, why should we not rather fix "git branch" to support a sane syntax, too?

We could even put some general support into parse-options.[ch] for sub-commands.

Ciao, Dscho

Wayne Davison· Dec 4, 2007, 15:28 UTC · re: Johannes Schindelin · lore

Re: [PATCH] git-stash: Display help message if git-stash is run with wrong sub-commands

On Mon, Dec 03, 2007 at 10:25:17AM +0000, Johannes Schindelin wrote:
> But those are not really options, are they?  They are commands, which 
> exclude each other.

Option syntax is often used to represent exclusive commands, especially when those commands need to be distinguished from free-form arg words. The "git checkout" command is another example of this in git, and there are plenty of non-git examples of such a use of option syntax around. Such a syntax makes it easier to have a default action while still taking a free-form arg. I personally think that using option syntax for its behavior choices would be preferable with git stash.

..wayne..

← back to recent threads