From: "Đoàn Trần Công Danh" <congdanhqx@gmail.com>
To: Shourya Shukla <shouryashukla.oo@gmail.com>
Cc: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>,
git@vger.kernel.org, christian.couder@gmail.com,
gitster@pobox.com, liu.denton@gmail.com, sunshine@sunshineco.com,
Johannes.Schindelin@gmx.de
Subject: Re: [PATCH v4] submodule: port subcommand 'set-branch' from shell to C
Date: Thu, 28 May 2020 22:55:22 +0700 [thread overview]
Message-ID: <20200528155522.GA16787@danh.dev> (raw)
In-Reply-To: <20200528140142.GA1951@danh.dev>
On 2020-05-28 21:01:42+0700, Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote:
> On 2020-05-28 19:21:47+0700, Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote:
> > On 2020-05-27 22:43:58+0530, Shourya Shukla <shouryashukla.oo@gmail.com> wrote:
> > > > + git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper set-branch ${GIT_QUIET:+--quiet} ${branch:+--branch $branch} ${default:+--default} -- "$@"
> > >
> > > > Danh questioned whether '$branch' needs to be quoted here. I too think it
> > > > needs to be quoted unless I'm missing something.
> > >
> > > We want to do this because $branch is an argument right?
> >
> > We want to do this because we don't want to whitespace-split "$branch"
> >
> > Let's say, for some reason, this command was run:
> >
> > git submodule set-branch --branch "a-branch --branch another" a-submodule
>
> Anyway, after typing this.
> I'm thinking a bit, then re-read gitcli(7),
> I think git-submodule is quite broken regarding to Git's guidelines:
>
> -----------8<----------
>
> Here are the rules regarding the "flags" that you should follow when you are
> scripting Git:
>
> * it's preferred to use the non-dashed form of Git commands, which means that
> you should prefer `git foo` to `git-foo`.
>
> * splitting short options to separate words (prefer `git foo -a -b`
> to `git foo -ab`, the latter may not even work).
>
> * when a command-line option takes an argument, use the 'stuck' form. In
> other words, write `git foo -oArg` instead of `git foo -o Arg` for short
> options, and `git foo --long-opt=Arg` instead of `git foo --long-opt Arg`
> for long options. An option that takes optional option-argument must be
> written in the 'stuck' form.
> ------------>8--------------
>
> Current Git, with and without this change, this command will fail:
>
> git submodule set-branch --branch=a-branch a-submodule
>
> Thus, a script conformed with gitcli(7) will fail.
> (And our git-submodule(1) doesn't conform with gitcli(7), FWIW).
>
> After this change, those commands will success:
>
> git submodule--helper set-branch --branch a-branch a-submodule
This should be read:
git submodule--helper set-branch --branch=a-branch a-submodule
> git submodule set-branch --branch "a-branch --branch=another" a-submodule
>
> (The second one was written for demonstration purpose only,
> I don't expect it will success)
>
> This isn't related to this change, and git-submodule(1) will be
> rewritten in C in the very near future.
> Just want to make sure it's awared.
>
> >
> > This version will run:
> >
> > git submodule--helper --branch a-branch --branch another a-submodule
> >
> > Which will success if there's a branch "another" in the "a-submodule".
> > While that command should fail because we don't accept refname with
> > space.
It's me being noisy again.
I'm still puzzled by this idea (and I drank too much coffee, today).
I think the day of conversion of submodule from shell to C finish,
we can use current git-submodule--helper as the new git-submodule.
With that idea, I think why don't we passed all arguments from
git submodule set-branch
into git-submodule--helper.
(Yes, the idea is wrong because the usage output will have
git submodule--helper as $0)
I tried that idea and run the test.
To my surprise the test failed :(.
Turn out git-submodule--helper set-branch doesn't do its advertised job,
git-submodule--helper set-branch doesn't understand short options -d and -b
We'll need this fixup regardless of the agreement on my other concerns.
----------8<---------
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 305c9abb3b..64636161a7 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2291,9 +2291,9 @@ static int module_set_branch(int argc, const char **argv, const char *prefix)
struct option options[] = {
OPT__QUIET(&quiet,
N_("suppress output for setting default tracking branch")),
- OPT_BOOL(0, "default", &opt_default,
+ OPT_BOOL('d', "default", &opt_default,
N_("set the default tracking branch to master")),
- OPT_STRING(0, "branch", &opt_branch, N_("branch"),
+ OPT_STRING('b', "branch", &opt_branch, N_("branch"),
N_("set the default tracking branch")),
OPT_END()
};
------8<-----------
--
Danh
next prev parent reply other threads:[~2020-05-28 15:55 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 16:38 [PATCH v3] submodule: port subcommand 'set-branch' from shell to C Shourya Shukla
2020-05-21 18:44 ` Junio C Hamano
2020-05-21 19:03 ` Denton Liu
2020-05-21 19:50 ` Junio C Hamano
2020-05-22 19:39 ` Shourya Shukla
2020-05-24 16:07 ` Junio C Hamano
2020-05-21 23:04 ` Đoàn Trần Công Danh
2020-05-22 22:21 ` Johannes Schindelin
2020-05-24 23:15 ` Junio C Hamano
2020-05-24 23:18 ` Junio C Hamano
2020-05-23 16:39 ` [PATCH v4] " Shourya Shukla
2020-05-23 18:49 ` Kaartic Sivaraam
2020-05-23 23:18 ` Đoàn Trần Công Danh
2020-05-27 17:13 ` Shourya Shukla
2020-05-28 12:21 ` Đoàn Trần Công Danh
2020-05-28 14:01 ` Đoàn Trần Công Danh
2020-05-28 15:55 ` Đoàn Trần Công Danh [this message]
2020-06-02 16:35 ` [GSoC][PATCH v5] " Shourya Shukla
2020-06-02 17:58 ` Junio C Hamano
2020-06-03 0:12 ` Đoàn Trần Công Danh
2020-06-03 20:02 ` Junio C Hamano
2020-06-04 7:17 ` Shourya Shukla
2020-06-04 7:49 ` Christian Couder
2020-06-04 15:03 ` Junio C Hamano
2020-06-02 19:01 ` Kaartic Sivaraam
2020-06-02 19:10 ` Kaartic Sivaraam
2020-06-02 19:45 ` Christian Couder
2020-06-04 7:09 ` Shourya Shukla
2020-06-04 19:26 ` Kaartic Sivaraam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200528155522.GA16787@danh.dev \
--to=congdanhqx@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kaartic.sivaraam@gmail.com \
--cc=liu.denton@gmail.com \
--cc=shouryashukla.oo@gmail.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.