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." > +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? > +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"?) > +++ 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html