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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html