I started from scratch as I think there were some sharp edges in the design. My thinking shifted from "submodule groups" towards "actually it's just an enhanced pathspec, called submodulespec". The meat is found in the last 3 patches. What is this series about? ========================== 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. This patch series adds labels to submodules in the .gitmodules file. So you could have a .gitmodules file such as: [submodule "gcc"] path = gcc url = git://... label = default label = devel [submodule "linux"] path = linux url = git://... label = default [submodule "nethack"] path = nethack url = git://... label = optional label = games and by this series you can work on an arbitrary group of these submodules composed by the labels, names or paths of the submodules. git clone --init-submodule=\*<label> --init-submodule=:<name> git://... # will clone the superproject checkout # any submodule being labeled <label> or named <name> git submodule add --label <name> git://... .. # record a label while adding a submodule git submodule update [--init] \*label2 # update only the submodules labeled "label2" git config submodule.updateGroups default git config --add submodule.updateGroups devel # configure which submodules you are interested in.... git submodule update [--init-default-group] # ... and update them git status git diff git submodule summary # unlike the last series, these are not touched git submodule status \*label2 # only show information about "label2" submodules. Any feedback welcome, specially on the design level! Thanks, Stefan Prior series found here: http://thread.gmane.org/gmane.comp.version-control.git/292666 Stefan Beller (7): submodule--helper: add valid-label-name submodule add: label submodules if asked to submodule-config: keep labels around submodule-config: check if a submodule is in a group submodule--helper module_list_compute: allow label or name arguments submodule update: learn partial initialization clone: allow specification of submodules to be cloned Documentation/config.txt | 5 ++ Documentation/git-clone.txt | 26 ++++-- Documentation/git-submodule.txt | 30 +++++-- builtin/clone.c | 40 ++++++++- builtin/submodule--helper.c | 146 +++++++++++++++++++++++++++--- git-submodule.sh | 38 ++++++-- submodule-config.c | 66 ++++++++++++++ submodule-config.h | 5 ++ t/t7400-submodule-basic.sh | 176 ++++++++++++++++++++++++++++++++++++ t/t7412-submodule--helper.sh | 193 ++++++++++++++++++++++++++++++++++++++++ 10 files changed, 692 insertions(+), 33 deletions(-) create mode 100755 t/t7412-submodule--helper.sh -- 2.8.0.35.g58985d9.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