From: Derrick Stolee <stolee@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>,
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
Cc: Git List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>,
Derrick Stolee <derrickstolee@github.com>,
Derrick Stolee <dstolee@microsoft.com>
Subject: Re: [PATCH] for-each-repo: do nothing on empty config
Date: Tue, 5 Jan 2021 21:20:22 -0500 [thread overview]
Message-ID: <db7bf751-7541-59b9-a3a0-ec07e28eb9de@gmail.com> (raw)
In-Reply-To: <CAPig+cQ4B6s7RzGH=1QhSc_2kKy-Mbp9fyK4VoTntdAfCT4d9A@mail.gmail.com>
On 1/5/2021 12:55 PM, Eric Sunshine wrote:
> On Tue, Jan 5, 2021 at 9:44 AM Derrick Stolee via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
>> 'git for-each-repo --config=X' should return success without calling any
>> subcommands when the config key 'X' has no value. The current
>> implementation instead segfaults.
>> [...]
>> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
>> ---
>> diff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c
>> @@ -51,6 +51,9 @@ int cmd_for_each_repo(int argc, const char **argv, const char *prefix)
>> values = repo_config_get_value_multi(the_repository,
>> config_key);
>> + if (!values)
>> + return result;
>
> Probably not worth a re-roll, but the above has higher cognitive load than:
>
> if (!value)
> return 0;
>
> which indicates clearly that the command succeeded, whereas `return
> result` makes the reader scan all the code above the conditional to
> figure out what values `result` could possibly hold.
True. Looking at this again, it might be better to just update the
loop to be
for (i = 0; values && i < values->nr; i++) {
which would run the loop zero times when there are zero results.
>> diff --git a/t/t0068-for-each-repo.sh b/t/t0068-for-each-repo.sh
>> @@ -27,4 +27,8 @@ test_expect_success 'run based on configured value' '
>> +test_expect_success 'do nothing on empty config' '
>> + git for-each-repo --config=bogus.config -- these args would fail
>> +'
>
> The `these args would fail` arguments add mystery to the test,
> prompting the reader to wonder what exactly is going on: "Fail how?",
> "Is it supposed to fail?". It might be less confusing to use something
> more direct like `nonexistent` or `does not exist`.
I guess the point is that if we actually did try running a subcommand
on a repo (for instance, accidentally running it on the current repo)
then the command would fail when running "git these args would fail".
To me, "nonexistent" or "does not exist" doesn't adequately describe
this (hypothetical) situation.
Perhaps "fail-subcommand" might be better?
-Stolee
next prev parent reply other threads:[~2021-01-06 2:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-05 14:42 [PATCH] for-each-repo: do nothing on empty config Derrick Stolee via GitGitGadget
2021-01-05 17:55 ` Eric Sunshine
2021-01-06 2:20 ` Derrick Stolee [this message]
2021-01-06 4:20 ` Eric Sunshine
2021-01-06 11:54 ` Derrick Stolee
2021-01-06 18:18 ` Eric Sunshine
2021-01-06 20:50 ` Junio C Hamano
2021-01-07 4:29 ` Eric Sunshine
2021-01-06 8:05 ` Junio C Hamano
2021-01-06 11:41 ` Derrick Stolee
2021-01-06 20:41 ` Junio C Hamano
2021-01-06 21:40 ` Junio C Hamano
2021-01-07 2:00 ` Derrick Stolee
2021-01-06 19:19 ` [PATCH v2] " Derrick Stolee via GitGitGadget
2021-01-08 2:30 ` [PATCH v3] " Derrick Stolee via GitGitGadget
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=db7bf751-7541-59b9-a3a0-ec07e28eb9de@gmail.com \
--to=stolee@gmail.com \
--cc=derrickstolee@github.com \
--cc=dstolee@microsoft.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.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).