Merge branch 'ow/stash-with-ifs' into maint

The implementation of 'git stash $cmd "stash@{...}"' did not quote
the stash argument properly and left it split at IFS whitespace.

* ow/stash-with-ifs:
  stash: handle specifying stashes with $IFS
This commit is contained in:
Junio C Hamano 2014-02-05 14:03:20 -08:00
commit a74a682b55
2 changed files with 19 additions and 7 deletions

View File

@ -358,7 +358,7 @@ parse_flags_and_rev()
i_tree=
u_tree=
REV=$(git rev-parse --no-flags --symbolic "$@") || exit 1
REV=$(git rev-parse --no-flags --symbolic --sq "$@") || exit 1
FLAGS=
for opt
@ -376,7 +376,7 @@ parse_flags_and_rev()
esac
done
set -- $REV
eval set -- $REV
case $# in
0)
@ -391,13 +391,13 @@ parse_flags_and_rev()
;;
esac
REV=$(git rev-parse --quiet --symbolic --verify $1 2>/dev/null) || {
REV=$(git rev-parse --quiet --symbolic --verify "$1" 2>/dev/null) || {
reference="$1"
die "$(eval_gettext "\$reference is not valid reference")"
}
i_commit=$(git rev-parse --quiet --verify $REV^2 2>/dev/null) &&
set -- $(git rev-parse $REV $REV^1 $REV: $REV^1: $REV^2: 2>/dev/null) &&
i_commit=$(git rev-parse --quiet --verify "$REV^2" 2>/dev/null) &&
set -- $(git rev-parse "$REV" "$REV^1" "$REV:" "$REV^1:" "$REV^2:" 2>/dev/null) &&
s=$1 &&
w_commit=$1 &&
b_commit=$2 &&
@ -408,8 +408,8 @@ parse_flags_and_rev()
test "$ref_stash" = "$(git rev-parse --symbolic-full-name "${REV%@*}")" &&
IS_STASH_REF=t
u_commit=$(git rev-parse --quiet --verify $REV^3 2>/dev/null) &&
u_tree=$(git rev-parse $REV^3: 2>/dev/null)
u_commit=$(git rev-parse --quiet --verify "$REV^3" 2>/dev/null) &&
u_tree=$(git rev-parse "$REV^3:" 2>/dev/null)
}
is_stash_like()

View File

@ -673,4 +673,16 @@ test_expect_success 'store updates stash ref and reflog' '
grep quux bazzy
'
test_expect_success 'handle stash specification with spaces' '
git stash clear &&
echo pig >file &&
git stash &&
stamp=$(git log -g --format="%cd" -1 refs/stash) &&
test_tick &&
echo cow >file &&
git stash &&
git stash apply "stash@{$stamp}" &&
grep pig file
'
test_done