From: Thomas Gummerer <t.gummerer@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Øyvind A . Holm" <sunny@sunbase.org>,
"Jakub Narębski" <jnareb@gmail.com>,
"Matthieu Moy" <Matthieu.Moy@grenoble-inp.fr>,
"Thomas Gummerer" <t.gummerer@gmail.com>
Subject: [PATCH v5 0/6] stash: support pathspec argument
Date: Fri, 17 Feb 2017 22:41:35 +0000 [thread overview]
Message-ID: <20170217224141.19183-1-t.gummerer@gmail.com> (raw)
In-Reply-To: <20170212215420.16701-1-t.gummerer@gmail.com>
Thanks Matthieu, Peff and Junio for the discussion on v3 and v4.
Changes since v4:
Dropped patch 1 from the series, as it's already in master
Instead of changing the external interface to git stash create, only
refactor the internal create_stash() function to take -m and -u
arguments. This also simplifies the internal option parsing.
Make git stash -p an alias for git stash push -p, so git stash -p
<pathspec> is allowed.
Interdiff below:
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index b0825f4aca..97194576ef 100644
--- a/Documentation/git-stash.txt
+++ b/Documentation/git-stash.txt
@@ -53,9 +53,8 @@ OPTIONS
save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--] [<pathspec>...]::
- Save your local modifications to a new 'stash' and roll them
- back to HEAD (in the working tree and in the index).
- The <message> part is optional and gives
+ Save your local modifications to a new 'stash', and run `git reset
+ --hard` to revert them. The <message> part is optional and gives
the description along with the stashed state. For quickly making
a snapshot, you can omit _both_ "save" and <message>, but giving
only <message> does not trigger this action to prevent a misspelled
diff --git a/git-stash.sh b/git-stash.sh
index a184b1e274..1446fbe2e8 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -67,51 +67,20 @@ create_stash () {
case "$1" in
-m|--message)
shift
- test -z ${1+x} && usage
- stash_msg="$1"
- new_style=t
+ stash_msg=${1-"BUG: create_stash () -m requires an argument"}
;;
-u|--include-untracked)
shift
- test -z ${1+x} && usage
- untracked="$1"
- new_style=t
+ untracked=${1-"BUG: create_stash () -u requires an argument"}
;;
--)
shift
- new_style=t
- break
- ;;
- *)
- if test -n "$new_style"
- then
- echo "invalid argument"
- option="$1"
- # TRANSLATORS: $option is an invalid option, like
- # `--blah-blah'. The 7 spaces at the beginning of the
- # second line correspond to "error: ". So you should line
- # up the second line with however many characters the
- # translation of "error: " takes in your language. E.g. in
- # English this is:
- #
- # $ git stash save --blah-blah 2>&1 | head -n 2
- # error: unknown option for 'stash save': --blah-blah
- # To provide a message, use git stash save -- '--blah-blah'
- eval_gettextln "error: unknown option for 'stash create': \$option"
- usage
- fi
break
;;
esac
shift
done
- if test -z "$new_style"
- then
- stash_msg="$*"
- set --
- fi
-
git update-index -q --refresh
if no_changes "$@"
then
@@ -698,6 +667,8 @@ apply_to_branch () {
}
}
+test "$1" = "-p" && set "push" "$@"
+
PARSE_CACHE='--not-parsed'
# The default command is "push" if nothing but options are given
seen_non_option=
@@ -740,7 +711,7 @@ clear)
;;
create)
shift
- create_stash "$@" && echo "$w_commit"
+ create_stash -m "$*" && echo "$w_commit"
;;
store)
shift
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 22ac75377b..c0ae41e724 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -800,15 +800,6 @@ test_expect_success 'create with multiple arguments for the message' '
test_cmp expect actual
'
-test_expect_success 'new style stash create stores correct message' '
- >foo &&
- git add foo &&
- STASH_ID=$(git stash create -m "create test message new style") &&
- echo "On master: create test message new style" >expect &&
- git show --pretty=%s -s ${STASH_ID} >actual &&
- test_cmp expect actual
-'
-
test_expect_success 'stash -- <filename> stashes and restores the file' '
>foo &&
>bar &&
Thomas Gummerer (6):
stash: introduce push verb
stash: add test for the create command line arguments
stash: refactor stash_create
stash: teach 'push' (and 'create_stash') to honor pathspec
stash: use stash_push for no verb form
stash: allow pathspecs in the no verb form
Documentation/git-stash.txt | 16 ++++-
git-stash.sh | 128 ++++++++++++++++++++++++++++++-------
t/t3903-stash.sh | 118 +++++++++++++++++++++++++++++++++-
t/t3905-stash-include-untracked.sh | 26 ++++++++
4 files changed, 261 insertions(+), 27 deletions(-)
--
2.11.0.301.g27b9849079.dirty
next prev parent reply other threads:[~2017-02-17 22:41 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailto:20170205202642.14216-1-t.gummerer@gmail.com>
2017-02-12 21:54 ` [PATCH v4 0/7] stash: support pathspec argument Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 1/7] Documentation/stash: remove mention of git reset --hard Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 2/7] stash: introduce push verb Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 3/7] stash: add test for the create command line arguments Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 4/7] stash: introduce new format create Thomas Gummerer
[not found] ` <vpqefz0ohub.fsf@anie.imag.fr>
2017-02-14 21:40 ` Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 5/7] stash: teach 'push' (and 'create') to honor pathspec Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 6/7] stash: use stash_push for no verb form Thomas Gummerer
2017-02-12 21:54 ` [PATCH v4 7/7] stash: allow pathspecs in the " Thomas Gummerer
2017-02-12 22:07 ` [PATCH v4 0/7] stash: support pathspec argument Thomas Gummerer
2017-02-17 22:41 ` Thomas Gummerer [this message]
2017-02-17 22:41 ` [PATCH v5 1/6] stash: introduce push verb Thomas Gummerer
2017-02-17 22:41 ` [PATCH v5 2/6] stash: add test for the create command line arguments Thomas Gummerer
2017-02-17 22:41 ` [PATCH v5 3/6] stash: refactor stash_create Thomas Gummerer
2017-02-17 23:48 ` Jeff King
2017-02-19 9:17 ` Thomas Gummerer
2017-02-17 22:41 ` [PATCH v5 4/6] stash: teach 'push' (and 'create_stash') to honor pathspec Thomas Gummerer
2017-02-17 22:41 ` [PATCH v5 5/6] stash: use stash_push for no verb form Thomas Gummerer
2017-02-17 22:41 ` [PATCH v5 6/6] stash: allow pathspecs in the " Thomas Gummerer
2017-02-17 23:46 ` Jeff King
2017-02-19 9:18 ` Thomas Gummerer
2017-02-17 23:01 ` [PATCH v5 0/6] stash: support pathspec argument Junio C Hamano
2017-02-17 23:12 ` Thomas Gummerer
2017-02-17 23:14 ` Junio C Hamano
[not found] ` <xmqqr32wph97.fsf@gitster.mtv.corp.google.com>
2017-02-17 23:06 ` Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 " Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 1/6] stash: introduce push verb Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 2/6] stash: add test for the create command line arguments Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 3/6] stash: refactor stash_create Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 4/6] stash: teach 'push' (and 'create_stash') to honor pathspec Thomas Gummerer
2017-02-21 16:55 ` Junio C Hamano
2017-02-25 20:27 ` Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 5/6] stash: use stash_push for no verb form Thomas Gummerer
2017-02-19 11:03 ` [PATCH v6 6/6] stash: allow pathspecs in the " Thomas Gummerer
2017-02-20 7:57 ` [PATCH v6 0/6] stash: support pathspec argument Jeff King
2017-02-20 8:22 ` Junio C Hamano
2017-02-20 19:39 ` Junio C Hamano
2017-02-25 15:57 ` Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 " Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 1/6] stash: introduce push verb Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 2/6] stash: add test for the create command line arguments Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 3/6] stash: refactor stash_create Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 4/6] stash: teach 'push' (and 'create_stash') to honor pathspec Thomas Gummerer
2017-02-27 20:32 ` Junio C Hamano
2017-02-27 20:35 ` Junio C Hamano
2017-02-27 21:56 ` Thomas Gummerer
2017-02-27 22:58 ` Junio C Hamano
2017-02-27 21:09 ` Junio C Hamano
2017-02-27 21:53 ` Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 5/6] stash: use stash_push for no verb form Thomas Gummerer
2017-02-25 21:33 ` [PATCH v7 6/6] stash: allow pathspecs in the " Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 0/6] stash: support pathspec argument Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 1/6] stash: introduce push verb Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 2/6] stash: add test for the create command line arguments Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 3/6] stash: refactor stash_create Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 4/6] stash: teach 'push' (and 'create_stash') to honor pathspec Thomas Gummerer
2017-02-28 22:15 ` Junio C Hamano
2017-03-01 21:57 ` Thomas Gummerer
2017-03-01 22:43 ` Junio C Hamano
2017-02-28 20:33 ` [PATCH v8 5/6] stash: use stash_push for no verb form Thomas Gummerer
2017-02-28 20:33 ` [PATCH v8 6/6] stash: allow pathspecs in the " Thomas Gummerer
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170217224141.19183-1-t.gummerer@gmail.com \
--to=t.gummerer@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=peff@peff.net \
--cc=sunny@sunbase.org \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).