Skip to content
Snippets Groups Projects
Commit 0b002c29 authored by Christoph Junghans's avatar Christoph Junghans Committed by Todd Gamblin
Browse files

fetch git submodules recursively (#3779)

* fetch git submodules recursively

This is useful if the submodules have submodules themselves. On
the other hand doing a recursive update doesn't hurt if there
is only one level.

* fetch submodules with depth=1 as well (fix #2190)

* use git submodule with depth only for git>=1.8.4
parent 45726857
No related branches found
No related tags found
No related merge requests found
...@@ -854,7 +854,7 @@ Git fetching is enabled with the following parameters to ``version``: ...@@ -854,7 +854,7 @@ Git fetching is enabled with the following parameters to ``version``:
* ``tag``: name of a tag to fetch. * ``tag``: name of a tag to fetch.
* ``branch``: name of a branch to fetch. * ``branch``: name of a branch to fetch.
* ``commit``: SHA hash (or prefix) of a commit 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. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time.
...@@ -917,7 +917,8 @@ Commits ...@@ -917,7 +917,8 @@ Commits
Submodules Submodules
You can supply ``submodules=True`` to cause Spack to fetch 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 .. code-block:: python
......
...@@ -686,10 +686,20 @@ def fetch(self): ...@@ -686,10 +686,20 @@ def fetch(self):
# Init submodules if the user asked for them. # Init submodules if the user asked for them.
if self.submodules: if self.submodules:
if spack.debug: # only git 1.8.4 and later have --depth option
self.git('submodule', 'update', '--init') 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: 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): def archive(self, destination):
super(GitFetchStrategy, self).archive(destination, exclude='.git') super(GitFetchStrategy, self).archive(destination, exclude='.git')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment