{"thread":{"id":"66567","subject":"[Outreachy][PATCH v3] builtin/var: refactor to use parse-options API","startedAt":"2026-10-17T13:17:30Z","lastAt":"2026-10-18T09:45:36Z","messageCount":2,"participants":["kerylefondji7@gmail.com","Phillip Wood"],"isPatch":true,"patchVersion":3,"patchTotal":null},"messages":[{"id":"555326","messageId":"20261017131730.642-1-kerylefondji7@gmail.com","threadId":"66567","inReplyTo":null,"subject":"[Outreachy][PATCH v3] builtin/var: refactor to use parse-options API","fromName":"","fromEmail":"kerylefondji7@gmail.com","sentAt":"2026-10-17T13:17:30Z","receivedAt":"2026-10-17T13:17:30Z","isPatch":true,"sender":{"key":"kerylefondji7@gmail.com","avatar":null},"body":"From: Keryle Fondji <kerylefondji7@gmail.com>\n\nMigrate option handling in 'git var' to the parse-options API.\nThis update also aligns variable resolution with current Git configuration\nand attribute handling.\n\nSigned-off-by: Keryle Fondji <kerylefondji7@gmail.com>\n---\n builtin/var.c | 32 +++++++++++++++++++++++---------\n 1 file changed, 23 insertions(+), 9 deletions(-)\n\ndiff --git a/builtin/var.c b/builtin/var.c\nindex cc3a43cde2..b9234a55eb 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -3,11 +3,9 @@\n  *\n  * Copyright (C) Eric Biederman, 2005\n  */\n-\n #define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n-\n #include \"attr.h\"\n #include \"config.h\"\n #include \"editor.h\"\n@@ -18,8 +16,12 @@\n #include \"path.h\"\n #include \"strbuf.h\"\n #include \"run-command.h\"\n+#include \"parse-options.h\"\n \n-static const char var_usage[] = \"git var (-l | <variable>)\";\n+static const char * const var_usage[] = {\n+\tN_(\"git var (-l | <variable>)\"),\n+\tNULL\n+};\n \n static char *committer(int ident_flag)\n {\n@@ -120,6 +122,7 @@ struct git_var {\n \tchar *(*read)(int);\n \tint multivalued;\n };\n+\n static struct git_var git_vars[] = {\n \t{\n \t\t.name = \"GIT_COMMITTER_IDENT\",\n@@ -221,21 +224,32 @@ int cmd_var(int argc,\n {\n \tconst struct git_var *git_var;\n \tchar *val;\n+\tint list = 0;\n \n-\tshow_usage_if_asked(argc, argv, var_usage);\n-\tif (argc != 2)\n-\t\tusage(var_usage);\n+\tstruct option builtin_var_options[] = {\n+\t\tOPT_BOOL('l', \"list\", &list, N_(\"list builtin variables\")),\n+\t\tOPT_END()\n+\t};\n \n-\tif (strcmp(argv[1], \"-l\") == 0) {\n+\targc = parse_options(argc, argv, prefix, builtin_var_options,\n+\t\t\t     var_usage, 0);\n+\n+\tif (list) {\n+\t\tif (argc > 0)\n+\t\t\tusage(var_usage[0]);\n \t\trepo_config(the_repository, show_config, NULL);\n \t\tlist_vars();\n \t\treturn 0;\n \t}\n+\n+\tif (argc != 1)\n+\t\tusage(var_usage[0]);\n+\n \trepo_config(the_repository, git_default_config, NULL);\n \n-\tgit_var = get_git_var(argv[1]);\n+\tgit_var = get_git_var(argv[0]);\n \tif (!git_var)\n-\t\tusage(var_usage);\n+\t\tusage(var_usage[0]);\n \n \tval = git_var->read(IDENT_STRICT);\n \tif (!val)\n-- \n2.53.0\n\n\n"},{"id":"555343","messageId":"d748915d-c50c-4143-8140-ae885a6ba604@gmail.com","threadId":"66567","inReplyTo":"20261017131730.642-1-kerylefondji7@gmail.com","subject":"Re: [Outreachy][PATCH v3] builtin/var: refactor to use parse-options API","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2026-10-18T09:45:36Z","receivedAt":"2026-10-18T09:45:36Z","isPatch":true,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Beryle\n\nOn 17/10/2026 14:17, kerylefondji7@gmail.com wrote:\n> From: Keryle Fondji <kerylefondji7@gmail.com>\n> > Migrate option handling in 'git var' to the parse-options API.\n> This update also aligns variable resolution with current Git configuration\n> and attribute handling.\n\nThis all looks very sensible, but \"git var\" was recently converted to use the parse_options() api in e19f0779c67 (var: add \"-z\" output mode, 2026-09-26) which has been merge to master.\n\nThanks\n\nPhillip\n\n> Signed-off-by: Keryle Fondji <kerylefondji7@gmail.com>\n> ---\n>   builtin/var.c | 32 +++++++++++++++++++++++---------\n>   1 file changed, 23 insertions(+), 9 deletions(-)\n> > diff --git a/builtin/var.c b/builtin/var.c\n> index cc3a43cde2..b9234a55eb 100644\n> --- a/builtin/var.c\n> +++ b/builtin/var.c\n> @@ -3,11 +3,9 @@\n>    *\n>    * Copyright (C) Eric Biederman, 2005\n>    */\n> -\n>   #define USE_THE_REPOSITORY_VARIABLE\n>   >   #include \"builtin.h\"\n> -\n>   #include \"attr.h\"\n>   #include \"config.h\"\n>   #include \"editor.h\"\n> @@ -18,8 +16,12 @@\n>   #include \"path.h\"\n>   #include \"strbuf.h\"\n>   #include \"run-command.h\"\n> +#include \"parse-options.h\"\n>   > -static const char var_usage[] = \"git var (-l | <variable>)\";\n> +static const char * const var_usage[] = {\n> +\tN_(\"git var (-l | <variable>)\"),\n> +\tNULL\n> +};\n>   >   static char *committer(int ident_flag)\n>   {\n> @@ -120,6 +122,7 @@ struct git_var {\n>   \tchar *(*read)(int);\n>   \tint multivalued;\n>   };\n> +\n>   static struct git_var git_vars[] = {\n>   \t{\n>   \t\t.name = \"GIT_COMMITTER_IDENT\",\n> @@ -221,21 +224,32 @@ int cmd_var(int argc,\n>   {\n>   \tconst struct git_var *git_var;\n>   \tchar *val;\n> +\tint list = 0;\n>   > -\tshow_usage_if_asked(argc, argv, var_usage);\n> -\tif (argc != 2)\n> -\t\tusage(var_usage);\n> +\tstruct option builtin_var_options[] = {\n> +\t\tOPT_BOOL('l', \"list\", &list, N_(\"list builtin variables\")),\n> +\t\tOPT_END()\n> +\t};\n>   > -\tif (strcmp(argv[1], \"-l\") == 0) {\n> +\targc = parse_options(argc, argv, prefix, builtin_var_options,\n> +\t\t\t     var_usage, 0);\n> +\n> +\tif (list) {\n> +\t\tif (argc > 0)\n> +\t\t\tusage(var_usage[0]);\n>   \t\trepo_config(the_repository, show_config, NULL);\n>   \t\tlist_vars();\n>   \t\treturn 0;\n>   \t}\n> +\n> +\tif (argc != 1)\n> +\t\tusage(var_usage[0]);\n> +\n>   \trepo_config(the_repository, git_default_config, NULL);\n>   > -\tgit_var = get_git_var(argv[1]);\n> +\tgit_var = get_git_var(argv[0]);\n>   \tif (!git_var)\n> -\t\tusage(var_usage);\n> +\t\tusage(var_usage[0]);\n>   >   \tval = git_var->read(IDENT_STRICT);\n>   \tif (!val)\n\n\n"}]}