aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Casey <casey@nrlssc.navy.mil>2008-02-22 16:52:50 -0600
committerJunio C Hamano <gitster@pobox.com>2008-02-22 22:59:11 -0800
commitbd56ff54f710d463a6858bdc7ef6245f9ef30f42 (patch)
treeb25a0d4efe68d24b43d90c37dc84e7f6564909dc
parente25d5f9c82ef6a676de616bd28751cdfbcd53b15 (diff)
downloadgit-bd56ff54f710d463a6858bdc7ef6245f9ef30f42.tar.gz
git-bd56ff54f710d463a6858bdc7ef6245f9ef30f42.tar.xz
git-stash: add new 'pop' subcommand
This combines the existing stash subcommands 'apply' and 'drop' to allow a single stash entry to be applied and then dropped, in other words 'popped', from the stash list. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/git-stash.txt8
-rwxr-xr-xgit-stash.sh10
2 files changed, 16 insertions, 2 deletions
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index f50c24ce9..8dc35d493 100644
--- a/Documentation/git-stash.txt
+++ b/Documentation/git-stash.txt
@@ -8,7 +8,7 @@ git-stash - Stash the changes in a dirty working directory away
SYNOPSIS
--------
[verse]
-'git-stash' (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>])
+'git-stash' (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>] | pop [<stash>])
'git-stash' [save [<message>]]
DESCRIPTION
@@ -90,6 +90,12 @@ drop [<stash>]::
Remove a single stashed state from the stash list. When no `<stash>`
is given, it removes the latest one. i.e. `stash@\{0}`
+pop [<stash>]::
+
+ Remove a single stashed state from the stash list and apply on top
+ of the current working tree state. When no `<stash>` is given,
+ `stash@\{0}` is assumed. See also `apply`.
+
DISCUSSION
----------
diff --git a/git-stash.sh b/git-stash.sh
index 5e3eb5679..c2b68205a 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright (c) 2007, Nanako Shiraishi
-USAGE='[ | save | list | show | apply | clear | drop | create ]'
+USAGE='[ | save | list | show | apply | clear | drop | pop | create ]'
SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
@@ -256,6 +256,14 @@ drop)
shift
drop_stash "$@"
;;
+pop)
+ shift
+ if apply_stash "$@"
+ then
+ test -z "$unstash_index" || shift
+ drop_stash "$@"
+ fi
+ ;;
*)
if test $# -eq 0
then