git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSoC][PATCH v5] submodule: port subcommand 'set-branch' from shell to C

From
Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Date
Jun 2, 2020, 19:01 UTC
Message-ID
<1b851e49-3bb1-3b59-7f24-b903c5514391@gmail.com>
In-Reply-To
<20200602163523.7131-1-shouryashukla.oo@gmail.com>
On 02-06-2020 22:05, Shourya Shukla wrote:
Show 52 quoted lines
> Convert submodule subcommand 'set-branch' to a builtin and call it via
> 'git-submodule.sh'.
> 
> Mentored-by: Christian Couder <chriscool@tuxfamily.org>
> Mentored-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
> Helped-by: Denton Liu <liu.denton@gmail.com>
> Helped-by: Eric Sunshine <sunshine@sunshineco.com>
> Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
> Signed-off-by: Shourya Shukla <shouryashukla.oo@gmail.com>
> ---
> Here is the v5 of the subcommand. Thank you Danh for the feedback! I
> apologise for not replying on time. I have taken into account Danh's
> suggestions on the `quiet` option as well as done the fixup Dscho
> suggested (fixed by Junio here:
> https://github.com/gitster/git/commit/77ba62f66ff8e3de54d81c240542edb42a2711c7)
> 
>   builtin/submodule--helper.c | 44 +++++++++++++++++++++++++++++++++++++
>   git-submodule.sh            | 32 +++------------------------
>   2 files changed, 47 insertions(+), 29 deletions(-)
> 
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> index f50745a03f..a974e17571 100644
> --- a/builtin/submodule--helper.c
> +++ b/builtin/submodule--helper.c
> @@ -2284,6 +2284,49 @@ static int module_set_url(int argc, const char **argv, const char *prefix)
>   	return 0;
>   }
>   
> +static int module_set_branch(int argc, const char **argv, const char *prefix)
> +{
> +	int opt_default = 0, ret;
> +	const char *opt_branch = NULL;
> +	const char *path;
> +	char *config_name;
> +
> +	/*
> +	 * We accept the `quiet` option for uniformity across subcommands,
> +	 * though there is nothing to make less verbose in this subcommand.
> +	 */
> +	struct option options[] = {
> +		OPT_NOOP_NOARG('q', "quiet"),
> +		OPT_BOOL('d', "default", &opt_default,
> +			N_("set the default tracking branch to master")),
> +		OPT_STRING('b', "branch", &opt_branch, N_("branch"),
> +			N_("set the default tracking branch")),
> +		OPT_END()
> +	};
> +	const char *const usage[] = {
> +		N_("git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"),
> +		N_("git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"),
> +		NULL
> +	};

I'm having second thoughts about my suggestion[1] to include the short option for '--quiet' in the usage. This is the only usage in submodule--helper that mentions that '-q' is a short hand for '--quiet'. That seems inconsistent. I see two ways but I'm not sure which one of these would be better:

A. Dropping the mention of '-q' in this usage thus making it consistent
    with the other usages printed by submodule--helper.
B. Fixing other usages of submodule--helper to mention that '-q' is
    shorthand for quiet. This has the benefit of properly advertising
    the shorthand.
C. Just ignore this?

I also noticed one other thing. A quote from Documentation/CodingGuidelines regarding the usage for reference:

Show 27 quoted lines
>  Optional parts are enclosed in square brackets:
>    [<extra>]
>    (Zero or one <extra>.)
> 
>    --exec-path[=<path>]
>    (Option with an optional argument.  Note that the "=" is inside the
>    brackets.)
> 
>    [<patch>...]
>    (Zero or more of <patch>.  Note that the dots are inside, not
>    outside the brackets.)
> 
>  Multiple alternatives are indicated with vertical bars:
>    [-q | --quiet]
>    [--utf8 | --no-utf8]
> 
>  Parentheses are used for grouping:
>    [(<rev> | <range>)...]
>    (Any number of either <rev> or <range>.  Parens are needed to make
>    it clear that "..." pertains to both <rev> and <range>.)
> 
>    [(-p <parent>)...]
>    (Any number of option -p, each with one <parent> argument.)
> 
>    git remote set-head <name> (-a | -d | <branch>)
>    (One and only one of "-a", "-d" or "<branch>" _must_ (no square
>    brackets) be provided.)
So, according to this, I think the usage should be ...
     git submodule--helper set-branch [-q | --quiet] [-d | --default] <path>
... and ...
     git submodule--helper set-branch [-q|--quiet] [-b | 
--branch]<branch> <path>
... respectively.
> +		NULL
> +	};

--- Footnotes:

[1]: https://github.com/periperidip/git/commit/9a8918bf0688c583740b3dddafdba82f47972442#r39606384

-- 
Sivaraam
Previous: Junio C HamanoNext: Kaartic Sivaraam
Message 25 of 29 in “submodule: port subcommand 'set-branch' from shell to C”
  1. submodule: port subcommand 'set-branch' from shell to CShourya Shukla, May 21, 2020
  2. Junio C HamanoMay 21, 2020
  3. Denton LiuMay 21, 2020
  4. Junio C HamanoMay 21, 2020
  5. Shourya ShuklaMay 22, 2020
  6. Junio C HamanoMay 24, 2020
  7. Đoàn Trần Công DanhMay 21, 2020
  8. Johannes SchindelinMay 22, 2020
  9. Junio C HamanoMay 24, 2020
  10. Junio C HamanoMay 24, 2020
  11. submodule: port subcommand 'set-branch' from shell to CShourya Shukla, May 23, 2020
  12. Kaartic SivaraamMay 23, 2020
  13. Đoàn Trần Công DanhMay 23, 2020
  14. Shourya ShuklaMay 27, 2020
  15. Đoàn Trần Công DanhMay 28, 2020
  16. Đoàn Trần Công DanhMay 28, 2020
  17. Đoàn Trần Công DanhMay 28, 2020
  18. [GSoC][PATCH v5] submodule: port subcommand 'set-branch' from shell to CShourya Shukla, Jun 2, 2020
  19. Junio C HamanoJun 2, 2020
  20. Đoàn Trần Công DanhJun 3, 2020
  21. Junio C HamanoJun 3, 2020
  22. Shourya ShuklaJun 4, 2020
  23. Christian CouderJun 4, 2020
  24. Junio C HamanoJun 4, 2020
  25. Kaartic SivaraamJun 2, 2020
  26. Kaartic SivaraamJun 2, 2020
  27. Christian CouderJun 2, 2020
  28. Shourya ShuklaJun 4, 2020
  29. Kaartic SivaraamJun 4, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.