mirror of
https://github.com/git/git.git
synced 2025-04-17 18:55:55 +00:00
Merge branch 'oa/stash-na'
* oa/stash-na: git stash: Give friendlier errors when there is nothing to apply
This commit is contained in:
commit
b91069ae9a
27
git-stash.sh
27
git-stash.sh
@ -162,10 +162,6 @@ show_stash () {
|
||||
}
|
||||
|
||||
apply_stash () {
|
||||
git update-index -q --refresh &&
|
||||
git diff-files --quiet --ignore-submodules ||
|
||||
die 'Cannot apply to a dirty working tree, please stage your changes'
|
||||
|
||||
unstash_index=
|
||||
|
||||
while test $# != 0
|
||||
@ -184,18 +180,27 @@ apply_stash () {
|
||||
shift
|
||||
done
|
||||
|
||||
# current index state
|
||||
c_tree=$(git write-tree) ||
|
||||
die 'Cannot apply a stash in the middle of a merge'
|
||||
if test $# = 0
|
||||
then
|
||||
have_stash || die 'Nothing to apply'
|
||||
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 --verify --default $ref_stash "$@") &&
|
||||
w_tree=$(git rev-parse --verify "$s:") &&
|
||||
b_tree=$(git rev-parse --verify "$s^1:") &&
|
||||
i_tree=$(git rev-parse --verify "$s^2:") ||
|
||||
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"
|
||||
|
||||
git update-index -q --refresh &&
|
||||
git diff-files --quiet --ignore-submodules ||
|
||||
die 'Cannot apply to a dirty working tree, please stage your changes'
|
||||
|
||||
# current index state
|
||||
c_tree=$(git write-tree) ||
|
||||
die 'Cannot apply a stash in the middle of a merge'
|
||||
|
||||
unstashed_index_tree=
|
||||
if test -n "$unstash_index" && test "$b_tree" != "$i_tree" &&
|
||||
test "$c_tree" != "$i_tree"
|
||||
|
Loading…
x
Reference in New Issue
Block a user