adding a fallback on failure with git --depth

Certain remote protocols don't support the `--depth` option.  Since this can't
be checked by URL type or in any sane way locally, this version attempts to
clone git repositories with the --depth option, and if that fails attempts the
clone again without it.
This commit is contained in:
Tom Scogland 2015-07-27 14:03:04 -07:00
parent 27ca697b43
commit 9174c06598

View File

@ -425,12 +425,21 @@ def fetch(self):
if self.git_version > ver('1.7.10'):
args.append('--single-branch')
cloned = False
# Yet more efficiency, only download a 1-commit deep tree
if self.git_version >= ver('1.7.1'):
args.extend(['--depth','1'])
try:
self.git(*(args + ['--depth','1', self.url]))
cloned = True
except spack.error.SpackError:
# This will fail with the dumb HTTP transport
# continue and try without depth, cleanup first
pass
if not cloned:
args.append(self.url)
self.git(*args)
args.append(self.url)
self.git(*args)
self.stage.chdir_to_source()
# For tags, be conservative and check them out AFTER