diff options
-rw-r--r-- | manifest_xml.py | 19 | ||||
-rw-r--r-- | project.py | 27 | ||||
-rw-r--r-- | subcmds/sync.py | 4 |
3 files changed, 31 insertions, 19 deletions
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): | |||
376 | if os.path.exists(mp.gitdir) and mp.use_worktree: | 376 | if os.path.exists(mp.gitdir) and mp.use_worktree: |
377 | mp.use_git_worktrees = True | 377 | mp.use_git_worktrees = True |
378 | 378 | ||
379 | self._Unload() | 379 | self.Unload() |
380 | 380 | ||
381 | def Override(self, name, load_local_manifests=True): | 381 | def Override(self, name, load_local_manifests=True): |
382 | """Use a different manifest, just for the current instantiation. | 382 | """Use a different manifest, just for the current instantiation. |
@@ -399,7 +399,7 @@ class XmlManifest(object): | |||
399 | try: | 399 | try: |
400 | self._load_local_manifests = load_local_manifests | 400 | self._load_local_manifests = load_local_manifests |
401 | self.manifestFile = path | 401 | self.manifestFile = path |
402 | self._Unload() | 402 | self.Unload() |
403 | self._Load() | 403 | self._Load() |
404 | finally: | 404 | finally: |
405 | self.manifestFile = old | 405 | self.manifestFile = old |
@@ -970,7 +970,13 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
970 | groups = self.GetDefaultGroupsStr() | 970 | groups = self.GetDefaultGroupsStr() |
971 | return groups | 971 | return groups |
972 | 972 | ||
973 | def _Unload(self): | 973 | def Unload(self): |
974 | """Unload the manifest. | ||
975 | |||
976 | If the manifest files have been changed since Load() was called, this will | ||
977 | cause the new/updated manifest to be used. | ||
978 | |||
979 | """ | ||
974 | self._loaded = False | 980 | self._loaded = False |
975 | self._projects = {} | 981 | self._projects = {} |
976 | self._paths = {} | 982 | self._paths = {} |
@@ -984,6 +990,11 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
984 | self.branch = None | 990 | self.branch = None |
985 | self._manifest_server = None | 991 | self._manifest_server = None |
986 | 992 | ||
993 | def Load(self): | ||
994 | """Read the manifest into memory.""" | ||
995 | # Do not expose internal arguments. | ||
996 | self._Load() | ||
997 | |||
987 | def _Load(self, initial_client=None, submanifest_depth=0): | 998 | def _Load(self, initial_client=None, submanifest_depth=0): |
988 | if submanifest_depth > MAX_SUBMANIFEST_DEPTH: | 999 | if submanifest_depth > MAX_SUBMANIFEST_DEPTH: |
989 | raise ManifestParseError('maximum submanifest depth %d exceeded.' % | 1000 | raise ManifestParseError('maximum submanifest depth %d exceeded.' % |
@@ -1030,7 +1041,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
1030 | except ManifestParseError as e: | 1041 | except ManifestParseError as e: |
1031 | # There was a problem parsing, unload ourselves in case they catch | 1042 | # There was a problem parsing, unload ourselves in case they catch |
1032 | # this error and try again later, we will show the correct error | 1043 | # this error and try again later, we will show the correct error |
1033 | self._Unload() | 1044 | self.Unload() |
1034 | raise e | 1045 | raise e |
1035 | 1046 | ||
1036 | if self.IsMirror: | 1047 | if self.IsMirror: |
@@ -3491,6 +3491,8 @@ class ManifestProject(MetaProject): | |||
3491 | """ | 3491 | """ |
3492 | assert _kwargs_only == (), 'Sync only accepts keyword arguments.' | 3492 | assert _kwargs_only == (), 'Sync only accepts keyword arguments.' |
3493 | 3493 | ||
3494 | groups = groups or 'default' | ||
3495 | platform = platform or 'auto' | ||
3494 | git_event_log = git_event_log or EventLog() | 3496 | git_event_log = git_event_log or EventLog() |
3495 | if outer_manifest and self.manifest.is_submanifest: | 3497 | if outer_manifest and self.manifest.is_submanifest: |
3496 | # In a multi-manifest checkout, use the outer manifest unless we are told | 3498 | # In a multi-manifest checkout, use the outer manifest unless we are told |
@@ -3783,19 +3785,18 @@ class ManifestProject(MetaProject): | |||
3783 | ) | 3785 | ) |
3784 | 3786 | ||
3785 | # Lastly, clone the superproject(s). | 3787 | # Lastly, clone the superproject(s). |
3786 | if outer_manifest and not self.manifest.is_submanifest: | 3788 | if self.manifest.manifestProject.use_superproject: |
3787 | for m in self.manifest.all_manifests: | 3789 | sync_result = Superproject( |
3788 | sync_result = Superproject( | 3790 | self.manifest, self.manifest.repodir, git_event_log, quiet=not verbose).Sync() |
3789 | m, m.repodir, git_event_log, quiet=not verbose).Sync() | 3791 | if not sync_result.success: |
3790 | if not sync_result.success: | 3792 | print('warning: git update of superproject for ' |
3791 | print(f'warning: git update of superproject for {m.path_prefix} failed, ' | 3793 | f'{self.manifest.path_prefix} failed, repo sync will not use ' |
3792 | 'repo sync will not ' | 3794 | 'superproject to fetch source; while this error is not fatal, ' |
3793 | 'use superproject to fetch source; while this error is not fatal, ' | 3795 | 'and you can continue to run repo sync, please run repo init ' |
3794 | 'and you can continue to run repo sync, please run repo init with ' | 3796 | 'with the --no-use-superproject option to stop seeing this ' |
3795 | 'the --no-use-superproject option to stop seeing this warning', | 3797 | 'warning', file=sys.stderr) |
3796 | file=sys.stderr) | 3798 | if sync_result.fatal and use_superproject is not None: |
3797 | if sync_result.fatal and use_superproject is not None: | 3799 | return False |
3798 | return False | ||
3799 | 3800 | ||
3800 | return True | 3801 | return True |
3801 | 3802 | ||
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. | |||
694 | load_local_manifests: Whether to load local manifests. | 694 | load_local_manifests: Whether to load local manifests. |
695 | """ | 695 | """ |
696 | if manifest_name: | 696 | if manifest_name: |
697 | # Override calls _Unload already | 697 | # Override calls Unload already |
698 | self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests) | 698 | self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests) |
699 | else: | 699 | else: |
700 | self.manifest._Unload() | 700 | self.manifest.Unload() |
701 | 701 | ||
702 | def UpdateProjectList(self, opt): | 702 | def UpdateProjectList(self, opt): |
703 | new_project_paths = [] | 703 | new_project_paths = [] |