Merge pull request #1217 from LLNL/features/git-submodule-init

Add `submodules` option for git fetching.
This commit is contained in:
Todd Gamblin 2016-07-11 14:17:41 -07:00 committed by GitHub
commit 78ac11ff88
2 changed files with 19 additions and 2 deletions

View File

@ -604,6 +604,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.
Only one of ``tag``, ``branch``, or ``commit`` can be used at a time.
@ -660,6 +661,17 @@ Commits
could just use the abbreviated commit hash. It's up to the package
author to decide what makes the most sense.
Submodules
You can supply ``submodules=True`` to cause Spack to fetch submodules
along with the repository at fetch time.
.. code-block:: python
version('1.0.1', git='https://github.com/example-project/example.git',
tag='v1.0.1', submdoules=True)
Installing
^^^^^^^^^^^^^^

View File

@ -366,8 +366,8 @@ def fetch(self):
try:
self.check()
except ChecksumError:
# Future fetchers will assume they don't need to download if the
# file remains
# Future fetchers will assume they don't need to
# download if the file remains
os.remove(self.archive_file)
raise
@ -517,6 +517,7 @@ def __init__(self, **kwargs):
super(GitFetchStrategy, self).__init__(
'git', 'tag', 'branch', 'commit', **forwarded_args)
self._git = None
self.submodules = kwargs.get('submodules', False)
@property
def git_version(self):
@ -595,6 +596,10 @@ def fetch(self):
self.git('pull', '--tags', ignore_errors=1)
self.git('checkout', self.tag)
# Init submodules if the user asked for them.
if self.submodules:
self.git('submodule', 'update', '--init')
def archive(self, destination):
super(GitFetchStrategy, self).archive(destination, exclude='.git')