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: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1ada5020b3
commit
9e140909f6
@ -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 () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "$1" = "-p" && set "push" "$@"
|
||||||
|
|
||||||
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' '
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user