stash: ensure --no-keep-index and --patch can be used in any order
authorDan McGee <dpmcgee@gmail.com>
Thu, 7 Apr 2011 17:04:20 +0000 (12:04 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Apr 2011 22:54:04 +0000 (15:54 -0700)
Don't assume one comes after the other on the command line. Use a
three-state variable to track and check its value accordingly.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-stash.sh
t/t3904-stash-patch.sh

index a305fb19f11bc4ae80e585b102ecb5d982d1a0f5..fd6688409062b05cf7d3139036a12c4d5f7cb882 100755 (executable)
@@ -136,11 +136,12 @@ save_stash () {
                        keep_index=t
                        ;;
                --no-keep-index)
-                       keep_index=
+                       keep_index=n
                        ;;
                -p|--patch)
                        patch_mode=t
-                       keep_index=t
+                       # only default to keep if we don't already have an override
+                       test -z "$keep_index" && keep_index=t
                        ;;
                -q|--quiet)
                        GIT_QUIET=t
@@ -185,7 +186,7 @@ save_stash () {
        then
                git reset --hard ${GIT_QUIET:+-q}
 
-               if test -n "$keep_index" && test -n $i_tree
+               if test "$keep_index" = "t" && test -n $i_tree
                then
                        git read-tree --reset -u $i_tree
                fi
@@ -193,7 +194,7 @@ save_stash () {
                git apply -R < "$TMP-patch" ||
                die "Cannot remove worktree changes"
 
-               if test -z "$keep_index"
+               if test "$keep_index" != "t"
                then
                        git reset
                fi
index 4d5878950be429bfdb9156675db012c51011e04a..781fd716815d90956575b042d72601e67834231c 100755 (executable)
@@ -48,7 +48,7 @@ test_expect_success PERL 'git stash -p --no-keep-index' '
        verify_state bar dummy bar_index
 '
 
-test_expect_failure PERL 'git stash --no-keep-index -p' '
+test_expect_success PERL 'git stash --no-keep-index -p' '
        set_state dir/foo work index &&
        set_state bar bar_work bar_index &&
        (echo n; echo y) | git stash save --no-keep-index -p &&