Re: [GSoC RFC PATCH v2 1/7] repo-info: declare the repo-info command

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Lucas

On 19/06/2025 23:57, Lucas Seiki Oshiro wrote:
Create a new Git subcommand called repo-info. `git repo-info` will query
metadata from the current repository and outputs it as JSON or plaintext.

Also add entries for this new command in:

- the build files (Makefile and meson.build)
- builtin.h
- git.c
- .gitignore

In option parsing, use PARSE_OPT_KEEP_UNKNOWN_OPT to allow the users
specify after the flags the information that they want to retrieve.

That should not necessary, the option parser will keep any arguments that do not begin with "-" without this flag. Using PARSE_OPT_KEEP_UNKNOWN_OPT is intended for accepting options that are passed to another command and prevents the option parser from complaining about unknown options which is not what we want here.

Best Wishes

Phillip


Mentored-by: Karthik Nayak <karthik.188@xxxxxxxxx>
Mentored-by Patrick Steinhardt <ps@xxxxxx>
Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@xxxxxxxxx>
---
  .gitignore          |  1 +
  Makefile            |  1 +
  builtin.h           |  1 +
  builtin/repo-info.c | 21 +++++++++++++++++++++
  git.c               |  1 +
  meson.build         |  1 +
  6 files changed, 26 insertions(+)
  create mode 100644 builtin/repo-info.c

diff --git a/.gitignore b/.gitignore
index 04c444404e..b2f3fb0047 100644
--- a/.gitignore
+++ b/.gitignore
@@ -139,6 +139,7 @@
  /git-repack
  /git-replace
  /git-replay
+/git-repo-info
  /git-request-pull
  /git-rerere
  /git-reset
diff --git a/Makefile b/Makefile
index 70d1543b6b..50e3a3cbcc 100644
--- a/Makefile
+++ b/Makefile
@@ -1308,6 +1308,7 @@ BUILTIN_OBJS += builtin/remote.o
  BUILTIN_OBJS += builtin/repack.o
  BUILTIN_OBJS += builtin/replace.o
  BUILTIN_OBJS += builtin/replay.o
+BUILTIN_OBJS += builtin/repo-info.o
  BUILTIN_OBJS += builtin/rerere.o
  BUILTIN_OBJS += builtin/reset.o
  BUILTIN_OBJS += builtin/rev-list.o
diff --git a/builtin.h b/builtin.h
index bff13e3069..cc6bc95962 100644
--- a/builtin.h
+++ b/builtin.h
@@ -216,6 +216,7 @@ int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repos
  int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo);
  int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo);
  int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo);
+int cmd_repo_info(int argc, const char **argv, const char *prefix, struct repository *repo);
  int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo);
  int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo);
  int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo);
diff --git a/builtin/repo-info.c b/builtin/repo-info.c
new file mode 100644
index 0000000000..a5c43e253f
--- /dev/null
+++ b/builtin/repo-info.c
@@ -0,0 +1,21 @@
+#include "builtin.h"
+#include "parse-options.h"
+
+int cmd_repo_info(int argc,
+		  const char **argv,
+		  const char *prefix,
+		  struct repository *repo UNUSED)
+{
+	const char *const repo_info_usage[] = {
+		"git repo-info",
+		NULL
+	};
+	struct option options[] = {
+		OPT_END()
+	};
+
+	argc = parse_options(argc, argv, prefix, options, repo_info_usage,
+			     PARSE_OPT_KEEP_UNKNOWN_OPT);
+
+	return 0;
+}
diff --git a/git.c b/git.c
index 07a5fe39fb..27a2b3569b 100644
--- a/git.c
+++ b/git.c
@@ -611,6 +611,7 @@ static struct cmd_struct commands[] = {
  	{ "repack", cmd_repack, RUN_SETUP },
  	{ "replace", cmd_replace, RUN_SETUP },
  	{ "replay", cmd_replay, RUN_SETUP },
+	{ "repo-info", cmd_repo_info, RUN_SETUP },
  	{ "rerere", cmd_rerere, RUN_SETUP },
  	{ "reset", cmd_reset, RUN_SETUP },
  	{ "restore", cmd_restore, RUN_SETUP | NEED_WORK_TREE },
diff --git a/meson.build b/meson.build
index 7fea4a34d6..06f2f647ba 100644
--- a/meson.build
+++ b/meson.build
@@ -645,6 +645,7 @@ builtin_sources = [
    'builtin/repack.c',
    'builtin/replace.c',
    'builtin/replay.c',
+  'builtin/repo-info.c',
    'builtin/rerere.c',
    'builtin/reset.c',
    'builtin/rev-list.c',





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux