mirror of
https://github.com/git/git.git
synced 2026-01-10 10:13:33 +00:00
stash: allow "git stash [<options>] --patch <pathspec>" to assume push
The support for assuming "push" when "-p" is given introduced in
9e140909f6 (stash: allow pathspecs in the no verb form, 2017-02-28) is
very narrow, neither "git stash -m <message> -p <pathspec>" nor "git
stash --patch <pathspec>" imply "push" and die instead. Relax this by
passing PARSE_OPT_STOP_AT_NON_OPTION when push is being assumed and then
setting "force_assume" if "--patch" was present. This means "git stash
<pathspec> -p" still dies so that it does not assume the user meant
"push" if they mistype a subcommand name but "git stash -m <message> -p
<pathspec>" will now succeed. The test added in the last commit is
adjusted to check that push is still assumed when "--patch" comes after
other options on the command-line.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
e6659b77df
commit
468817bab2
@@ -1789,11 +1789,15 @@ static int push_stash(int argc, const char **argv, const char *prefix,
|
||||
int ret;
|
||||
|
||||
if (argc) {
|
||||
force_assume = argc > 1 && !strcmp(argv[1], "-p");
|
||||
int flags = PARSE_OPT_KEEP_DASHDASH;
|
||||
|
||||
if (push_assumed)
|
||||
flags |= PARSE_OPT_STOP_AT_NON_OPTION;
|
||||
|
||||
argc = parse_options(argc, argv, prefix, options,
|
||||
push_assumed ? git_stash_usage :
|
||||
git_stash_push_usage,
|
||||
PARSE_OPT_KEEP_DASHDASH);
|
||||
git_stash_push_usage, flags);
|
||||
force_assume |= patch_mode;
|
||||
}
|
||||
|
||||
if (argc) {
|
||||
|
||||
Reference in New Issue
Block a user