Thread (4 messages) flat view 4 messages, 3 authors, 2017-08-18

Re: [bug] Git submodule command interprets switch as argument and switch

From: Jonathan Nieder <hidden>
Date: 2017-08-18 20:39:06

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>.

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?

Thanks,
Jonathan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help