Allow clone depth to be specified per project

If the clone-depth attribute is set on a project, its value will
be used to set the depth when fetching the git.  The value, if
given, must be a positive integer.

The value in the clone-depth attribute overrides any value given to
repo init via the --depth command line option.

Change-Id: I273015b3724213600b63e40cca4cafaa9f782ddf
This commit is contained in:
David Pursehouse
2012-11-27 22:25:30 +09:00
parent 04d84a23fd
commit ede7f12d4a
3 changed files with 23 additions and 2 deletions

View File

@ -665,6 +665,16 @@ class XmlManifest(object):
else:
sync_s = sync_s.lower() in ("yes", "true", "1")
clone_depth = node.getAttribute('clone-depth')
if clone_depth:
try:
clone_depth = int(clone_depth)
if clone_depth <= 0:
raise ValueError()
except ValueError:
raise ManifestParseError('invalid clone-depth %s in %s' %
(clone_depth, self.manifestFile))
upstream = node.getAttribute('upstream')
groups = ''
@ -692,6 +702,7 @@ class XmlManifest(object):
groups = groups,
sync_c = sync_c,
sync_s = sync_s,
clone_depth = clone_depth,
upstream = upstream,
parent = parent)