SYNOPSIS
--------
[synopsis]
-git repo info [--format=(keyvalue|nul) | -z] [--all | <key>...]
-git repo structure [--format=(table|keyvalue|nul) | -z]
+git repo info [--format=(default|keyvalue|nul) | -z] [--all | <key>...]
+git repo structure [--format=(default|table|keyvalue|nul) | -z]
DESCRIPTION
-----------
COMMANDS
--------
-`info [--format=(keyvalue|nul) | -z] [--all | <key>...]`::
+`info [--format=(default|keyvalue|nul) | -z] [--all | <key>...]`::
Retrieve metadata-related information about the current repository. Only
the requested data will be returned based on their keys (see "INFO KEYS"
section below).
The output format can be chosen through the flag `--format`. Two formats are
supported:
+
+`default`:::
+ synonym for `keyvalue`.
+
`keyvalue`:::
output key-value pairs one per line using the `=` character as
the delimiter between the key and the value. Values containing "unusual"
characters are quoted as explained for the configuration variable
- `core.quotePath` (see linkgit:git-config[1]). This is the default.
+ `core.quotePath` (see linkgit:git-config[1]).
`nul`:::
similar to `keyvalue`, but using a newline character as the delimiter
+
`-z` is an alias for `--format=nul`.
-`structure [--format=(table|keyvalue|nul) | -z]`::
+`structure [--format=(default|table|keyvalue|nul) | -z]`::
Retrieve statistics about the current repository structure. The
following kinds of information are reported:
+
The output format can be chosen through the flag `--format`. Three formats are
supported:
+
+`default`:::
+ synonym for `table`.
+
`table`:::
Outputs repository stats in a human-friendly table. This format may
- change and is not intended for machine parsing. This is the default
- format.
+ change and is not intended for machine parsing.
`keyvalue`:::
Each line of output contains a key-value pair for a repository stat.
#include "utf8.h"
static const char *const repo_usage[] = {
- "git repo info [--format=(keyvalue|nul) | -z] [--all | <key>...]",
- "git repo structure [--format=(table|keyvalue|nul) | -z]",
+ "git repo info [--format=(default|keyvalue|nul) | -z] [--all | <key>...]",
+ "git repo structure [--format=(default|table|keyvalue|nul) | -z]",
NULL
};
typedef int get_value_fn(struct repository *repo, struct strbuf *buf);
enum output_format {
+ FORMAT_DEFAULT,
FORMAT_TABLE,
FORMAT_KEYVALUE,
FORMAT_NUL_TERMINATED,
*format = FORMAT_KEYVALUE;
else if (!strcmp(arg, "table"))
*format = FORMAT_TABLE;
+ else if (!strcmp(arg, "default"))
+ *format = FORMAT_DEFAULT;
else
die(_("invalid format '%s'"), arg);
static int cmd_repo_info(int argc, const char **argv, const char *prefix,
struct repository *repo)
{
- enum output_format format = FORMAT_KEYVALUE;
+ enum output_format format = FORMAT_DEFAULT;
int all_keys = 0;
struct option options[] = {
OPT_CALLBACK_F(0, "format", &format, N_("format"),
};
argc = parse_options(argc, argv, prefix, options, repo_usage, 0);
+
+ if (format == FORMAT_DEFAULT)
+ format = FORMAT_KEYVALUE;
+
if (format != FORMAT_KEYVALUE && format != FORMAT_NUL_TERMINATED)
die(_("unsupported output format"));
struct stats_table table = {
.rows = STRING_LIST_INIT_DUP,
};
- enum output_format format = FORMAT_TABLE;
+ enum output_format format = FORMAT_DEFAULT;
struct repo_structure stats = { 0 };
struct rev_info revs;
int show_progress = -1;
if (argc)
usage(_("too many arguments"));
+ if (format == FORMAT_DEFAULT)
+ format = FORMAT_TABLE;
+
repo_init_revisions(repo, &revs, prefix);
if (show_progress < 0)
test_cmp expect actual
'
+test_expect_success '--format=default is a synonym for --format=keyvalue' '
+ git repo info --all --format=keyvalue >expect &&
+ git repo info --all --format=default >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success '--format=default resets the format' '
+ git repo info --all >expect &&
+ git repo info --all --format=nul --format=default >actual &&
+ test_cmp expect actual
+'
+
test_done
)
'
+test_expect_success '--format=default is a synonym for --format=table' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ git repo structure --format=table >expect &&
+ git repo structure --format=default >actual &&
+ test_cmp expect actual
+ )
+'
+
+test_expect_success '--format=default resets the format' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ git repo structure >expect &&
+ git repo structure --format=nul --format=default >actual &&
+ test_cmp expect actual
+ )
+'
+
test_done