summaryrefslogtreecommitdiffstats
path: root/git-stash.sh
diff options
context:
space:
mode:
authorAaron M Watson <watsona4@gmail.com>2016-10-24 19:40:13 -0400
committerJunio C Hamano <gitster@pobox.com>2016-10-26 09:58:10 -0700
commita56c8f5aab5a6ffdd687de5134883df60cc4c919 (patch)
tree7a068256143229f9287f7fda9fded15b8d57bc50 /git-stash.sh
parent659889482ac63411daea38b2c3d127842ea04e4d (diff)
downloadgit-a56c8f5aab5a6ffdd687de5134883df60cc4c919.tar.gz
git-a56c8f5aab5a6ffdd687de5134883df60cc4c919.tar.xz
stash: allow stashes to be referenced by index only
Instead of referencing "stash@{n}" explicitly, make it possible to simply reference as "n". Most users only reference stashes by their position in the stash stack (what I refer to as the "index" here). The syntax for the typical stash (stash@{n}) is slightly annoying and easy to forget, and sometimes difficult to escape properly in a script. Because of this the capability to do things with the stash by simply referencing the index is desirable. This patch includes the superior implementation provided by Ă˜sse Walle (thanks for that), with a slight change to fix a broken test in the test suite. I also merged the test scripts as suggested by Jeff King, and un-wrapped the documentation as suggested by Junio Hamano. Signed-off-by: Aaron M Watson <watsona4@gmail.com> Reviewed-by: Jeff King <peff@peff.net>
Diffstat (limited to 'git-stash.sh')
-rwxr-xr-xgit-stash.sh15
1 files changed, 13 insertions, 2 deletions
diff --git a/git-stash.sh b/git-stash.sh
index 90d63f293..4546abaae 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -384,9 +384,8 @@ parse_flags_and_rev()
i_tree=
u_tree=
- REV=$(git rev-parse --no-flags --symbolic --sq "$@") || exit 1
-
FLAGS=
+ REV=
for opt
do
case "$opt" in
@@ -404,6 +403,9 @@ parse_flags_and_rev()
die "$(eval_gettext "unknown option: \$opt")"
FLAGS="${FLAGS}${FLAGS:+ }$opt"
;;
+ *)
+ REV="${REV}${REV:+ }'$opt'"
+ ;;
esac
done
@@ -422,6 +424,15 @@ parse_flags_and_rev()
;;
esac
+ case "$1" in
+ *[!0-9]*)
+ :
+ ;;
+ *)
+ set -- "${ref_stash}@{$1}"
+ ;;
+ esac
+
REV=$(git rev-parse --symbolic --verify --quiet "$1") || {
reference="$1"
die "$(eval_gettext "\$reference is not a valid reference")"