Lucas Seiki Oshiro <lucasseikioshiro@xxxxxxxxx> writes: > Currently, `git rev-parse` covers a wide range of functionality not > directly related to parsing revisions, as its name says. Over time, > many features like parsing datestrings, options, paths, and others > were added to it because there wasn't a more appropriated command > to place them. > > Create a new Git command called `repo`. `git repo` will be the main > command for obtaining the information about a repository (such as > metadata and metrics), returning them in a machine readable format > following the syntax "field<LF>value<NUL>". I don't think we should enforce a syntax on the command level, but rather we should enforce it on the sub-command level. This way any new command, let's say `git repo stats` can provide a more suitable output. Which could be a more human readable format mimicking 'git-sizer'. By not enforcing on a command level, we leave it extendable. > > Also declare a subcommand for `repo` called `info`. `git repo info` > will bring the functionality of retrieving repository-related > information currently returned by `rev-parse`. > > Also add entries for this new command in: > > - the build files (Makefile, meson.build, Documentation/meson.build) > - builtin.h > - git.c > - .gitignore > - command-list.txt > - Documentation > Nit: While it is good to state what this patch does, this list is similar to the diffstat below. Is there additional information it is providing? Perhaps: We add the required tests, documentation and build changes to enable usage of this subcommand. would suffice? > Helped-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > Helped-by: Junio C Hamano <gitster@xxxxxxxxx> > Helped-by: Justin Tobler <jltobler@xxxxxxxxx> > Mentored-by: Karthik Nayak <karthik.188@xxxxxxxxx> > Mentored-by: Patrick Steinhardt <ps@xxxxxx> > Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@xxxxxxxxx> > --- > .gitignore | 1 + > Documentation/git-repo.adoc | 54 +++++++++++++++++++++++++++++++++++++ > Documentation/meson.build | 1 + > Makefile | 1 + > builtin.h | 1 + > builtin/repo.c | 38 ++++++++++++++++++++++++++ > command-list.txt | 1 + > git.c | 1 + > meson.build | 1 + > 9 files changed, 99 insertions(+) > create mode 100644 Documentation/git-repo.adoc > create mode 100644 builtin/repo.c > > diff --git a/.gitignore b/.gitignore > index 04c444404e..1803023427 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -139,6 +139,7 @@ > /git-repack > /git-replace > /git-replay > +/git-repo > /git-request-pull > /git-rerere > /git-reset > diff --git a/Documentation/git-repo.adoc b/Documentation/git-repo.adoc > new file mode 100644 > index 0000000000..6f8fe3f6ea > --- /dev/null > +++ b/Documentation/git-repo.adoc > @@ -0,0 +1,54 @@ > +git-repo(1) > +=========== > + > +NAME > +---- > +git-repo - Retrieve information about a repository > + > +SYNOPSIS > +-------- > +[synopsis] > +git repo info [<key>...] > + > +DESCRIPTION > +----------- > +Retrieve information about the current repository in a machine-readable format. > + I would keep the description of the command short, to: This command retrieve repository level information. The `machine-readable` format is a implementation detail of the 'git-repo info' subcommand. > +`git repo` will be the primary tool to query repository-specific information, > +such as metadata that currently can also be done by calling `git rev-parse` (see > +linkgit:git-rev-parse[1]). `git repo` doesn't query information unrelated to the > +current repository or that is already retrieved by a specialized command, for > +example, `git config` (see linkgit:git-config[1]) or `git var` (see > +linkgit:git-var[1]). > + > +This command returns the retrieved data following a null-terminated format with > +this syntax: > ++ > +---------------- > +key1<LF>value1<NUL> > +key2<LF>value2<NUL> > +... > +---------------- > Shouldn't this whole section be below the 'info' subcommand? > ++ > +THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE. > + > +COMMANDS > +-------- > +info [<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). > + > +INFO KEYS > +--------- > + > +The set of data that `git repo` can return is grouped into the following > +categories: > + > +SEE ALSO > +-------- > +linkgit:git-rev-parse[1] > + > +GIT > +--- > +Part of the linkgit:git[1] suite [snip]
Attachment:
signature.asc
Description: PGP signature