Merge pull request #1217 from LLNL/features/git-submodule-init
Add `submodules` option for git fetching.
This commit is contained in:
		| @@ -604,6 +604,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. | ||||||
|  |  | ||||||
| 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. | ||||||
|  |  | ||||||
| @@ -660,6 +661,17 @@ Commits | |||||||
|   could just use the abbreviated commit hash.  It's up to the package |   could just use the abbreviated commit hash.  It's up to the package | ||||||
|   author to decide what makes the most sense. |   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 | Installing | ||||||
| ^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -366,8 +366,8 @@ def fetch(self): | |||||||
|             try: |             try: | ||||||
|                 self.check() |                 self.check() | ||||||
|             except ChecksumError: |             except ChecksumError: | ||||||
|                 # Future fetchers will assume they don't need to download if the |                 # Future fetchers will assume they don't need to | ||||||
|                 # file remains |                 # download if the file remains | ||||||
|                 os.remove(self.archive_file) |                 os.remove(self.archive_file) | ||||||
|                 raise |                 raise | ||||||
|  |  | ||||||
| @@ -517,6 +517,7 @@ def __init__(self, **kwargs): | |||||||
|         super(GitFetchStrategy, self).__init__( |         super(GitFetchStrategy, self).__init__( | ||||||
|             'git', 'tag', 'branch', 'commit', **forwarded_args) |             'git', 'tag', 'branch', 'commit', **forwarded_args) | ||||||
|         self._git = None |         self._git = None | ||||||
|  |         self.submodules = kwargs.get('submodules', False) | ||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def git_version(self): |     def git_version(self): | ||||||
| @@ -595,6 +596,10 @@ def fetch(self): | |||||||
|                 self.git('pull', '--tags', ignore_errors=1) |                 self.git('pull', '--tags', ignore_errors=1) | ||||||
|                 self.git('checkout', self.tag) |                 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): |     def archive(self, destination): | ||||||
|         super(GitFetchStrategy, self).archive(destination, exclude='.git') |         super(GitFetchStrategy, self).archive(destination, exclude='.git') | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Todd Gamblin
					Todd Gamblin