diff --git a/manifest_xml.py b/manifest_xml.py index 02f09db9..8718dc54 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -376,7 +376,7 @@ class XmlManifest(object): if os.path.exists(mp.gitdir) and mp.use_worktree: mp.use_git_worktrees = True - self._Unload() + self.Unload() def Override(self, name, load_local_manifests=True): """Use a different manifest, just for the current instantiation. @@ -399,7 +399,7 @@ class XmlManifest(object): try: self._load_local_manifests = load_local_manifests self.manifestFile = path - self._Unload() + self.Unload() self._Load() finally: self.manifestFile = old @@ -970,7 +970,13 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md groups = self.GetDefaultGroupsStr() return groups - def _Unload(self): + def Unload(self): + """Unload the manifest. + + If the manifest files have been changed since Load() was called, this will + cause the new/updated manifest to be used. + + """ self._loaded = False self._projects = {} self._paths = {} @@ -984,6 +990,11 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md self.branch = None self._manifest_server = None + def Load(self): + """Read the manifest into memory.""" + # Do not expose internal arguments. + self._Load() + def _Load(self, initial_client=None, submanifest_depth=0): if submanifest_depth > MAX_SUBMANIFEST_DEPTH: raise ManifestParseError('maximum submanifest depth %d exceeded.' % @@ -1030,7 +1041,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md except ManifestParseError as e: # There was a problem parsing, unload ourselves in case they catch # this error and try again later, we will show the correct error - self._Unload() + self.Unload() raise e if self.IsMirror: diff --git a/project.py b/project.py index a60a8582..b8d834aa 100644 --- a/project.py +++ b/project.py @@ -3491,6 +3491,8 @@ class ManifestProject(MetaProject): """ assert _kwargs_only == (), 'Sync only accepts keyword arguments.' + groups = groups or 'default' + platform = platform or 'auto' git_event_log = git_event_log or EventLog() if outer_manifest and self.manifest.is_submanifest: # In a multi-manifest checkout, use the outer manifest unless we are told @@ -3783,19 +3785,18 @@ class ManifestProject(MetaProject): ) # Lastly, clone the superproject(s). - if outer_manifest and not self.manifest.is_submanifest: - for m in self.manifest.all_manifests: - sync_result = Superproject( - m, m.repodir, git_event_log, quiet=not verbose).Sync() - if not sync_result.success: - print(f'warning: git update of superproject for {m.path_prefix} failed, ' - 'repo sync will not ' - 'use superproject to fetch source; while this error is not fatal, ' - 'and you can continue to run repo sync, please run repo init with ' - 'the --no-use-superproject option to stop seeing this warning', - file=sys.stderr) - if sync_result.fatal and use_superproject is not None: - return False + if self.manifest.manifestProject.use_superproject: + sync_result = Superproject( + self.manifest, self.manifest.repodir, git_event_log, quiet=not verbose).Sync() + if not sync_result.success: + print('warning: git update of superproject for ' + f'{self.manifest.path_prefix} failed, repo sync will not use ' + 'superproject to fetch source; while this error is not fatal, ' + 'and you can continue to run repo sync, please run repo init ' + 'with the --no-use-superproject option to stop seeing this ' + 'warning', file=sys.stderr) + if sync_result.fatal and use_superproject is not None: + return False return True diff --git a/subcmds/sync.py b/subcmds/sync.py index c1655159..baee6b23 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -694,10 +694,10 @@ later is required to fix a server side protocol bug. load_local_manifests: Whether to load local manifests. """ if manifest_name: - # Override calls _Unload already + # Override calls Unload already self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests) else: - self.manifest._Unload() + self.manifest.Unload() def UpdateProjectList(self, opt): new_project_paths = []