Thread (10 messages) flat view 10 messages, 4 authors, 2021-01-08

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

From: Eric Sunshine <hidden>
Date: 2021-01-05 17:55:58

On Tue, Jan 5, 2021 at 9:44 AM Derrick Stolee via GitGitGadget
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
'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 <redacted>
---
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.
quoted hunk ↗ jump to hunk
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`.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help