From: Kaartic Sivaraam Date: Tue, 02 Jun 2020 19:01:46 GMT Subject: Re: [GSoC][PATCH v5] submodule: port subcommand 'set-branch' from shell to C 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: > Convert submodule subcommand 'set-branch' to a builtin and call it via > 'git-submodule.sh'. > > Mentored-by: Christian Couder > Mentored-by: Kaartic Sivaraam > Helped-by: Denton Liu > Helped-by: Eric Sunshine > Helped-by: Đoàn Trần Công Danh > Signed-off-by: Shourya Shukla > --- > 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) "), > + N_("git submodule--helper set-branch [-q|--quiet] (-b|--branch) "), > + 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: > Optional parts are enclosed in square brackets: > [] > (Zero or one .) > > --exec-path[=] > (Option with an optional argument. Note that the "=" is inside the > brackets.) > > [...] > (Zero or more of . 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: > [( | )...] > (Any number of either or . Parens are needed to make > it clear that "..." pertains to both and .) > > [(-p )...] > (Any number of option -p, each with one argument.) > > git remote set-head (-a | -d | ) > (One and only one of "-a", "-d" or "" _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] ... and ... git submodule--helper set-branch [-q|--quiet] [-b | --branch] ... respectively. > + NULL > + }; --- Footnotes: [1]: https://github.com/periperidip/git/commit/9a8918bf0688c583740b3dddafdba82f47972442#r39606384 -- Sivaraam