From: "SZEDER Gábor" <szeder@ira.uka.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] describe --contains: default to HEAD when no commit-ish is given
Date: Mon, 24 Aug 2015 18:14:17 +0200 [thread overview]
Message-ID: <20150824181417.Horde.2DAlveA2ZaXbdApUl8wLOQ8@webmail.informatik.kit.edu> (raw)
In-Reply-To: <xmqqoai07gen.fsf@gitster.dls.corp.google.com>
Quoting Junio C Hamano <gitster@pobox.com>:
>> @@ -443,10 +443,13 @@ int cmd_describe(int argc, const char **argv,
>> const char *prefix)
>> if (pattern)
>> argv_array_pushf(&args, "--refs=refs/tags/%s", pattern);
>> }
>> - while (*argv) {
>> - argv_array_push(&args, *argv);
>> - argv++;
>> - }
>> + if (argc)
>
> "What would this code do to 'describe --all --contains'?" was my
> knee-jerk reaction, but the options are all parsed by this code and
> nothing is delegated to name-rev, so 'if (!argc)' here is truly the
> lack of any revisions to be described, which is good.
Exactly. parse-opts removes all --options from argv as it processes
them, barfs at --unknown-options, so all what remains must be treated
as a commit-ish. And if nothing is left, well, then there was none
given.
>> + while (*argv) {
>> + argv_array_push(&args, *argv);
>> + argv++;
>> + }
>> + else
>> + argv_array_push(&args, "HEAD");
>
> By the way, I usually prefer a fatter 'else' clause when everything
> else is equal, i.e.
>
> if (!argc)
> argv_array_push(&args, "HEAD"); /* default to HEAD */
> else {
> while (*argv) {
> ...
> }
> }
>
> because it is easy to miss tiny else-clause while reading code, but
> it is harder to miss tiny then-clause. In this case, however, the
> while loop can be replaced with argv_array_pushv() these days, so
> perhaps
>
> if (!argc)
> argv_array_push(&args, "HEAD"); /* default to HEAD ... */
> else
> argv_array_pushv(&args, argv); /* or relay what we got */
>
> or something?
Indeed, I didn't notice argv_array_pushv() being added, log tells me
it happened quite recently. I suppose with both branches becoming a
one-liner the order of them can remain what it was in the patch,
this sparing the negation from 'if (!argc)'.
v2 comes in a minute.
Gábor
next prev parent reply other threads:[~2015-08-24 16:14 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 12:13 [PATCH] describe: make '--always' fallback work after '--exact-match' failed SZEDER Gábor
2015-08-20 18:39 ` Junio C Hamano
2015-08-21 11:40 ` SZEDER Gábor
2015-08-21 15:55 ` Junio C Hamano
2015-08-21 14:50 ` [PATCH] describe --contains: default to HEAD when no commit-ish is given SZEDER Gábor
2015-08-21 16:30 ` Junio C Hamano
2015-08-24 16:14 ` SZEDER Gábor [this message]
2015-08-24 16:15 ` [PATCH v2] " SZEDER Gábor
2015-08-24 18:47 ` [PATCH] " 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150824181417.Horde.2DAlveA2ZaXbdApUl8wLOQ8@webmail.informatik.kit.edu \
--to=szeder@ira.uka.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 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 NNTP newsgroup(s).