From: Brandon Casey <casey@nrlssc.navy.mil>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Junio C Hamano <gitster@pobox.com>,
Git Mailing List <git@vger.kernel.org>
Subject: [PATCH 4/4] git-stash: add new 'drop' subcommand
Date: Fri, 22 Feb 2008 13:04:54 -0600 [thread overview]
Message-ID: <47BF1CD6.70500@nrlssc.navy.mil> (raw)
In-Reply-To: <1203706541-21719-3-git-send-email-casey@nrlssc.navy.mil>
This allows a single stash entry to be deleted. It takes an
optional argument which is a stash reflog entry. If no
arguments are supplied, it drops the most recent stash entry.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---
Documentation/git-stash.txt | 7 ++++++-
git-stash.sh | 25 ++++++++++++++++++++++++-
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index 48e6f5a..f50c24c 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)
+'git-stash' (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>])
'git-stash' [save [<message>]]
DESCRIPTION
@@ -85,6 +85,11 @@ clear::
Remove all the stashed states. Note that those states will then
be subject to pruning, and may be difficult or impossible to recover.
+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}`
+
DISCUSSION
----------
diff --git a/git-stash.sh b/git-stash.sh
index b00f888..caa0258 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 | create ]'
+USAGE='[ | save | list | show | apply | clear | drop | create ]'
SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
@@ -196,6 +196,25 @@ apply_stash () {
fi
}
+drop_stash () {
+ have_stash || die 'No stash entries to drop'
+
+ test $# = 0 && set -- "$ref_stash@{0}"
+
+ # Verify supplied argument looks like a stash entry
+ s=$(git rev-parse --revs-only --no-flags "$@") &&
+ git rev-parse --verify "$s:" > /dev/null 2>&1 &&
+ git rev-parse --verify "$s^1:" > /dev/null 2>&1 &&
+ git rev-parse --verify "$s^2:" > /dev/null 2>&1 ||
+ die "$*: not a valid stashed state"
+
+ git reflog delete --updateref --rewrite "$@" &&
+ echo "Dropped $* ($s)" || die "$*: Could not drop stash entry"
+
+ # clear_stash if we just dropped the last stash entry
+ git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash
+}
+
# Main command set
case "$1" in
list)
@@ -230,6 +249,10 @@ create)
fi
create_stash "$*" && echo "$w_commit"
;;
+drop)
+ shift
+ drop_stash "$@"
+ ;;
*)
if test $# -eq 0
then
--
1.5.4.2.267.g38ea
next prev parent reply other threads:[~2008-02-22 19:06 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-03 10:59 What's cooking in git.git (topics) Junio C Hamano
2008-02-03 21:43 ` Johannes Schindelin
2008-02-05 9:37 ` Junio C Hamano
2008-02-05 10:24 ` Jakub Narebski
2008-02-06 9:31 ` Junio C Hamano
2008-02-07 2:03 ` Junio C Hamano
2008-02-07 5:05 ` Jeff King
2008-02-07 9:43 ` Lars Hjemli
2008-02-07 10:32 ` Jakub Narebski
2008-02-10 10:48 ` Junio C Hamano
2008-02-10 16:29 ` Jakub Narebski
2008-02-10 16:48 ` Johannes Schindelin
2008-02-10 22:09 ` Junio C Hamano
2008-02-10 22:09 ` Junio C Hamano
2008-02-12 7:24 ` Junio C Hamano
2008-02-12 9:57 ` reflog-delete, was " Johannes Schindelin
2008-02-17 3:59 ` Junio C Hamano
2008-02-17 12:41 ` Jeff King
2008-02-17 13:52 ` Jakub Narebski
2008-02-17 18:59 ` Junio C Hamano
2008-02-17 22:01 ` Jakub Narebski
2008-02-18 0:37 ` Junio C Hamano
2008-02-18 1:05 ` Jakub Narebski
2008-02-17 15:48 ` Matthias Kestenholz
2008-02-17 18:10 ` Junio C Hamano
2008-02-17 18:22 ` Jeff King
2008-02-17 20:28 ` [Announce] 'next' rewound and rebased Junio C Hamano
2008-02-21 4:16 ` What's cooking in git.git (topics) Junio C Hamano
2008-02-21 10:40 ` Johannes Schindelin
2008-02-21 16:47 ` Junio C Hamano
2008-02-22 18:47 ` Brandon Casey
2008-02-22 18:56 ` [PATCH 1/4] git-reflog: add option --rewrite to update reflog entries while expiring Brandon Casey
2008-02-22 21:08 ` [PATCH] reflog-delete: parse standard reflog options Brandon Casey
[not found] ` <1203706541-21719-1-git-send-email-casey@nrlssc.navy.mil>
2008-02-22 18:57 ` [PATCH 2/4] refs.c: make close_ref() and commit_ref() non-static Brandon Casey
[not found] ` <1203706541-21719-2-git-send-email-casey@nrlssc.navy.mil>
2008-02-22 19:04 ` [PATCH 3/4] git-reflog: add option --updateref to write the last reflog sha1 into the ref Brandon Casey
[not found] ` <1203706541-21719-3-git-send-email-casey@nrlssc.navy.mil>
2008-02-22 19:04 ` Brandon Casey [this message]
2008-02-22 22:52 ` [PATCH] git-stash: add new 'pop' subcommand Brandon Casey
2008-02-22 22:26 ` What's cooking in git.git (topics) Junio C Hamano
2008-02-23 0:19 ` Brandon Casey
2008-02-23 0:29 ` Junio C Hamano
2008-02-23 0:51 ` Junio C Hamano
2008-02-23 2:43 ` Brandon Casey
2008-02-25 8:40 ` Junio C Hamano
2008-02-28 0:45 ` Junio C Hamano
2008-03-01 20:15 ` Junio C Hamano
2008-03-02 14:02 ` Shawn O. Pearce
2008-03-03 2:06 ` Junio C Hamano
2008-03-06 5:49 ` Junio C Hamano
2008-03-06 17:01 ` Johannes Schindelin
2008-03-08 9:38 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47BF1CD6.70500@nrlssc.navy.mil \
--to=casey@nrlssc.navy.mil \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.