Thanks Junio for the review and the squashable diff with the fix for
my errors.
I changed it a tiny bit, to use git stash push instead of git stash,
so the complete diff could go into 4/6, where I think I think the test
fits best.
Interdiff below:
diff --git a/git-stash.sh b/git-stash.sh
index 28d0624c75..207c8126f4 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -300,6 +300,8 @@ push_stash () {
if test $# != 0
then
git reset ${GIT_QUIET:+-q} -- "$@"
+ git ls-files -z --modified -- "$@" |
+ git checkout-index -z --force --stdin
git checkout ${GIT_QUIET:+-q} HEAD -- $(git ls-files -z
--modified "$@")
git clean --force ${GIT_QUIET:+-q} -d -- "$@"
else
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index f7733b4dd4..89877e4b52 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -842,6 +842,22 @@ test_expect_success 'stash with file including $IFS
character' '
test_path_is_file bar
'
+test_expect_success 'stash with pathspec matching multiple paths' '
+ echo original >file &&
+ echo original >other-file &&
+ git commit -m "two" file other-file &&
+ echo modified >file &&
+ echo modified >other-file &&
+ git stash push -- "*file" &&
+ echo original >expect &&
+ test_cmp expect file &&
+ test_cmp expect other-file &&
+ git stash pop &&
+ echo modified >expect &&
+ test_cmp expect file &&
+ test_cmp expect other-file
+'
+
test_expect_success 'stash push -p with pathspec shows no changes only once' '
>foo &&
git add foo &&
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 | 25 +++++--
git-stash.sh | 116 +++++++++++++++++++++++++------
t/t3903-stash.sh | 138 ++++++++++++++++++++++++++++++++++++-
t/t3905-stash-include-untracked.sh | 26 +++++++
4 files changed, 275 insertions(+), 30 deletions(-)
--
2.12.0.428.g67fe103aa