mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
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:
parent
04d84a23fd
commit
ede7f12d4a
@ -56,6 +56,7 @@ following DTD:
|
||||
<!ATTLIST project sync-c CDATA #IMPLIED>
|
||||
<!ATTLIST project sync-s CDATA #IMPLIED>
|
||||
<!ATTLIST project upstream CDATA #IMPLIED>
|
||||
<!ATTLIST project clone-depth CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT annotation (EMPTY)>
|
||||
<!ATTLIST annotation name CDATA #REQUIRED>
|
||||
@ -222,6 +223,10 @@ Attribute `upstream`: Name of the Git branch in which a sha1
|
||||
can be found. Used when syncing a revision locked manifest in
|
||||
-c mode to avoid having to sync the entire ref space.
|
||||
|
||||
Attribute `clone-depth`: Set the depth to use when fetching this
|
||||
project. If specified, this value will override any value given
|
||||
to repo init with the --depth option on the command line.
|
||||
|
||||
Element annotation
|
||||
------------------
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -488,6 +488,7 @@ class Project(object):
|
||||
groups = None,
|
||||
sync_c = False,
|
||||
sync_s = False,
|
||||
clone_depth = None,
|
||||
upstream = None,
|
||||
parent = None,
|
||||
is_derived = False):
|
||||
@ -533,6 +534,7 @@ class Project(object):
|
||||
self.groups = groups
|
||||
self.sync_c = sync_c
|
||||
self.sync_s = sync_s
|
||||
self.clone_depth = clone_depth
|
||||
self.upstream = upstream
|
||||
self.parent = parent
|
||||
self.is_derived = is_derived
|
||||
@ -1645,6 +1647,9 @@ class Project(object):
|
||||
|
||||
# The --depth option only affects the initial fetch; after that we'll do
|
||||
# full fetches of changes.
|
||||
if self.clone_depth:
|
||||
depth = self.clone_depth
|
||||
else:
|
||||
depth = self.manifest.manifestProject.config.GetString('repo.depth')
|
||||
if depth and initial:
|
||||
cmd.append('--depth=%s' % depth)
|
||||
@ -1705,7 +1710,7 @@ class Project(object):
|
||||
return ok
|
||||
|
||||
def _ApplyCloneBundle(self, initial=False, quiet=False):
|
||||
if initial and self.manifest.manifestProject.config.GetString('repo.depth'):
|
||||
if initial and (self.manifest.manifestProject.config.GetString('repo.depth') or self.clone_depth):
|
||||
return False
|
||||
|
||||
remote = self.GetRemote(self.remote.name)
|
||||
|
Loading…
Reference in New Issue
Block a user