mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
manifest_xml: Add Load and Unload methods
- do not call the internal method from subcmds/sync.py. - use the correct default groups for submanifests. - only sync the superproject when we are told to. Change-Id: I81e4025058f1ee564732b9e17aecc522f6b5f626 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/334639 Reviewed-by: Mike Frysinger <vapier@google.com> Reviewed-by: Raman Tenneti <rtenneti@google.com> Tested-by: LaMont Jones <lamontjones@google.com>
This commit is contained in:
parent
55ee304304
commit
a2ff20dd20
@ -376,7 +376,7 @@ class XmlManifest(object):
|
|||||||
if os.path.exists(mp.gitdir) and mp.use_worktree:
|
if os.path.exists(mp.gitdir) and mp.use_worktree:
|
||||||
mp.use_git_worktrees = True
|
mp.use_git_worktrees = True
|
||||||
|
|
||||||
self._Unload()
|
self.Unload()
|
||||||
|
|
||||||
def Override(self, name, load_local_manifests=True):
|
def Override(self, name, load_local_manifests=True):
|
||||||
"""Use a different manifest, just for the current instantiation.
|
"""Use a different manifest, just for the current instantiation.
|
||||||
@ -399,7 +399,7 @@ class XmlManifest(object):
|
|||||||
try:
|
try:
|
||||||
self._load_local_manifests = load_local_manifests
|
self._load_local_manifests = load_local_manifests
|
||||||
self.manifestFile = path
|
self.manifestFile = path
|
||||||
self._Unload()
|
self.Unload()
|
||||||
self._Load()
|
self._Load()
|
||||||
finally:
|
finally:
|
||||||
self.manifestFile = old
|
self.manifestFile = old
|
||||||
@ -970,7 +970,13 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
|||||||
groups = self.GetDefaultGroupsStr()
|
groups = self.GetDefaultGroupsStr()
|
||||||
return groups
|
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._loaded = False
|
||||||
self._projects = {}
|
self._projects = {}
|
||||||
self._paths = {}
|
self._paths = {}
|
||||||
@ -984,6 +990,11 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
|||||||
self.branch = None
|
self.branch = None
|
||||||
self._manifest_server = 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):
|
def _Load(self, initial_client=None, submanifest_depth=0):
|
||||||
if submanifest_depth > MAX_SUBMANIFEST_DEPTH:
|
if submanifest_depth > MAX_SUBMANIFEST_DEPTH:
|
||||||
raise ManifestParseError('maximum submanifest depth %d exceeded.' %
|
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:
|
except ManifestParseError as e:
|
||||||
# There was a problem parsing, unload ourselves in case they catch
|
# There was a problem parsing, unload ourselves in case they catch
|
||||||
# this error and try again later, we will show the correct error
|
# this error and try again later, we will show the correct error
|
||||||
self._Unload()
|
self.Unload()
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
if self.IsMirror:
|
if self.IsMirror:
|
||||||
|
19
project.py
19
project.py
@ -3491,6 +3491,8 @@ class ManifestProject(MetaProject):
|
|||||||
"""
|
"""
|
||||||
assert _kwargs_only == (), 'Sync only accepts keyword arguments.'
|
assert _kwargs_only == (), 'Sync only accepts keyword arguments.'
|
||||||
|
|
||||||
|
groups = groups or 'default'
|
||||||
|
platform = platform or 'auto'
|
||||||
git_event_log = git_event_log or EventLog()
|
git_event_log = git_event_log or EventLog()
|
||||||
if outer_manifest and self.manifest.is_submanifest:
|
if outer_manifest and self.manifest.is_submanifest:
|
||||||
# In a multi-manifest checkout, use the outer manifest unless we are told
|
# In a multi-manifest checkout, use the outer manifest unless we are told
|
||||||
@ -3783,17 +3785,16 @@ class ManifestProject(MetaProject):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Lastly, clone the superproject(s).
|
# Lastly, clone the superproject(s).
|
||||||
if outer_manifest and not self.manifest.is_submanifest:
|
if self.manifest.manifestProject.use_superproject:
|
||||||
for m in self.manifest.all_manifests:
|
|
||||||
sync_result = Superproject(
|
sync_result = Superproject(
|
||||||
m, m.repodir, git_event_log, quiet=not verbose).Sync()
|
self.manifest, self.manifest.repodir, git_event_log, quiet=not verbose).Sync()
|
||||||
if not sync_result.success:
|
if not sync_result.success:
|
||||||
print(f'warning: git update of superproject for {m.path_prefix} failed, '
|
print('warning: git update of superproject for '
|
||||||
'repo sync will not '
|
f'{self.manifest.path_prefix} failed, repo sync will not use '
|
||||||
'use superproject to fetch source; while this error is not fatal, '
|
'superproject to fetch source; while this error is not fatal, '
|
||||||
'and you can continue to run repo sync, please run repo init with '
|
'and you can continue to run repo sync, please run repo init '
|
||||||
'the --no-use-superproject option to stop seeing this warning',
|
'with the --no-use-superproject option to stop seeing this '
|
||||||
file=sys.stderr)
|
'warning', file=sys.stderr)
|
||||||
if sync_result.fatal and use_superproject is not None:
|
if sync_result.fatal and use_superproject is not None:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -694,10 +694,10 @@ later is required to fix a server side protocol bug.
|
|||||||
load_local_manifests: Whether to load local manifests.
|
load_local_manifests: Whether to load local manifests.
|
||||||
"""
|
"""
|
||||||
if manifest_name:
|
if manifest_name:
|
||||||
# Override calls _Unload already
|
# Override calls Unload already
|
||||||
self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests)
|
self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests)
|
||||||
else:
|
else:
|
||||||
self.manifest._Unload()
|
self.manifest.Unload()
|
||||||
|
|
||||||
def UpdateProjectList(self, opt):
|
def UpdateProjectList(self, opt):
|
||||||
new_project_paths = []
|
new_project_paths = []
|
||||||
|
Loading…
Reference in New Issue
Block a user