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