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

Re: [PATCH] Add git-submodule command

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
May 25, 2007, 18:41 UTC
Message-ID
<Pine.LNX.4.64.0705251924280.4648@racer.site>
In-Reply-To
<11801165433267-git-send-email-hjemli@gmail.com>
Hi,
On Fri, 25 May 2007, Lars Hjemli wrote:
> Btw: testing this quickly becomes tedious, so I'll try to make a proper 
> testscript later tonight.
Very good.
> +'git-submodule' [--init | --update | --cached] [--quiet] [--] [<path>...]

I did not realize this earlier, but we seem to have more and more programs where actions are specified without "--", i.e. "git-svn fetch", or "git-bundle create".

I actually like that, to separate actions from options. Hmm?
> +-i, --init::
> +	Initialize the specified submodules, i.e. clone the git repository
> +	specified in .gitmodules and checkout the sha1 specified in the
> +	index.

How about "Initialize the submodules...", and then another sentence "If you do not want to initialize all submodules, you can specify the subset to initialize"?

> +-u, --update::
> +	Update the specified submodules, i.e. checkout the sha1 specified
> +	in the index

The full stop is missing here. And again, I would add another sentence "Submodules which have not been initialized are not touched by this operation."

Show 5 quoted lines
> +FILES
> +-----
> +When cloning submodules, a .gitmodules file in the top-level directory
> +of the containing work-tree is examined for the url of each submodule.
> +The url is the value of the key module.$path.url.

IIRC Junio talked about a name for overriding. But I think it would be even better to to override by mapping the URLs from .gitmodules to the locally-wanted URLs.

Junio?
Show 6 quoted lines
> +When updating submodules, the same .gitmodules file is examined for a key
> +named 'module.$path.branch'. If found, and if the named branch is currently 
> +at the same revision as the commit-id in the containing repositories index, 
> +the specified branch will be checked out in the submodule. If not found, or 
> +if the branch isn't currently positioned at the wanted revision, a checkout
> +of the wanted sha1 will happen in the submodule, leaving its HEAD detached.

A very good description, and I think this is the only method to checkout the submodule which makes sense. (Just maybe default the value of module.<path>.branch to "master"?)

Show 11 quoted lines
> +++ b/git-submodule.sh
> @@ -0,0 +1,178 @@
> +#!/bin/sh
> +#
> +# git-submodules.sh: init, update or list git submodules
> +#
> +# Copyright (c) 2007 Lars Hjemli
> +
> +USAGE='[--init | --update | --cached] [--quiet] [--] [<path>...]'
> +. git-sh-setup
> +require_work_tree
Maybe
	test -f "$GIT_DIR"/.gitmodules || die "Not a superproject"
Hmm?
> +			rmdir "$path" 2>/dev/null ||
Just out of curiousity: is rmdir portable? I always used "rm -r"...
> +case "$init,$update,$cached" in
> +1,,)
> +	modules_init $@
> +	;;
:-)
Now I run out of comments...

Ciao, Dscho

Previous: Lars HjemliNext: Junio C Hamano
Message 10 of 26 in “Add git-submodule command”
  1. Add git-submodule commandLars Hjemli, May 25, 2007
  2. Johannes SchindelinMay 25, 2007
  3. Johannes SchindelinMay 25, 2007
  4. Lars HjemliMay 25, 2007
  5. Johannes SchindelinMay 25, 2007
  6. Lars HjemliMay 25, 2007
  7. Johannes SchindelinMay 25, 2007
  8. Lars HjemliMay 25, 2007
  9. Add git-submodule commandLars Hjemli, May 25, 2007
  10. Johannes SchindelinMay 25, 2007
  11. Junio C HamanoMay 25, 2007
  12. Lars HjemliMay 25, 2007
  13. Junio C HamanoMay 25, 2007
  14. Lars HjemliMay 25, 2007
  15. Add git-submodule commandLars Hjemli, May 26, 2007
  16. Johannes SchindelinMay 26, 2007
  17. Junio C HamanoMay 26, 2007
  18. Lars HjemliMay 26, 2007
  19. Johannes SchindelinMay 26, 2007
  20. Add git-submodule commandLars Hjemli, May 26, 2007
  21. Simon HausmannMay 26, 2007
  22. Lars HjemliMay 26, 2007
  23. Johannes SchindelinMay 25, 2007
  24. Linus TorvaldsMay 25, 2007
  25. Johannes SchindelinMay 25, 2007
  26. Lars HjemliMay 25, 2007

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.