From: Lucas Seiki Oshiro Date: Sun, 26 Oct 2025 22:52:06 GMT Subject: [PATCH v3 0/2] repo: add --all to git-repo-info Message-ID: <20251026225409.46647-1-lucasseikioshiro@gmail.com> In-Reply-To: <20250915223618.13093-1-lucasseikioshiro@gmail.com> Hi! This is the third version of the patchset that adds a new flag --all to git-repo-info for requesting the values of all the available flags. Now, in this version, git-repo-info will abort if it is called with --all and some key. Here's the range-diff against v2: 1: 5f72f07589 = 1: 0db9aad2bc repo: factor out field printing to dedicated function 2: b8158bb7b8 ! 2: b6ecdc2c2f repo: add --all to git-repo-info @@ Documentation/git-repo.adoc: THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHAN The values are returned in the same order in which their respective keys were -requested. +requested. The `--all` flag requests the values for all the available keys. -+Keys requested after `--all` will be duplicated. + The output format can be chosen through the flag `--format`. Two formats are supported: @@ builtin/repo.c: static int print_fields(int argc, const char **argv, + + for (unsigned long i = 0; i < ARRAY_SIZE(repo_info_fields); i++) { + struct field field = repo_info_fields[i]; -+ get_value_fn *get_value = field.get_value; -+ const char *key = field.key; + + strbuf_reset(&valbuf); -+ get_value(repo, &valbuf); -+ print_field(format, key, &valbuf, "buf); ++ field.get_value(repo, &valbuf); ++ print_field(format, field.key, &valbuf, "buf); + } + + strbuf_release(&valbuf); @@ builtin/repo.c: static int repo_info(int argc, const char **argv, const char *pr argc = parse_options(argc, argv, prefix, options, repo_usage, 0); -+ if (all_keys) ++ if (all_keys) { ++ if (argc) ++ die(_("--all and cannot be used together")); ++ + print_all_fields(repo, format); ++ return 0; ++ } + return print_fields(argc, argv, repo, format); } @@ t/t1900-repo.sh: test_expect_success 'git repo info uses the last requested form + test_cmp expect actual +' + -+test_expect_success 'git repo info --all duplicates ' ' -+ git repo info $REPO_INFO_KEYS object.format >expect && -+ git repo info --all object.format >actual && ++test_expect_success 'git repo info --all aborts' ' ++ echo "fatal: --all and cannot be used together" >expect && ++ test_must_fail git repo info --all object.format 2>actual && + test_cmp expect actual +' -+ -+test_expect_success 'git repo info --all warns about invalid key' ' -+ git repo info $REPO_INFO_KEYS >expect && -+ echo "error: key ${SQ}no.key${SQ} not found" >expect_err && -+ test_must_fail git repo info --all no.key >actual 2>actual_err && -+ test_cmp expect actual && -+ test_cmp expect_err actual_err -+' + test_done Lucas Seiki Oshiro (2): repo: factor out field printing to dedicated function repo: add --all to git-repo-info Documentation/git-repo.adoc | 6 ++-- builtin/repo.c | 63 ++++++++++++++++++++++++++++--------- t/t1900-repo.sh | 21 +++++++++++++ 3 files changed, 72 insertions(+), 18 deletions(-) -- 2.50.1 (Apple Git-155)