From: Thomas Gummerer <t.gummerer@gmail.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, "Stephan Beyer" <s-beyer@gmx.net>,
"Junio C Hamano" <gitster@pobox.com>,
"Marc Strapetz" <marc.strapetz@syntevo.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Øyvind A . Holm" <sunny@sunbase.org>,
"Jakub Narębski" <jnareb@gmail.com>,
"Matthieu Moy" <Matthieu.Moy@imag.fr>
Subject: Re: [PATCH v3 0/5] stash: support pathspec argument
Date: Sun, 12 Feb 2017 19:30:50 +0000 [thread overview]
Message-ID: <20170212193050.GA652@hank> (raw)
In-Reply-To: <20170206161432.zvpsqegjspaa2l5l@sigill.intra.peff.net>
[+cc Matthieu Moy as author of a patch mentioned below]
On 02/06, Jeff King wrote:
> On Sun, Feb 05, 2017 at 08:26:37PM +0000, Thomas Gummerer wrote:
>
> > Thanks Junio for the review in the previous round.
> >
> > Changes since v2:
> >
> > - $IFS should now be supported by using "$@" everywhere instead of using
> > a $files variable.
> > - Added a new patch showing the old behaviour of git stash create is
> > preserved.
> > - Rephrased the documentation
> > - Simplified the option parsing in save_stash, by leaving the
> > actual parsing to push_stash instead.
>
> Overall, I like the direction this is heading. I raised a few issues,
> the most major of which is whether we want to allow the minor regression
> in "git stash create -m foo".
>
> This also makes "git stash push -p <pathspec...>" work, which is good. I
> don't think "git stash -p <pathspec...>" does, though. I _think_ it
> would be trivial to do on top, since we already consider that case an
> error. That's somewhat outside the scope of your series, so I won't
> complain (too much :) ) if you don't dig into it, but it might just be
> trivial on top.
Hmm good idea, I think it would indeed be nice to add that. Theres a
few things to consider though. First, we need to switch git stash
without arguments over to use git stash push internally. This does
introduce a slight regression as we currently allow git stash save --
-fmessage, (only messages starting with - are allowed). I think that
regression would be acceptable however.
The other question is when we should allow the pathspec argument.
3c2eb80f, ("stash: simplify defaulting to "save" and reject unknown
options") made sure that all option arguments are treated the same. I
think we could use the usual disambiguation of -- to allow pathspecs
after that, so stash -p wouldn't be treated specially, otherwise the
rules could get a bit confusing again.
The other question is how we would deal with the -m flag for
specifying a stash message. I think we could special case it, but
that would allow users to do things such as git stash -m apply, which
would make the interface a bit more error prone. So I'm leaning
towards disallowing that for now.
> A few other random bits I noticed while playing with the new code:
>
> $ git init
> $ echo content >file && git add file && git commit -m file
> $ echo change >file
>
> $ git stash push -p not-file
> No changes.
> No changes selected
>
> Probably only one of those is necessary. :)
>
> Let's keep trying a few things:
>
> $ git stash push not-file
> Saved working directory and index state WIP on master: 5d5f951 file
> Unstaged changes after reset:
> M file
> M file
>
> The unstaged change is mentioned twice, which is weird. But weirder
> still is that we created a stash at all, as it's empty. Why didn't we
> hit the "no changes selected" path?
>
> And one more:
>
> $ echo foo >untracked
> $ git stash push untracked
> Saved working directory and index state WIP on master: 5d5f951 file
> Unstaged changes after reset:
> M file
> M file
> Removing untracked
>
> We removed the untracked file, even though it wasn't actually stashed! I
> thought at first this was because it was mentioned as a pathspec, but it
> seems to happen even with a different name:
>
> $ echo foo >untracked
> $ git stash push does-not-exist
> ...
> Removing untracked
>
> That seems dangerous.
Ouch, yeah this is clearly not good. I'll fix this, and add tests for
these cases.
> -Peff
next prev parent reply other threads:[~2017-02-12 19:30 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-21 20:08 [PATCH 0/3] stash: support filename argument Thomas Gummerer
2017-01-21 20:08 ` [PATCH 1/3] Documentation/stash: remove mention of git reset --hard Thomas Gummerer
2017-01-22 1:27 ` Øyvind A. Holm
2017-01-24 19:51 ` Jakub Narębski
2017-01-24 20:14 ` Jeff King
2017-01-25 13:02 ` Jakub Narębski
2017-01-25 21:20 ` Junio C Hamano
2017-01-25 21:20 ` Junio C Hamano
2017-01-28 19:30 ` Thomas Gummerer
2017-01-28 23:54 ` Jeff King
2017-01-21 20:08 ` [PATCH 2/3] stash: introduce push verb Thomas Gummerer
2017-01-23 18:27 ` Junio C Hamano
2017-01-29 12:39 ` Thomas Gummerer
2017-01-21 20:08 ` [PATCH 3/3] stash: support filename argument Thomas Gummerer
2017-01-23 18:50 ` Junio C Hamano
2017-01-29 13:29 ` Thomas Gummerer
2017-01-24 10:56 ` [PATCH 0/3] " Johannes Schindelin
2017-01-29 20:16 ` [PATCH v2 0/4] stash: create " Thomas Gummerer
2017-01-29 20:16 ` [PATCH v2 1/4] Documentation/stash: remove mention of git reset --hard Thomas Gummerer
2017-01-30 21:13 ` Junio C Hamano
2017-02-05 12:13 ` Thomas Gummerer
2017-01-29 20:16 ` [PATCH v2 2/4] stash: introduce push verb Thomas Gummerer
2017-01-30 21:12 ` Junio C Hamano
[not found] ` <xmqqy3xsux4g.fsf@gitster.mtv.corp.google.com>
2017-02-04 12:19 ` Thomas Gummerer
2017-01-29 20:16 ` [PATCH v2 3/4] introduce new format for git stash create Thomas Gummerer
2017-01-30 21:10 ` Junio C Hamano
[not found] ` <xmqqtw8guwfm.fsf@gitster.mtv.corp.google.com>
2017-02-04 13:18 ` Thomas Gummerer
2017-01-29 20:16 ` [PATCH v2 4/4] stash: support filename argument Thomas Gummerer
2017-01-30 21:11 ` Junio C Hamano
2017-02-05 11:02 ` Thomas Gummerer
2017-02-05 20:26 ` [PATCH v3 0/5] stash: support pathspec argument Thomas Gummerer
2017-02-05 20:26 ` [PATCH v3 1/5] Documentation/stash: remove mention of git reset --hard Thomas Gummerer
2017-02-06 15:22 ` Jeff King
2017-02-05 20:26 ` [PATCH v3 2/5] stash: introduce push verb Thomas Gummerer
2017-02-06 15:46 ` Jeff King
2017-02-11 13:33 ` Thomas Gummerer
[not found] ` <vpqlgtaz09q.fsf@anie.imag.fr>
2017-02-13 22:16 ` Thomas Gummerer
2017-02-05 20:26 ` [PATCH v3 3/5] stash: add test for the create command line arguments Thomas Gummerer
2017-02-06 15:50 ` Jeff King
2017-02-11 13:55 ` Thomas Gummerer
2017-02-05 20:26 ` [PATCH v3 4/5] stash: introduce new format create Thomas Gummerer
2017-02-06 15:56 ` Jeff King
2017-02-11 14:51 ` Thomas Gummerer
2017-02-13 21:57 ` Jeff King
2017-02-13 23:05 ` Jeff King
2017-02-14 21:30 ` Thomas Gummerer
2017-02-05 20:26 ` [PATCH v3 5/5] stash: teach 'push' (and 'create') to honor pathspec Thomas Gummerer
[not found] ` <xmqqmvdz3ied.fsf@gitster.mtv.corp.google.com>
2017-02-06 15:20 ` Jeff King
2017-02-11 16:50 ` Thomas Gummerer
2017-02-06 16:14 ` [PATCH v3 0/5] stash: support pathspec argument Jeff King
2017-02-12 19:30 ` Thomas Gummerer [this message]
[not found] ` <vpq7f4uxjmo.fsf@anie.imag.fr>
2017-02-13 20:09 ` Jeff King
[not found] ` <vpqo9y5lqos.fsf@anie.imag.fr>
2017-02-13 21:45 ` Jeff King
2017-02-13 22:33 ` Thomas Gummerer
[not found] ` <xmqqwpctabvw.fsf@gitster.mtv.corp.google.com>
2017-02-14 0:27 ` Jeff King
[not found] ` <xmqqpoila9rt.fsf@gitster.mtv.corp.google.com>
2017-02-14 0:37 ` Jeff King
[not found] ` <vpq60kdjl63.fsf@anie.imag.fr>
2017-02-14 21:36 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170212193050.GA652@hank \
--to=t.gummerer@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Matthieu.Moy@imag.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=marc.strapetz@syntevo.com \
--cc=peff@peff.net \
--cc=s-beyer@gmx.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.
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.