git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] for-each-repo: do nothing on empty config

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jan 5, 2021, 17:55 UTC
Message-ID
<CAPig+cQ4B6s7RzGH=1QhSc_2kKy-Mbp9fyK4VoTntdAfCT4d9A@mail.gmail.com>
In-Reply-To
<pull.834.git.1609857770445.gitgitgadget@gmail.com>

On Tue, Jan 5, 2021 at 9:44 AM Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com> wrote:

Show 12 quoted lines
> '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.

Show 5 quoted lines
> 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`.

Previous: Derrick Stolee via GitGitGadgetNext: Derrick Stolee
Message 2 of 15 in “for-each-repo: do nothing on empty config”
  1. for-each-repo: do nothing on empty configDerrick Stolee via GitGitGadget, Jan 5, 2021
  2. Eric SunshineJan 5, 2021
  3. Derrick StoleeJan 6, 2021
  4. Eric SunshineJan 6, 2021
  5. Derrick StoleeJan 6, 2021
  6. Eric SunshineJan 6, 2021
  7. Junio C HamanoJan 6, 2021
  8. Eric SunshineJan 7, 2021
  9. Junio C HamanoJan 6, 2021
  10. Derrick StoleeJan 6, 2021
  11. Junio C HamanoJan 6, 2021
  12. Junio C HamanoJan 6, 2021
  13. Derrick StoleeJan 7, 2021
  14. for-each-repo: do nothing on empty configDerrick Stolee via GitGitGadget, Jan 6, 2021
  15. for-each-repo: do nothing on empty configDerrick Stolee via GitGitGadget, Jan 8, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.