stash: simplify defaulting to "save" and reject unknown options
authorMatthieu Moy <Matthieu.Moy@imag.fr>
Tue, 18 Aug 2009 21:38:40 +0000 (23:38 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Sep 2009 05:03:11 +0000 (22:03 -0700)
commit3c2eb80fe3f3c7efbb25e929df9f70d7c896a5ef
treed530750f12ec624139b62d7bff3370877da3c7f5
parent14c674e9dc52c4b93512b22748c01ca6ccdef7bd
stash: simplify defaulting to "save" and reject unknown options

With the earlier DWIM patches, certain combination of options defaulted
to the "save" command correctly while certain equally valid combination
did not.  For example, "git stash -k" were Ok but "git stash -q -k" did
not work.

This makes the logic of defaulting to "save" much simpler. If there are no
non-flag arguments, it is clear that there is no command word, and we
default to "save" subcommand.  This rule prevents "git stash -q apply"
from quietly creating a stash with "apply" as the message.

This also teaches "git stash save" to reject an unknown option.  This is
to keep a mistyped "git stash save --quite" from creating a stash with a
message "--quite", and this safety is more important with the new logic
to default to "save" with any option-looking argument without an explicit
comand word.

[jc: this is based on Matthieu's 3-patch series, and a follow-up
discussion, and he and Peff take all the credit; if I have introduced bugs
while reworking, they are mine.]

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-stash.txt
git-stash.sh
t/t3903-stash.sh