manifest: Support a default upstream value

It's convenient to set upstream for all projects in a manifest instead of
repeating the same value for each project.

Change-Id: I946b1de4efb01b351c332dfad108fa7d4f443cba
This commit is contained in:
Nasser Grainawi 2018-05-04 12:53:29 -06:00
parent 8d4b106642
commit da40341a3e
2 changed files with 14 additions and 2 deletions

View File

@ -44,6 +44,7 @@ following DTD:
<!ATTLIST default remote IDREF #IMPLIED> <!ATTLIST default remote IDREF #IMPLIED>
<!ATTLIST default revision CDATA #IMPLIED> <!ATTLIST default revision CDATA #IMPLIED>
<!ATTLIST default dest-branch CDATA #IMPLIED> <!ATTLIST default dest-branch CDATA #IMPLIED>
<!ATTLIST default upstream CDATA #IMPLIED>
<!ATTLIST default sync-j CDATA #IMPLIED> <!ATTLIST default sync-j CDATA #IMPLIED>
<!ATTLIST default sync-c CDATA #IMPLIED> <!ATTLIST default sync-c CDATA #IMPLIED>
<!ATTLIST default sync-s CDATA #IMPLIED> <!ATTLIST default sync-s CDATA #IMPLIED>
@ -164,6 +165,11 @@ Project elements not setting their own `dest-branch` will inherit
this value. If this value is not set, projects will use `revision` this value. If this value is not set, projects will use `revision`
by default instead. by default instead.
Attribute `upstream`: Name of the Git ref 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. Project elements
not setting their own `upstream` will inherit this value.
Attribute `sync-j`: Number of parallel jobs to use when synching. Attribute `sync-j`: Number of parallel jobs to use when synching.
Attribute `sync-c`: Set to true to only sync the given Git Attribute `sync-c`: Set to true to only sync the given Git

View File

@ -59,6 +59,7 @@ class _Default(object):
revisionExpr = None revisionExpr = None
destBranchExpr = None destBranchExpr = None
upstreamExpr = None
remote = None remote = None
sync_j = 1 sync_j = 1
sync_c = False sync_c = False
@ -230,6 +231,9 @@ class XmlManifest(object):
if d.destBranchExpr: if d.destBranchExpr:
have_default = True have_default = True
e.setAttribute('dest-branch', d.destBranchExpr) e.setAttribute('dest-branch', d.destBranchExpr)
if d.upstreamExpr:
have_default = True
e.setAttribute('upstream', d.upstreamExpr)
if d.sync_j > 1: if d.sync_j > 1:
have_default = True have_default = True
e.setAttribute('sync-j', '%d' % d.sync_j) e.setAttribute('sync-j', '%d' % d.sync_j)
@ -295,7 +299,8 @@ class XmlManifest(object):
revision = self.remotes[p.remote.orig_name].revision or d.revisionExpr revision = self.remotes[p.remote.orig_name].revision or d.revisionExpr
if not revision or revision != p.revisionExpr: if not revision or revision != p.revisionExpr:
e.setAttribute('revision', p.revisionExpr) e.setAttribute('revision', p.revisionExpr)
if p.upstream and p.upstream != p.revisionExpr: if (p.upstream and (p.upstream != p.revisionExpr or
p.upstream != d.upstreamExpr)):
e.setAttribute('upstream', p.upstream) e.setAttribute('upstream', p.upstream)
if p.dest_branch and p.dest_branch != d.destBranchExpr: if p.dest_branch and p.dest_branch != d.destBranchExpr:
@ -694,6 +699,7 @@ class XmlManifest(object):
d.revisionExpr = None d.revisionExpr = None
d.destBranchExpr = node.getAttribute('dest-branch') or None d.destBranchExpr = node.getAttribute('dest-branch') or None
d.upstreamExpr = node.getAttribute('upstream') or None
sync_j = node.getAttribute('sync-j') sync_j = node.getAttribute('sync-j')
if sync_j == '' or sync_j is None: if sync_j == '' or sync_j is None:
@ -830,7 +836,7 @@ class XmlManifest(object):
dest_branch = node.getAttribute('dest-branch') or self._default.destBranchExpr dest_branch = node.getAttribute('dest-branch') or self._default.destBranchExpr
upstream = node.getAttribute('upstream') upstream = node.getAttribute('upstream') or self._default.upstreamExpr
groups = '' groups = ''
if node.hasAttribute('groups'): if node.hasAttribute('groups'):