On Tue, Jul 15, 2025 at 02:15:07PM -0500, Justin Tobler wrote: > On 25/07/14 08:52PM, Lucas Seiki Oshiro wrote: > > diff --git a/builtin/repo.c b/builtin/repo.c > > index a1787a3cc5..dcda0d6d61 100644 > > --- a/builtin/repo.c > > +++ b/builtin/repo.c > > @@ -1,11 +1,95 @@ > > #include "builtin.h" > > #include "parse-options.h" > > +#include "strbuf.h" > > +#include "refs.h" > > > > -static int repo_info(int argc UNUSED, > > - const char **argv UNUSED, > > +typedef void add_field_fn(struct strbuf *buf, struct repository *repo); > > + > > +struct field { > > + const char *key; > > + add_field_fn *add_field_callback; > > +}; > > + > > +static void add_string(struct strbuf *buf, > > + const char *key, const char *value) > > +{ > > + strbuf_addf(buf, "%s\n%s%c", key, value, '\0'); > > +} > > Any reason we add each key/value pair to a buffer instead of just > printing it? > > Also, as mentioned in a comment for the previous patch, maybe we should > support printing two output modes. For the default output, maybe a > simple `<key>=<value>\n` where the any value containing special > characters is quoted via `quote_c_style()`. > > A null-terminated output, such as the one proposed in this patch, could > be enabled via a `-z` flag similar to how its done in other commands. Agreed in general, but instead of using `-z` I wonder whether it would make sense to use something like `--format=key-value` and `--format=nul` instead. This gives us more room to introduce additional formats in the future, like for example the JSON format that was scrapped for now. Patrick