From: Thomas Gummerer <t.gummerer@gmail.com>
To: Jeff King <peff@peff.net>
Cc: "Matthieu Moy" <Matthieu.Moy@grenoble-inp.fr>,
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>
Subject: Re: [PATCH v3 0/5] stash: support pathspec argument
Date: Mon, 13 Feb 2017 22:33:46 +0000 [thread overview]
Message-ID: <20170213223346.GD652@hank> (raw)
In-Reply-To: <20170213214521.pkjesijdlus36tnp@sigill.intra.peff.net>
On 02/13, Jeff King wrote:
> On Mon, Feb 13, 2017 at 10:35:31PM +0100, Matthieu Moy wrote:
>
> > > Is it really that dangerous, though? The likely outcome is Git saying
> > > "nope, you don't have any changes to the file named drop". Of course the
> > > user may have meant something different, but I feel like "-p" is a good
> > > indicator that they are interested in making an actual stash.
> >
> > Indeed -p is not the best example. In the old thread, I used -q which is
> > much more problematic:
> >
> > git stash -q drop => interpreted as: git stash push -q drop
> > git stash drop -q => drop with option -q
>
> Yeah, I'd agree with that. I wouldn't propose to loosen it entirely, but
> rather to treat "-p" specially.
>
> > It's not really "dangerous" at least in this case, since we misinterpret
> > a destructive command for a less destructive one, but it is rather
> > confusing that changing the order between command and options change the
> > behavior.
> >
> > I actually find it a reasonable expectation to allow swapping commands
> > and options, some programs other than git allow it.
>
> I think we may have already crossed that bridge with "git -p stash".
>
> Not to mention that the ordering already _is_ relevant (we disallow one
> order but not the other). If we really wanted to allow swapping, it
> would mean making:
>
> git stash -p drop
>
> the same as:
>
> git stash drop -p
>
> I actually find _that_ more confusing. It would perhaps make more sense
> with something like "-q", which is more of a "global" option than a
> command-specific one. But I think we'd want to whitelist such global
> options (and "-p" would not be on that list).
>
> > > The complexity is that right now, the first-level decision of "which
> > > stash sub-command am I running?" doesn't know about any options. So "git
> > > stash -m foo" would be rejected in the name of typo prevention, unless
> > > that outer decision learns about "-m" as an option.
> >
> > Ah, OK. But that's not really hard to implement: when going through the
> > option list looking for non-option, shift one more time when finding -m.
>
> No, it's not hard conceptually. It just means implementing the
> option-parsing policy in two places. That's not too bad now, but if we
> started using rev-parse's options helper, then I think you have corner
> cases like "git stash -km foo".
>
> My "-p" suggestion suffers from a similar problem if you treat it as
> "you can omit the 'push' if you say "-p", rather than "if -p is the
> first option, it is a synonym for 'push -p'".
I'm almost convinced of special casing "-p". (Maybe I'm easy to
convince as well, because it would be convenient ;) ) However it's a
bit weird that now "git stash -p file" would work, but "git stash -m
message" wouldn't. Maybe we should do it the other way around, and
only special case "-q", and see if there is an non option argument
after that? From a glance at the options that's the only one where
"git stash -<option> <verb>" could make sense to the user.
next prev parent reply other threads:[~2017-02-13 22:33 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
[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 [this message]
[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=20170213223346.GD652@hank \
--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=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.