git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git submodule output on invalid command

From
PBPieter de Bie <pdebie@ai.rug.nl>
Date
Sep 5, 2008, 16:16 UTC
Message-ID
<1220631370-19777-1-git-send-email-pdebie@ai.rug.nl>

If you give git submodule an invalid commands, it outputs nothing. For example:

	Vienna:git pieter$ git submodule satsus
	Vienna:git pieter$

This is because the default command is 'status' and status accepts paths to limit the output.

I tried to find a fix for this, but git-submodule also allows a syntax like

	git submodule --cached status
and
	git submodule --cached

so you can't just look at the first argument to see if a command is valid. Similarly, the default command is 'status', so something like

	Vienna:bonnenteller pieter$ git submodule vendor/
	ef38bc83b7ff4b290a6b1f4d82df03585fbb7529 vendor/plugins/will_paginate (2.3.2)

is also valid. Using that line of reasoning, something like 'git submodule satsus' is valid and should return nothing, because there are no submodules in the 'satsus' path. However, I still feel this should produce a warning.

I'm sure there is a nicer way to alert the user than my patch below, which warns if the user did not supply any valid paths. Anyone else got a more satisfying approach?

- Pieter
diff --git a/git-submodule.sh b/git-submodule.sh
index 1c39b59..3aae746 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -59,7 +59,12 @@ resolve_relative_url ()
 #
 module_list()
 {
-       git ls-files --stage -- "$@" | grep '^160000 '
+       git ls-files --stage -- "$@" | grep '^160000 ' ||
+       if test -z "$@"; then
+               die "This repository contains no submodules"
+       else
+               die "Could not find any submodules in paths $@"
+       fi
 }
 
 #
Next: Junio C Hamano
Message 1 of 4 in “git submodule output on invalid command”
  1. Pieter de BieSep 5, 2008
  2. Re* git submodule output on invalid commandJunio C Hamano, Sep 5, 2008
  3. David AguilarSep 6, 2008
  4. Junio C HamanoSep 6, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.