git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: R0b0t1 <r030t1@gmail.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>
Subject: Re: [bug] Git submodule command interprets switch as argument and switch
Date: Fri, 18 Aug 2017 16:35:34 -0500	[thread overview]
Message-ID: <CAAD4mYhYWa=gB3ZG=Mepx2C+GO_ku7m2Zn6rL2paQBsVK6ya6A@mail.gmail.com> (raw)
In-Reply-To: <20170818203858.GK13924@aiede.mtv.corp.google.com>

On Fri, Aug 18, 2017 at 3:38 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Hi,
>
> R0b0t1 wrote:
>
>> The issue is as follows:
>>
>> R0b0t1@host:~/devel/project$ git submodule add
>> https://github.com/user/project -f
>> Cloning into '/home/R0b0t1/devel/project/-f'...
>
> Thanks for reporting.  Confusingly, I think this is intended behavior.
> "git help submodule" explains:
>
>         add [-b <branch>] [-f|--force] [--name <name>]
>                 [--reference <repository>] [--depth <depth>] [--]
>                 <repository> [<path>]
>
>                 Add the given repository as a submodule at the given
>                 path [etc]
>
> Since the -f comes after <repository>, it is a <path>.
>

Not to comment on every response to this bug, but I understand. What
is confusing is that the command was failing without being forced, and
without thinking I added "-f" at the end. The command succeeded as if
I supplied the force flag, but per my experience with other tools, and
with other Git commands, "-f" should not be a flag. It should be a
path, as you say. However it appears to be both.

To reproduce my situation exactly, add "*" to your .gitignore. The
directory "gerrit" should then be ignored, and Git will warn you that
the submodule will not be tracked (I may have another issue to report
related to this, but I'm still trying to figure out what is going on).
However, if you name the directory something else, like "-f", it will
still be matched by the .gitignore rule and should not succeed. This
is why I think the path is also being interpreted as a flag.

Something else may be happening, but either way the behavior does not
seem to be expected nor consistent with other parts of Git.

> That said, there are a few related things wrong here.
>
> The usage string above says I can put "--" before the <repository> to
> make things extra unambiguous.  But when I try that, I get the following
> result:
>
>         $ git submodule add -- https://gerrit.googlesource.com/gerrit -f
>         Cloning into '/tmp/t/test/-f'...
> [...]
>         Resolving deltas: 100% (215796/215796), done.
>         /usr/lib/git-core/git-submodule: line 261: cd: -f: invalid option
>         cd: usage: cd [-L|[-P [-e]] [-@]] [dir]
>         Unable to checkout submodule '-f'
>
> If I try to put the "--" between <repository> and <path>, I get another
> confusing result:
>
>         $ git submodule add https://gerrit.googlesource.com/gerrit -- -f
>         '--' already exists in the index
>
> "git help cli" is supposed to give advice about this kind of thing as
> well --- e.g., it gives some sound advice about what form of flags
> scripts should use (e.g., to always use the 'stuck' form --name=<name>
> instead of --name name).  But it doesn't mention this issue of flags
> belonging before other arguments.
>
> Thoughts?
>

I have experienced issues with -- before. It has been long enough I
have forgotten. Sorry for not being able to provide anything concrete.

      reply	other threads:[~2017-08-18 21:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-18  5:16 [bug] Git submodule command interprets switch as argument and switch R0b0t1
2017-08-18 19:33 ` Stefan Beller
2017-08-18 20:38 ` Jonathan Nieder
2017-08-18 21:35   ` R0b0t1 [this message]

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='CAAD4mYhYWa=gB3ZG=Mepx2C+GO_ku7m2Zn6rL2paQBsVK6ya6A@mail.gmail.com' \
    --to=r030t1@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=sbeller@google.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).