Commit 9e140909 authored by Thomas Gummerer's avatar Thomas Gummerer Committed by Junio C Hamano

stash: allow pathspecs in the no verb form

Now that stash_push is used in the no verb form of stash, allow
specifying the command line for this form as well.  Always use -- to
disambiguate pathspecs from other non-option arguments.

Also make git stash -p an alias for git stash push -p.  This allows
users to use git stash -p <pathspec>.
Signed-off-by: default avatarThomas Gummerer <[email protected]>
Signed-off-by: default avatarJunio C Hamano <[email protected]>
parent 1ada5020
...@@ -54,10 +54,13 @@ push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q ...@@ -54,10 +54,13 @@ push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q
Save your local modifications to a new 'stash' and roll them Save your local modifications to a new 'stash' and roll them
back to HEAD (in the working tree and in the index). back to HEAD (in the working tree and in the index).
The <message> part is optional and gives The <message> part is optional and gives
the description along with the stashed state. For quickly making the description along with the stashed state.
a snapshot, you can omit _both_ "save" and <message>, but giving +
only <message> does not trigger this action to prevent a misspelled For quickly making a snapshot, you can omit "push". In this mode,
subcommand from making an unwanted stash. 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 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 modified states only for the files that match the pathspec. The index
......
...@@ -656,12 +656,15 @@ apply_to_branch () { ...@@ -656,12 +656,15 @@ apply_to_branch () {
} }
} }
test "$1" = "-p" && set "push" "[email protected]"
PARSE_CACHE='--not-parsed' PARSE_CACHE='--not-parsed'
# The default command is "push" if nothing but options are given # The default command is "push" if nothing but options are given
seen_non_option= seen_non_option=
for opt for opt
do do
case "$opt" in case "$opt" in
--) break ;;
-*) ;; -*) ;;
*) seen_non_option=t; break ;; *) seen_non_option=t; break ;;
esac esac
......
...@@ -892,4 +892,19 @@ test_expect_success 'untracked files are left in place when -u is not given' ' ...@@ -892,4 +892,19 @@ test_expect_success 'untracked files are left in place when -u is not given' '
test_path_is_file untracked test_path_is_file untracked
' '
test_expect_success 'stash without verb with pathspec' '
>"foo bar" &&
>foo &&
>bar &&
git add foo* &&
git stash -- "foo b*" &&
test_path_is_missing "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar &&
git stash pop &&
test_path_is_file "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar
'
test_done test_done
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment