Skip to content
Merge pull request #119 from gold2718/submodules

New capability to use git submodule info to checkout externals
By default, an external with no specified sub-externals configuration file will
have its submodules checked out according to the information in that repository's
.gitmodules file. This process is recursive.

To prevent submodules from being checked out, the external description for that
repository should be listed as "externals = none".

To use submodule URL, local path, and reference hash information for a
sub-external, replace the 'local_path', 'repo_url', and 'branch' 'hash' or 'tag'
keywords with "from_submodule = True".

User interface changes?: Yes
externals keyword can be "none" to prevent loading submodules.
from_submodule keyword can be used to replace external configuration information
with information from a repository's submodule configuration.

Fixes: #96

Testing:
test removed: none
unit tests: all pass
system tests: all pass, added TestSubrepoCheckout to test new functionality
manual testing: Tests with ESCOMP/MOM_interface (see below)

    Just run checkout_externals: no change
    Remove "externals = ../Externals_MOM.cfg" from Externals.cfg: All four submodules
    of MOM6 checked out
    Set "externals = none" in Externals.cfg: No submodules checked out (empty directories)
    Modify da_hooks external in Externals_MOM.cfg (see below): da_hooks is checked out with
    MOM6 .gitmodules configuration.

    [pkg/MOM6_DA_hooks]
    protocol = git
    _submodule = True
    required = True