From 064ed100b2b3530c4b8c4534aa663d2455b735da Mon Sep 17 00:00:00 2001 From: Jon Seymour Date: Sat, 21 Aug 2010 14:08:58 +1000 Subject: [PATCH] detached-stash: simplify stash_apply The implementation of stash_apply() is simplified to take advantage of the common parsing function parse_flags_and_rev(). Signed-off-by: Jon Seymour Signed-off-by: Junio C Hamano --- git-stash.sh | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/git-stash.sh b/git-stash.sh index 42b0da27a..ba68f1e4a 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -358,40 +358,8 @@ assert_stash_ref() { } apply_stash () { - applied_stash= - unstash_index= - while test $# != 0 - do - case "$1" in - --index) - unstash_index=t - ;; - -q|--quiet) - GIT_QUIET=t - ;; - *) - break - ;; - esac - shift - done - - if test $# = 0 - then - have_stash || die 'Nothing to apply' - applied_stash="$ref_stash@{0}" - else - applied_stash="$*" - fi - - # stash records the work tree, and is a merge between the - # base commit (first parent) and the index tree (second parent). - s=$(git rev-parse --quiet --verify --default $ref_stash "$@") && - w_tree=$(git rev-parse --quiet --verify "$s:") && - b_tree=$(git rev-parse --quiet --verify "$s^1:") && - i_tree=$(git rev-parse --quiet --verify "$s^2:") || - die "$*: no valid stashed state found" + assert_stash_like "$@" git update-index -q --refresh && git diff-files --quiet --ignore-submodules || @@ -402,7 +370,7 @@ apply_stash () { die 'Cannot apply a stash in the middle of a merge' unstashed_index_tree= - if test -n "$unstash_index" && test "$b_tree" != "$i_tree" && + if test -n "$INDEX_OPTION" && test "$b_tree" != "$i_tree" && test "$c_tree" != "$i_tree" then git diff-tree --binary $s^2^..$s^2 | git apply --cached @@ -447,7 +415,7 @@ apply_stash () { else # Merge conflict; keep the exit status from merge-recursive status=$? - if test -n "$unstash_index" + if test -n "$INDEX_OPTION" then echo >&2 'Index was not unstashed.' fi -- 2.26.2