diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt index 764e41eb..53789651 100644 --- a/docs/manifest-format.txt +++ b/docs/manifest-format.txt @@ -39,6 +39,7 @@ following DTD: + @@ -49,6 +50,7 @@ following DTD: + diff --git a/manifest_xml.py b/manifest_xml.py index d20eac2a..ca65e33f 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -35,6 +35,7 @@ class _Default(object): revisionExpr = None remote = None sync_j = 1 + sync_c = False class _XmlRemote(object): def __init__(self, @@ -159,6 +160,9 @@ class XmlManifest(object): if d.sync_j > 1: have_default = True e.setAttribute('sync-j', '%d' % d.sync_j) + if d.sync_c: + have_default = True + e.setAttribute('sync-c', 'true') if have_default: root.appendChild(e) root.appendChild(doc.createTextNode('')) @@ -212,6 +216,9 @@ class XmlManifest(object): ae.setAttribute('value', a.value) e.appendChild(ae) + if p.sync_c: + e.setAttribute('sync-c', 'true') + if self._repo_hooks_project: root.appendChild(doc.createTextNode('')) e = doc.createElement('repo-hooks') @@ -444,11 +451,18 @@ class XmlManifest(object): d.revisionExpr = node.getAttribute('revision') if d.revisionExpr == '': d.revisionExpr = None + sync_j = node.getAttribute('sync-j') if sync_j == '' or sync_j is None: d.sync_j = 1 else: d.sync_j = int(sync_j) + + sync_c = node.getAttribute('sync-c') + if not sync_c: + d.sync_c = False + else: + d.sync_c = sync_c.lower() in ("yes", "true", "1") return d def _ParseNotice(self, node): @@ -526,6 +540,12 @@ class XmlManifest(object): else: rebase = rebase.lower() in ("yes", "true", "1") + sync_c = node.getAttribute('sync-c') + if not sync_c: + sync_c = False + else: + sync_c = sync_c.lower() in ("yes", "true", "1") + groups = '' if node.hasAttribute('groups'): groups = node.getAttribute('groups') @@ -550,7 +570,8 @@ class XmlManifest(object): revisionExpr = revisionExpr, revisionId = None, rebase = rebase, - groups = groups) + groups = groups, + sync_c = sync_c) for n in node.childNodes: if n.nodeName == 'copyfile': diff --git a/project.py b/project.py index 2b740007..40f6f317 100644 --- a/project.py +++ b/project.py @@ -510,7 +510,8 @@ class Project(object): revisionExpr, revisionId, rebase = True, - groups = None): + groups = None, + sync_c = False): self.manifest = manifest self.name = name self.remote = remote @@ -531,6 +532,7 @@ class Project(object): self.rebase = rebase self.groups = groups + self.sync_c = sync_c self.snapshots = {} self.copyfiles = [] @@ -964,6 +966,7 @@ class Project(object): and self._ApplyCloneBundle(initial=is_new, quiet=quiet): is_new = False + current_branch_only = current_branch_only or self.sync_c or self.manifest.default.sync_c if not self._RemoteFetch(initial=is_new, quiet=quiet, alt_dir=alt_dir, current_branch_only=current_branch_only): return False