This series introduces labels which you can attach to submodules like so: $ cat .gitmodules [submodule "gcc"] path = gcc url = git://... label = default label = devel [submodule "linux"] path = linux url = git://... label = default $ git submodule add --name emacs --label "editor" --label default git://... # If upstream has submodules properly labeled, you can make use of them: $ git config --add submodule.autoInitialize "*default" $ git config --add submodule.autoInitialize ":name" $ git config --add submodule.autoInitialize "./by/path" # The prefix * denotes a label as found in .gitmodules # : goes before names # path are prefixed ./ currently # both path and names need work # no --init necessary, partially initializes submodules (only those which # were specified by label, name or path) $ git submodule update # time passes, upstream may have added new submodules and we get them without # extra commands! $ git submodule update # The above configuration can be given to git clone directly via: $ git clone --init-submodule=*labelA ... Why? ==== If you have lots of submodules, you probably don't need all of them at once, but you have functional units. Some submodules are absolutely required, some are optional and only for very specific purposes. Changes to the previous version with groups: ==== * it's called labels now (it's easier to imagine to attach more than one label to a submodule than having it in more groups) * In .git/config we have another name, too ("submodule.autoInitialize") * Support for more than just groups, but also names and paths are supported (in a very rudimentary way though) This series applies on top of sb/submodule-init, or can be found at https://github.com/stefanbeller/git/tree/submodule-groups-v3 Thanks, Stefan Stefan Beller (5): submodule init: Write submodule registration to stderr git submodule: Teach add to label submodules submodule-config: keep labels around submodule update: respect submodule.autoInitialize builtin/clone: Configure submodule.autoInitialize via --init-submodule Documentation/git-clone.txt | 6 ++ Documentation/git-submodule.txt | 5 +- builtin/clone.c | 40 +++++++++- builtin/submodule--helper.c | 58 +++++++++++++- git-submodule.sh | 14 +++- submodule-config.c | 15 ++++ submodule-config.h | 2 + t/t7400-submodule-basic.sh | 165 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 298 insertions(+), 7 deletions(-) -- 2.7.0.rc0.42.g77a36b9.dirty -- 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