[PATCH v3 0/2] repo: add --all to git-repo-info
- From
Lucas Seiki Oshiro <lucasseikioshiro@gmail.com>
- Date
- Oct 26, 2025, 22:52 UTC
- 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 <key> 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 <key> duplicates <key>' '
-+ git repo info $REPO_INFO_KEYS object.format >expect &&
-+ git repo info --all object.format >actual &&
++test_expect_success 'git repo info --all <key> aborts' '
++ echo "fatal: --all and <key> 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 <invalid key> 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_doneLucas 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)