зеркало из https://github.com/microsoft/git.git
Merge branch 'ow/stash-with-ifs'
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:
Коммит
ff724276cd
14
git-stash.sh
14
git-stash.sh
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче