summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/docs/packaging_guide.rst5
-rw-r--r--lib/spack/spack/fetch_strategy.py16
2 files changed, 16 insertions, 5 deletions
diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst
index 0e8ddfa68f..6f4a3ecf1a 100644
--- a/lib/spack/docs/packaging_guide.rst
+++ b/lib/spack/docs/packaging_guide.rst
@@ -854,7 +854,7 @@ Git fetching is enabled with the following parameters to ``version``:
* ``tag``: name of a tag to fetch.
* ``branch``: name of a branch to fetch.
* ``commit``: SHA hash (or prefix) of a commit to fetch.
-* ``submodules``: Also fetch submodules when checking out this repository.
+* ``submodules``: Also fetch submodules recursively when checking out this repository.
Only one of ``tag``, ``branch``, or ``commit`` can be used at a time.
@@ -917,7 +917,8 @@ Commits
Submodules
You can supply ``submodules=True`` to cause Spack to fetch submodules
- along with the repository at fetch time.
+ recursively along with the repository at fetch time. For more information
+ about git submodules see the manpage of git: ``man git-submodule``.
.. code-block:: python
diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py
index 7cafeb296d..c694610856 100644
--- a/lib/spack/spack/fetch_strategy.py
+++ b/lib/spack/spack/fetch_strategy.py
@@ -686,10 +686,20 @@ class GitFetchStrategy(VCSFetchStrategy):
# Init submodules if the user asked for them.
if self.submodules:
- if spack.debug:
- self.git('submodule', 'update', '--init')
+ # only git 1.8.4 and later have --depth option
+ if self.git_version < ver('1.8.4'):
+ if spack.debug:
+ self.git('submodule', 'update', '--init', '--recursive')
+ else:
+ self.git('submodule', '--quiet', 'update', '--init',
+ '--recursive')
else:
- self.git('submodule', '--quiet', 'update', '--init')
+ if spack.debug:
+ self.git('submodule', 'update', '--init', '--recursive',
+ '--depth=1')
+ else:
+ self.git('submodule', '--quiet', 'update', '--init',
+ '--recursive', '--depth=1')
def archive(self, destination):
super(GitFetchStrategy, self).archive(destination, exclude='.git')