Skip to content

Commit

Permalink
submodule: if $command was not matched, don't parse other args
Browse files Browse the repository at this point in the history
"git submodule" command DWIMs the command line and assumes a
unspecified action word for 'status' action.  This is a UI mistake
that leads to a confusing behaviour.  A mistyped command name is
instead treated as a request for 'status' of the submodule with that
name, e.g.

    $ git submodule show
    error: pathspec 'show' did not match any file(s) known to git.
    Did you forget to 'git add'?

Stop DWIMming an unknown or mistyped subcommand name as pathspec
given to unspelled "status" subcommand.  "git submodule" without any
argument is still interpreted as "git submodule status", but its
value is questionable.

Adjust t7400 to match, and stop advertising the default subcommand
being 'status' which does not help much in practice, other than
promoting laziness and confusion.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Ramkumar Ramachandra authored and Junio C Hamano committed Sep 25, 2012
1 parent bafc478 commit af9c9f9
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
1 change: 0 additions & 1 deletion Documentation/git-submodule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ status::
initialized, `+` if the currently checked out submodule commit
does not match the SHA-1 found in the index of the containing
repository and `U` if the submodule has merge conflicts.
This command is the default command for 'git submodule'.
+
If `--recursive` is specified, this command will recurse into nested
submodules, and show their status as well.
Expand Down
10 changes: 9 additions & 1 deletion git-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1056,7 +1056,15 @@ do
done

# No command word defaults to "status"
test -n "$command" || command=status
if test -z "$command"
then
if test $# = 0
then
command=status
else
usage
fi
fi

# "-b branch" is accepted only by "add"
if test -n "$branch" && test "$command" != add
Expand Down
4 changes: 2 additions & 2 deletions t/t7400-submodule-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -438,8 +438,8 @@ test_expect_success 'moving to a commit without submodule does not leave empty d
git checkout second
'

test_expect_success 'submodule <invalid-path> warns' '
test_failure_with_unknown_submodule
test_expect_success 'submodule <invalid-subcommand> fails' '
test_must_fail git submodule no-such-subcommand
'

test_expect_success 'add submodules without specifying an explicit path' '
Expand Down

0 comments on commit af9c9f9

Please sign in to comment.