Thanks Junio and Peff for comments on the last round.
Changes since then:
- removed mention of the "new form" of git stash create from the
Documentation.
- Changed documentation for git stash without a verb, mentioning
stash -p now being an alias for git stash push -p and that -- can be
used as disambiguation for for pathspecs
- Fixed ${1-...} which should have been ${1?...}
- Removed unused new_style variable from create_stash, which was a
leftover from perious rounds.
Interdiff below:
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index 97194576ef..369bfae33d 100644
--- a/Documentation/git-stash.txt
+++ b/Documentation/git-stash.txt
@@ -20,8 +20,6 @@ SYNOPSIS
[--] [<pathspec>...]]
'git stash' clear
'git stash' create [<message>]
-'git stash' create [-m <message>] [-u|--include-untracked <untracked|all>]
- [-- <pathspec>...]
'git stash' store [-m|--message <message>] [-q|--quiet] <commit>
DESCRIPTION
@@ -55,10 +53,13 @@ push [-p|--patch] [-k|--[no-]keep-index]
[-u|--include-untracked] [-a|--all] [-q
Save your local modifications to a new 'stash', and run `git reset
--hard` to revert them. The <message> part is optional and gives
- the description along with the stashed state. For quickly making
- a snapshot, you can omit _both_ "save" and <message>, but giving
- only <message> does not trigger this action to prevent a misspelled
- subcommand from making an unwanted stash.
+ the description along with the stashed state.
++
+For quickly making a snapshot, you can omit "push". In this mode,
+non-option arguments are not allowed to prevent a misspelled
+subcommand from making an unwanted stash. The two exceptions to this
+are `stash -p` which acts as alias for `stash push -p` and pathspecs,
+which are allowed after a double hyphen `--` for disambiguation.
+
When pathspec is given to 'git stash push', the new stash records the
modified states only for the files that match the pathspec. The index
diff --git a/git-stash.sh b/git-stash.sh
index 1446fbe2e8..18aba1346f 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -61,17 +61,16 @@ clear_stash () {
create_stash () {
stash_msg=
untracked=
- new_style=
while test $# != 0
do
case "$1" in
-m|--message)
shift
- stash_msg=${1-"BUG: create_stash () -m requires an
argument"}
+ stash_msg=${1?"BUG: create_stash () -m requires an
argument"}
;;
-u|--include-untracked)
shift
- untracked=${1-"BUG: create_stash () -u requires an
argument"}
+ untracked=${1?"BUG: create_stash () -u requires an
argument"}
;;
--)
shift
Thomas Gummerer (6):
stash: introduce push verb
stash: add test for the create command line arguments
stash: refactor stash_create
stash: teach 'push' (and 'create_stash') to honor pathspec
stash: use stash_push for no verb form
stash: allow pathspecs in the no verb form
Documentation/git-stash.txt | 27 ++++++--
git-stash.sh | 127 ++++++++++++++++++++++++++++++-------
t/t3903-stash.sh | 118 +++++++++++++++++++++++++++++++++-
t/t3905-stash-include-untracked.sh | 26 ++++++++
4 files changed, 267 insertions(+), 31 deletions(-)
--
2.12.0.rc2.399.g0ca89a282