git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com>
Cc: git@vger.kernel.org,  ps@pks.im,  karthik.188@gmail.com
Subject: Re: [GSoC RFC PATCH 0/5] repo-info: add new command for retrieving repository info
Date: Tue, 10 Jun 2025 09:40:41 -0700	[thread overview]
Message-ID: <xmqqikl3mtx2.fsf@gitster.g> (raw)
In-Reply-To: <20250610152117.14826-1-lucasseikioshiro@gmail.com> (Lucas Seiki Oshiro's message of "Tue, 10 Jun 2025 12:21:12 -0300")

Lucas Seiki Oshiro <lucasseikioshiro@gmail.com> writes:

> $ git repo-info
> {
>   "objects": {
>     "format": "sha1"
>   },
>   "references": {
>     "format": "files"
>   },
>   "path": {
>     "git-dir": "/git/dir"
>     "git-commom-dir": "/git/common-dir",
>     "toplevel": "/git/toplevel",
>     "superproject-working-tree": "/super/working/tree",
>   }
>   "layout": {
>     "bare": false,
>     "shallow": false
>   }
> }
> ~~~

OK, that's understandable, other than that handling of trailing
commas looks somewhat inconsistent.

> Or in a plaintext format, like this:
>
> ~~~
> $ git repo-info --format=plaintext
> sha1
> files
> /git/dir
> /git/common-dir
> /git/toplevel
> /super/working/tree
> false
> false
> ~~~

This one is a bit questionable.

Is it safe to assume that we will never have to deal with payload
controllable by the end-user that can have arbitrary byte values?
It would be uncommon but possible for LF to be in one of these
pathnames, breaking one-line-per-item assumption you seem to be
making.  If one-line-per-item can be assumed, you can certainly
claim that this format is easy for consumers to handle, but the fact
is that this format is cumbersome to use safely if we have to deal
with end-user controllable arbitrary byte sequences, and if the set
of info pieces the repo-info needs to deal with changes over time.

> It will also allow the user to get only the desired fields, like this:
>
> ~~~
> $ git repo-info --format=plaintext objects.format references.format
> sha1
> files
> ~~~

If the user asked for only one item, this is probably OK, but for
more than one items, the same comment applies as above (except that
the number of and order of info pieces are known in this case).

> or:
>
> ~~~
> $ git repo-info objects.format references.format
> {
>   "objects": {
>     "format": "sha1"
>   },
>   "references": {
>     "format": "files"
>   }
> }
> ~~~

This one is OK.

> - on deciding if the JSON and linewise plaintext formats are the really the best,
>   or if I should consider others (e.g. gitconfig syntax, NUL-terminated, etc)

"git config list" and "git config get" may be weaker in handling
arbitrary bytes than we would wish them to be.  As much as I loath
JSON, the format is widely recognised and supported, so as the
initial cut, it may be sufficient to nail down the schema first and
then worry about emitting the same information in other formats
later.



  parent reply	other threads:[~2025-06-10 16:40 UTC|newest]

Thread overview: 226+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 15:21 [GSoC RFC PATCH 0/5] repo-info: add new command for retrieving repository info Lucas Seiki Oshiro
2025-06-10 15:21 ` [GSoC RFC PATCH 1/5] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-06-11  8:59   ` Karthik Nayak
2025-06-10 15:21 ` [GSoC RFC PATCH 2/5] repo-info: add the --format flag Lucas Seiki Oshiro
2025-06-11  9:30   ` Karthik Nayak
2025-06-12 17:56     ` Lucas Seiki Oshiro
2025-06-13  7:31       ` Karthik Nayak
2025-06-10 15:21 ` [GSoC RFC PATCH 3/5] repo-info: add the field references.format Lucas Seiki Oshiro
2025-06-11 12:59   ` Karthik Nayak
2025-06-12 15:01     ` Junio C Hamano
2025-06-10 15:21 ` [GSoC RFC PATCH 4/5] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-06-11 13:13   ` Karthik Nayak
2025-06-12 19:39     ` Lucas Seiki Oshiro
2025-06-12 19:53       ` Junio C Hamano
2025-06-10 15:21 ` [GSoC RFC PATCH 5/5] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-06-10 16:39 ` [GSoC RFC PATCH 0/5] repo-info: add new command for retrieving repository info Kristoffer Haugsbakk
2025-06-10 16:40 ` Junio C Hamano [this message]
2025-06-12 20:25   ` Lucas Seiki Oshiro
2025-06-12 21:01     ` Junio C Hamano
2025-06-16 22:19       ` Lucas Seiki Oshiro
2025-06-16 22:40         ` Junio C Hamano
2025-06-19  1:44           ` Lucas Seiki Oshiro
2025-06-11 13:17 ` Karthik Nayak
2025-06-19 22:57 ` [GSoC RFC PATCH v2 0/7] " Lucas Seiki Oshiro
2025-06-19 22:57   ` [GSoC RFC PATCH v2 1/7] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-06-20  7:36     ` Karthik Nayak
2025-06-20 23:55       ` Junio C Hamano
2025-06-23  9:19         ` Karthik Nayak
2025-06-23 19:04       ` Lucas Seiki Oshiro
2025-06-20  7:56     ` Karthik Nayak
2025-06-24 14:03     ` Phillip Wood
2025-07-03 11:31     ` Patrick Steinhardt
2025-07-04 21:40       ` Lucas Seiki Oshiro
2025-07-07  6:01         ` Patrick Steinhardt
2025-07-09 20:05           ` Justin Tobler
2025-06-19 22:57   ` [GSoC RFC PATCH v2 2/7] repo-info: add the --format flag Lucas Seiki Oshiro
2025-06-20  8:06     ` Karthik Nayak
2025-06-20 21:31     ` Junio C Hamano
2025-07-03 11:31     ` Patrick Steinhardt
2025-06-19 22:57   ` [GSoC RFC PATCH v2 3/7] repo-info: add plaintext as an output format Lucas Seiki Oshiro
2025-06-20 21:37     ` Junio C Hamano
2025-07-03 11:32     ` Patrick Steinhardt
2025-06-19 22:57   ` [GSoC RFC PATCH v2 4/7] repo-info: add the --allow-empty flag Lucas Seiki Oshiro
2025-06-20  9:54     ` Karthik Nayak
2025-06-23  2:39       ` Lucas Seiki Oshiro
2025-06-20 21:39     ` Junio C Hamano
2025-06-23  9:26       ` Karthik Nayak
2025-06-23 20:28         ` Lucas Seiki Oshiro
2025-06-19 22:57   ` [GSoC RFC PATCH v2 5/7] repo-info: add the field references.format Lucas Seiki Oshiro
2025-06-20 22:26     ` Junio C Hamano
2025-06-24 14:03     ` Phillip Wood
2025-06-24 15:25       ` Junio C Hamano
2025-06-25  8:40         ` Phillip Wood
2025-07-03 11:32     ` Patrick Steinhardt
2025-07-04 21:11       ` Lucas Seiki Oshiro
2025-06-19 22:57   ` [GSoC RFC PATCH v2 6/7] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-07-03 11:32     ` Patrick Steinhardt
2025-07-03 14:14       ` Lucas Seiki Oshiro
2025-07-04  8:32         ` Phillip Wood
2025-06-19 22:57   ` [GSoC RFC PATCH v2 7/7] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-06-23 13:42   ` [GSoC RFC PATCH v2 0/7] repo-info: add new command for retrieving repository info Phillip Wood
2025-06-23 18:49     ` Lucas Seiki Oshiro
2025-06-24 13:03       ` Phillip Wood
2025-06-24 13:43         ` Junio C Hamano
2025-07-01 22:18         ` Lucas Seiki Oshiro
2025-07-02  9:10           ` phillip.wood123
2025-07-06 23:19 ` [GSoC RFC PATCH v3 0/5] " Lucas Seiki Oshiro
2025-07-06 23:19   ` [GSoC RFC PATCH v3 1/5] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-07-06 23:19   ` [GSoC RFC PATCH v3 2/5] repo-info: add the --format flag Lucas Seiki Oshiro
2025-07-06 23:19   ` [GSoC RFC PATCH v3 3/5] repo-info: add the field references.format Lucas Seiki Oshiro
2025-07-06 23:19   ` [GSoC RFC PATCH v3 4/5] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-07-06 23:19   ` [GSoC RFC PATCH v3 5/5] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-07-08 10:11   ` [GSoC RFC PATCH v3 0/5] repo-info: add new command for retrieving repository info Phillip Wood
2025-07-08 19:27     ` Lucas Seiki Oshiro
2025-07-10 13:15       ` Phillip Wood
2025-07-11 17:13   ` Lucas Seiki Oshiro
2025-07-11 17:37     ` Justin Tobler
2025-07-14 23:52 ` [GSoC RFC PATCH v4 0/4] repo: " Lucas Seiki Oshiro
2025-07-14 23:52   ` [GSoC RFC PATCH v4 1/4] repo: declare the repo command Lucas Seiki Oshiro
2025-07-15 11:52     ` Karthik Nayak
2025-07-15 11:59     ` Patrick Steinhardt
2025-07-15 18:38       ` Justin Tobler
2025-07-20 19:51       ` Lucas Seiki Oshiro
2025-07-15 18:19     ` Justin Tobler
2025-07-14 23:52   ` [GSoC RFC PATCH v4 2/4] repo: add the field references.format Lucas Seiki Oshiro
2025-07-15 11:59     ` Patrick Steinhardt
2025-07-18 19:13       ` Lucas Seiki Oshiro
2025-07-15 12:23     ` Karthik Nayak
2025-07-15 19:15     ` Justin Tobler
2025-07-16  5:38       ` Patrick Steinhardt
2025-07-16 14:04         ` Justin Tobler
2025-07-17 13:03           ` Patrick Steinhardt
2025-07-17 16:06             ` Justin Tobler
2025-07-18 20:26               ` Lucas Seiki Oshiro
2025-07-21 14:41                 ` Justin Tobler
2025-07-14 23:52   ` [GSoC RFC PATCH v4 3/4] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-14 23:52   ` [GSoC RFC PATCH v4 4/4] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-15 10:34   ` [GSoC RFC PATCH v4 0/4] repo: add new command for retrieving repository info Oswald Buddenhagen
2025-07-15 11:58     ` Patrick Steinhardt
2025-07-15 12:20       ` Oswald Buddenhagen
2025-07-15 19:36       ` Justin Tobler
2025-07-15 16:49     ` Junio C Hamano
2025-07-17 10:25       ` Oswald Buddenhagen
2025-07-17 10:42         ` Patrick Steinhardt
2025-07-16 20:20   ` Junio C Hamano
2025-07-16 20:33     ` Junio C Hamano
2025-07-21 22:05     ` Lucas Seiki Oshiro
2025-07-22  0:28 ` [GSoC PATCH v5 0/5] " Lucas Seiki Oshiro
2025-07-22  0:28   ` [GSoC PATCH v5 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-07-22  9:03     ` Karthik Nayak
2025-07-22 15:21       ` Junio C Hamano
2025-07-23 16:28         ` Lucas Seiki Oshiro
2025-07-23 17:48           ` Junio C Hamano
2025-07-24  6:22         ` Patrick Steinhardt
2025-07-24 16:06           ` Junio C Hamano
2025-07-25  5:10             ` Patrick Steinhardt
2025-07-26 21:54           ` Lucas Seiki Oshiro
2025-07-28 17:56             ` Junio C Hamano
2025-07-23 15:49       ` Lucas Seiki Oshiro
2025-07-23 20:03     ` Jean-Noël AVILA
2025-07-22  0:28   ` [GSoC PATCH v5 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-07-22  9:16     ` Karthik Nayak
2025-07-22 19:25     ` Justin Tobler
2025-07-23 14:53       ` Phillip Wood
2025-07-23 17:44         ` Lucas Seiki Oshiro
2025-07-23 18:26       ` Lucas Seiki Oshiro
2025-07-24  6:22     ` Patrick Steinhardt
2025-07-22  0:28   ` [GSoC PATCH v5 3/5] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-22  0:28   ` [GSoC PATCH v5 4/5] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-22  0:28   ` [GSoC PATCH v5 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-07-22  9:26     ` Karthik Nayak
2025-07-24  6:22     ` Patrick Steinhardt
2025-07-27 17:51 ` [GSoC PATCH v5 0/5] repo: add new command for retrieving repository info Lucas Seiki Oshiro
2025-07-27 17:51   ` [GSoC PATCH v5 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-07-27 20:20     ` Eric Sunshine
2025-07-27 17:51   ` [GSoC PATCH v5 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-07-27 21:16     ` Eric Sunshine
2025-07-31 19:39       ` Lucas Seiki Oshiro
2025-07-29  9:35     ` Patrick Steinhardt
2025-07-31 19:49       ` Lucas Seiki Oshiro
2025-07-27 17:51   ` [GSoC PATCH v5 3/5] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-27 17:51   ` [GSoC PATCH v5 4/5] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-27 21:45     ` Eric Sunshine
2025-07-27 17:51   ` [GSoC PATCH v5 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-07-27 22:02     ` Eric Sunshine
2025-07-29  0:15       ` Ben Knoble
2025-07-29  0:27         ` Eric Sunshine
2025-07-29  0:38           ` Ben Knoble
2025-07-29  0:39           ` Eric Sunshine
2025-07-31 23:01       ` Lucas Seiki Oshiro
2025-07-31 23:15     ` Lucas Seiki Oshiro
2025-07-27 20:11   ` [GSoC PATCH v5 0/5] repo: add new command for retrieving repository info Eric Sunshine
2025-07-29  9:35     ` Patrick Steinhardt
2025-07-30 15:26     ` Lucas Seiki Oshiro
2025-08-01 13:11 ` [GSoC PATCH v7 " Lucas Seiki Oshiro
2025-08-01 13:11   ` [GSoC PATCH v7 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-01 13:11   ` [GSoC PATCH v7 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-01 20:59     ` Eric Sunshine
2025-08-03 21:47       ` Lucas Seiki Oshiro
2025-08-01 13:11   ` [GSoC PATCH v7 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-01 21:21     ` Eric Sunshine
2025-08-03 22:54       ` Lucas Seiki Oshiro
2025-08-03 23:06         ` Eric Sunshine
2025-08-05 12:50     ` Patrick Steinhardt
2025-08-01 13:11   ` [GSoC PATCH v7 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-05 12:50     ` Patrick Steinhardt
2025-08-01 13:11   ` [GSoC PATCH v7 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-01 19:25     ` Junio C Hamano
2025-08-01 20:27     ` Jean-Noël AVILA
2025-08-01 21:50     ` Eric Sunshine
2025-08-05 12:50     ` Patrick Steinhardt
2025-08-05 12:50   ` [GSoC PATCH v7 0/5] repo: add new command for retrieving repository info Patrick Steinhardt
2025-08-06 19:55 ` [GSoC PATCH v8 " Lucas Seiki Oshiro
2025-08-06 19:55   ` [GSoC PATCH v8 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-06 19:55   ` [GSoC PATCH v8 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-07  7:43     ` Karthik Nayak
2025-08-06 19:55   ` [GSoC PATCH v8 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-07  5:20     ` Patrick Steinhardt
2025-08-06 19:55   ` [GSoC PATCH v8 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-06 19:55   ` [GSoC PATCH v8 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-07  5:20     ` Patrick Steinhardt
2025-08-07 15:44       ` Junio C Hamano
2025-08-06 22:38   ` [GSoC PATCH v8 0/5] repo: add new command for retrieving repository info Junio C Hamano
2025-08-07  7:48   ` Karthik Nayak
2025-08-07 15:02 ` [GSoC PATCH v9 " Lucas Seiki Oshiro
2025-08-07 15:02   ` [GSoC PATCH v9 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-07 15:02   ` [GSoC PATCH v9 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-11  5:12     ` Eric Sunshine
2025-08-11 14:41     ` Phillip Wood
2025-08-11 15:44       ` Junio C Hamano
2025-08-13 21:18       ` Lucas Seiki Oshiro
2025-08-13 21:46         ` Eric Sunshine
2025-08-13 22:24           ` Lucas Seiki Oshiro
2025-08-14 13:58           ` Phillip Wood
2025-08-07 15:02   ` [GSoC PATCH v9 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-11  5:21     ` Eric Sunshine
2025-08-14 18:22       ` Lucas Seiki Oshiro
2025-08-14 18:32         ` Eric Sunshine
2025-08-14 18:51           ` Junio C Hamano
2025-08-14 22:05             ` Eric Sunshine
2025-08-15  1:20               ` Junio C Hamano
2025-08-14 22:18             ` Lucas Seiki Oshiro
2025-08-14 23:41               ` Eric Sunshine
2025-08-07 15:02   ` [GSoC PATCH v9 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-07 15:02   ` [GSoC PATCH v9 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-11  5:44     ` Eric Sunshine
2025-08-08  5:45   ` [GSoC PATCH v9 0/5] repo: add new command for retrieving repository info Patrick Steinhardt
2025-08-08 15:02     ` Junio C Hamano
2025-08-08  9:20   ` Karthik Nayak
2025-08-15 13:55 ` [GSoC PATCH v10 0/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-15 13:55   ` [GSoC PATCH v10 1/5] " Lucas Seiki Oshiro
2025-08-15 13:55   ` [GSoC PATCH v10 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-15 18:40     ` Junio C Hamano
2025-08-15 19:12       ` Lucas Seiki Oshiro
2025-08-15 13:55   ` [GSoC PATCH v10 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-15 13:55   ` [GSoC PATCH v10 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-15 19:36     ` Junio C Hamano
2025-08-15 13:55   ` [GSoC PATCH v10 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-15 19:23     ` Junio C Hamano
2025-08-16 22:45 ` [GSoC PATCH v11 0/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-16 22:45   ` [GSoC PATCH v11 1/5] " Lucas Seiki Oshiro
2025-08-16 22:46   ` [GSoC PATCH v11 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-16 22:46   ` [GSoC PATCH v11 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-16 22:46   ` [GSoC PATCH v11 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-16 22:46   ` [GSoC PATCH v11 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-17 16:21   ` [GSoC PATCH v11 0/5] repo: declare the repo command Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqikl3mtx2.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=karthik.188@gmail.com \
    --cc=lucasseikioshiro@gmail.com \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).