From: Rasmus Villemoes <rv@rasmusvillemoes.dk>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Duy Nguyen <pclouds@gmail.com>, Taylor Blau <me@ttaylorr.com>
Subject: Re: [PATCH v2 1/3] help: redirect to aliased commands for "git cmd --help"
Date: Wed, 3 Oct 2018 08:24:14 +0200 [thread overview]
Message-ID: <9ab3d69a-033a-e5a0-7459-c6ba8a2ec853@rasmusvillemoes.dk> (raw)
In-Reply-To: <20181003021358.GA20553@sigill.intra.peff.net>
On 2018-10-03 04:13, Jeff King wrote:
>> + /*
>> + * If we were invoked as "git help cmd", or cmd is an
>> + * alias for a shell command, we inform the user what
>> + * cmd is an alias for and do nothing else.
>> + */
>> + if (!exclude_guides || alias[0] == '!') {
>> + printf_ln(_("'%s' is aliased to '%s'"), cmd, alias);
>> + free(alias);
>> + exit(0);
>> + }
>
> I'm not sure I understand why exclude_guides is relevant. We check it
> below when we know that we _don't_ have an alias. Hrm. I guess you're
> using it here as a proxy for "git foo --help" being used instead of "git
> help foo".
Exactly. Perhaps it's abusing the existing machinery, but I didn't know
how else to distinguish the two cases, and didn't feel like introducing
another way of passing on the exact same information.
> The comment probably needs to spell out that exclude_guides
> is the same as your "we were invoked as...".
Will do. That will also make the string --exclude-guides (i.e., with a
dash) appear in the comment, making it more likely to be found should
anyone change when and how --exclude-guides is implied.
> I wonder if we could change the name of that option. It is an
> undocumented, hidden option that we use internally, so it should be OK
> to do so (or we could always add another one). That might prevent
> somebody in the future from using --exclude-guides in more places and
> breaking your assumption here.
Perhaps, but I think that's better left for a separate patch, if really
necessary even with the expanded comment.
>> + count = split_cmdline(alias, &argv);
>> + if (count < 0)
>> + die(_("bad alias.%s string: %s"), cmd,
>> + split_cmdline_strerror(count));
>> + return alias;
>
> So we split only to find argv[0] here. But then we don't return it. That
> works because the split is done in place, meaning we must have inserted
> a NUL in alias. That's sufficiently subtle that it might be worth
> spelling it out in a comment.
OK, I actually had precisely
+ /*
+ * We use split_cmdline() to get the first word of the
+ * alias, to ensure that we use the same rules as when
+ * the alias is actually used. split_cmdline()
+ * modifies alias in-place.
+ */
in v1, but thought it might be overly verbose. I'll put it back in.
> We don't need to free alias here as we do above, because we're passing
> it back. We should free argv, though, I think (not its elements, just
> the array itself).
Yeah, I thought about this, and removing free(argv) was the last thing I
did before sending v1 - because we were going to leak alias anyway. I'm
happy to put it back in, along with...
> Unfortunately the caller is going to leak our returned "alias", [...] I think it may be OK to overlook
> that and just UNLEAK() it in cmd_help().
...this. Except I'd rather do the UNLEAK in check_git_cmd (the
documentation does say "only from cmd_* functions or their direct
helpers") to make it a more targeted annotation.
Thanks,
Rasmus
next prev parent reply other threads:[~2018-10-03 6:24 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-26 10:26 [PATCH] help: allow redirecting to help for aliased command Rasmus Villemoes
2018-09-26 14:37 ` Taylor Blau
2018-09-26 15:19 ` Duy Nguyen
2018-09-28 7:44 ` Rasmus Villemoes
2018-09-26 15:30 ` Junio C Hamano
2018-09-26 18:09 ` Taylor Blau
2018-09-26 18:20 ` Junio C Hamano
2018-09-26 15:16 ` Duy Nguyen
2018-09-26 15:16 ` Junio C Hamano
2018-09-26 18:12 ` Taylor Blau
2018-09-28 7:53 ` Rasmus Villemoes
2018-09-26 18:49 ` Jeff King
2018-09-26 19:31 ` Junio C Hamano
2018-09-28 8:18 ` Rasmus Villemoes
2018-09-29 8:21 ` Jeff King
2018-09-29 17:39 ` Junio C Hamano
2018-09-30 4:27 ` Jeff King
2018-09-30 5:27 ` Junio C Hamano
2018-09-30 5:53 ` Jeff King
2018-09-28 7:40 ` Rasmus Villemoes
2018-09-28 17:00 ` Junio C Hamano
2018-10-01 11:21 ` [PATCH v2 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-01 11:21 ` [PATCH v2 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-03 2:16 ` Jeff King
2018-10-01 11:21 ` [PATCH v2 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-03 2:18 ` Jeff King
2018-10-03 6:25 ` Rasmus Villemoes
2018-10-03 2:13 ` [PATCH v2 1/3] help: redirect to aliased commands for "git cmd --help" Jeff King
2018-10-03 6:24 ` Rasmus Villemoes [this message]
2018-10-03 7:06 ` Jeff King
2018-10-03 11:42 ` [PATCH v3 0/3] alias help tweaks Rasmus Villemoes
2018-10-03 11:42 ` [PATCH v3 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-05 8:19 ` Junio C Hamano
2018-10-05 10:22 ` Rasmus Villemoes
2018-10-05 16:47 ` Junio C Hamano
2018-10-03 11:42 ` [PATCH v3 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-03 11:42 ` [PATCH v3 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-04 0:10 ` [PATCH v3 0/3] alias help tweaks Jeff King
2018-10-09 11:59 ` [PATCH v4 " Rasmus Villemoes
2018-10-09 11:59 ` [PATCH v4 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-09 11:59 ` [PATCH v4 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-09 11:59 ` [PATCH v4 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-12 3:17 ` [PATCH v4 0/3] alias help tweaks 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
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=9ab3d69a-033a-e5a0-7459-c6ba8a2ec853@rasmusvillemoes.dk \
--to=rv@rasmusvillemoes.dk \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=me@ttaylorr.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
/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).