From: Patrick Steinhardt <ps@pks.im>
To: Jeff King <peff@peff.net>
Cc: Jiang Xin <worldhello.net@gmail.com>,
Patrick Steinhardt <psteinhardt@gitlab.com>,
"brian m. carlson" <sandals@crustytoothpaste.net>,
Junio C Hamano <gitster@pobox.com>,
Git List <git@vger.kernel.org>,
Jiang Xin <zhiyou.jx@alibaba-inc.com>
Subject: Re: [PATCH] revision: allow pseudo options after --end-of-options
Date: Tue, 27 Jul 2021 08:10:47 +0200 [thread overview]
Message-ID: <YP+jZ/slM0MzmLF4@ncase> (raw)
In-Reply-To: <YO4CBKuwCEL4Xdzg@coredump.intra.peff.net>
[-- Attachment #1: Type: text/plain, Size: 2651 bytes --]
On Tue, Jul 13, 2021 at 05:13:40PM -0400, Jeff King wrote:
> On Tue, Jul 13, 2021 at 04:57:46PM +0800, Jiang Xin wrote:
>
> > > Though in my experience it is usually a static "--not --all" or "--not
> > > --branches --tags" or similar in such a function. I don't think I've
> > > ever seen a case quite like the code above in practice.
> >
> > Last week, I made a study on how gitlab wrap and execute a git
> > command. I saw the following code [1]:
> >
> > if c.supportsEndOfOptions() {
> > commandArgs = append(commandArgs, "--end-of-options")
> > }
> > if len(postSepArgs) > 0 {
> > commandArgs = append(commandArgs, "--")
> > }
> >
> > I was surprised to see the options "--end-of-options" and "--" used
> > next to each other, and the DashDash option ("--") is not mandatory.
>
> I think using --end-of-options there is pointless. The "--" will always
> signal the end of options (_and_ revisions). So if there is nothing
> between the two, then the former cannot be doing anything.
Indeed it is. I somehow missed your Cc (not used to receiving Git ML
mails on my work address), but by chance I fixed this last week because
I realized this was broken. We've now moved the `--end-of-options` flag
between positional arguments and flags like it should've been from the
beginning [1].
[snip]
> > But if I move the "--end-of-options" before the revisions like this:
> >
> > git log --stat --pretty="%m %s" --no-decorate \
> > --end-of-options \
> > topic1 --not main release \
> > -- \
> > src/hello.c doc
> >
> > The generated command failed to execute with error: unknown revision "--not".
> >
> > It's reasonable for gitlab to construct git commands using mainly three fields:
> > 1. Flags: for options like "--option", or "--key value".
> > 2. Args: for args like revisions.
> > 3. PostSepArgs: for pathspecs.
> >
> > And if the command supports these options, it's better to add
> > "--end-of-options" between 1 and 2, and add "--" between 2 and 3.
>
> Yeah, so the problem there is that the definition of "Args" is kind of
> fuzzy. Sometimes it is useful to include stuff like "--not", and
> sometimes it is dangerous or unexpected. Later you say:
Yeah, this is something that has been bothering me, too. It would be
nice to give special treatment to pseudo-revisions in git. That's why we
have now marked git-rev-list(1) to not support `--end-of-options` in
Gitaly, because we do pass pseudo-revisions to it in multiple places.
Patrick
[1]: https://gitlab.com/gitlab-org/gitaly/-/merge_requests/3676
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2021-07-27 6:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 15:03 [PATCH] revision: allow pseudo options after --end-of-options Jiang Xin
2021-07-08 17:01 ` brian m. carlson
2021-07-09 1:33 ` Jiang Xin
2021-07-10 21:54 ` brian m. carlson
2021-07-12 17:54 ` Jeff King
2021-07-12 18:47 ` Junio C Hamano
2021-07-12 19:47 ` Jeff King
2021-07-12 20:09 ` Junio C Hamano
2021-07-13 8:57 ` Jiang Xin
2021-07-13 21:13 ` Jeff King
2021-07-27 6:10 ` Patrick Steinhardt [this message]
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=YP+jZ/slM0MzmLF4@ncase \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=psteinhardt@gitlab.com \
--cc=sandals@crustytoothpaste.net \
--cc=worldhello.net@gmail.com \
--cc=zhiyou.jx@alibaba-inc.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.