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:56 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
List information: http://vger.kernel.org/majordomo-info.html
* 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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).