From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> "git stash -p <pathspec>" should imply "git stash push -p <pathspec>" but that was broken by a code cleanup in c3713cede7 (stash: eliminate crude option parsing, 2020-02-17). This regression is fixed in the first patch. Although "-p" implies the "push" subcommand "--patch" has never implied "push". That is fixed in the second patch. Thanks to Martin for his comments on V2 Changes since V2: - Made test stricter as suggested by Martin Thanks to Junio for his comments on V1. Changes since V1: - Split out the regression fix into its own patch Base-Commit: 1a8a4971cc6c179c4dd711f4a7f5d7178f4b3ab7 Published-As: https://github.com/phillipwood/git/releases/tag/pw%2Fstash-assume-push-with-dash-p%2Fv3 View-Changes-At: https://github.com/phillipwood/git/compare/1a8a4971c...d3a958430 Fetch-It-Via: git fetch https://github.com/phillipwood/git pw/stash-assume-push-with-dash-p/v3 Phillip Wood (2): stash: allow "git stash -p <pathspec>" to assume push again stash: allow "git stash [<options>] --patch <pathspec>" to assume push builtin/stash.c | 10 +++++++--- t/t3903-stash.sh | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) Range-diff against v2: 1: 2cd67f5cd85 ! 1: c147eaf2eae stash: allow "git stash -p <pathspec>" to assume push again @@ Commit message Fix this by regression by checking argv[1] instead of argv[0] and add a couple of tests to prevent future regressions. + Helped-by: Martin Ågren <martin.agren@xxxxxxxxx> Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> ## builtin/stash.c ## @@ t/t3903-stash.sh: test_expect_success 'stash -- <pathspec> stashes and restores ' +test_expect_success 'stash -p <pathspec> stash and restores the file' ' -+ cat file >expect-file && -+ echo changed-file >file && ++ test_write_lines b c >file && ++ git commit -m "add a few lines" file && ++ test_write_lines a b c d >file && ++ test_write_lines b c d >expect-file && + echo changed-other-file >other-file && -+ echo a | git stash -p file && ++ test_write_lines s y n | git stash -p file && + test_cmp expect-file file && + echo changed-other-file >expect && + test_cmp expect other-file && ++ git checkout HEAD -- file && + git stash pop && + test_cmp expect other-file && -+ echo changed-file >expect && ++ test_write_lines a b c >expect && + test_cmp expect file +' + 2: 98ad3de9770 ! 2: d3a95843055 stash: allow "git stash [<options>] --patch <pathspec>" to assume push @@ t/t3903-stash.sh: test_expect_success 'stash -- <pathspec> stashes and restores -test_expect_success 'stash -p <pathspec> stash and restores the file' ' +test_expect_success 'stash --patch <pathspec> stash and restores the file' ' - cat file >expect-file && - echo changed-file >file && + test_write_lines b c >file && + git commit -m "add a few lines" file && + test_write_lines a b c d >file && + test_write_lines b c d >expect-file && echo changed-other-file >other-file && -- echo a | git stash -p file && -+ echo a | git stash -m "stash bar" --patch file && +- test_write_lines s y n | git stash -p file && ++ test_write_lines s y n | git stash -m "stash bar" --patch file && test_cmp expect-file file && echo changed-other-file >expect && test_cmp expect other-file && -- 2.49.0.897.gfad3eb7d210