mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-06-26 20:17:52 +00:00
superproject: Don't update the commit ids of projects if remote is different.
1) Skip setting the revision id (commit id) for the projects whose remote doesn't match superproject's remote. 2) exp-superproject/superproject_override.xml includes local_manfiest's projects. When we load this XML, don't reload projects from local.xml (otherwise we will get duplicate projects errors). Tested the code with the following commands. $ ./run_tests -v + Test with local.xml $ repo_dev init -u sso://android.git.corp.google.com/platform/manifest -b master --use-superproject --partial-clone --clone-filter=blob:limit=10M && mkdir -p .repo/local_manifests && (gcertstatus -quiet=true || gcert) && ln -s /google/src/head/depot/google3/wireless/android/build_tools/aosp/manifests/mirror-aosp-master-with-vendor/local.xml .repo/local_manifests/local.xml $ repo_dev sync -c -j8 + Test without local.xml $ repo_dev init -u sso://android.git.corp.google.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M --repo-rev=main --use-superproject $ repo_dev sync -c -j8 Bug: [google internal] b/186395810 Change-Id: I4e9d4ac2d94a9fc0cef0ccd787b6310758009e86 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/304882 Tested-by: Raman Tenneti <rtenneti@google.com> Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
@ -277,7 +277,7 @@ later is required to fix a server side protocol bug.
|
||||
"""Returns True if current-branch or use-superproject options are enabled."""
|
||||
return opt.current_branch_only or self._UseSuperproject(opt)
|
||||
|
||||
def _UpdateProjectsRevisionId(self, opt, args):
|
||||
def _UpdateProjectsRevisionId(self, opt, args, load_local_manifests):
|
||||
"""Update revisionId of every project with the SHA from superproject.
|
||||
|
||||
This function updates each project's revisionId with SHA from superproject.
|
||||
@ -287,6 +287,7 @@ later is required to fix a server side protocol bug.
|
||||
opt: Program options returned from optparse. See _Options().
|
||||
args: Arguments to pass to GetProjects. See the GetProjects
|
||||
docstring for details.
|
||||
load_local_manifests: Whether to load local manifests.
|
||||
|
||||
Returns:
|
||||
Returns path to the overriding manifest file.
|
||||
@ -302,7 +303,7 @@ later is required to fix a server side protocol bug.
|
||||
print('error: Update of revsionId from superproject has failed',
|
||||
file=sys.stderr)
|
||||
sys.exit(1)
|
||||
self._ReloadManifest(manifest_path)
|
||||
self._ReloadManifest(manifest_path, load_local_manifests)
|
||||
return manifest_path
|
||||
|
||||
def _FetchProjectList(self, opt, projects):
|
||||
@ -565,10 +566,18 @@ later is required to fix a server side protocol bug.
|
||||
t.join()
|
||||
pm.end()
|
||||
|
||||
def _ReloadManifest(self, manifest_name=None):
|
||||
def _ReloadManifest(self, manifest_name=None, load_local_manifests=True):
|
||||
"""Reload the manfiest from the file specified by the |manifest_name|.
|
||||
|
||||
It unloads the manifest if |manifest_name| is None.
|
||||
|
||||
Args:
|
||||
manifest_name: Manifest file to be reloaded.
|
||||
load_local_manifests: Whether to load local manifests.
|
||||
"""
|
||||
if manifest_name:
|
||||
# Override calls _Unload already
|
||||
self.manifest.Override(manifest_name)
|
||||
self.manifest.Override(manifest_name, load_local_manifests=load_local_manifests)
|
||||
else:
|
||||
self.manifest._Unload()
|
||||
|
||||
@ -857,8 +866,9 @@ later is required to fix a server side protocol bug.
|
||||
else:
|
||||
self._UpdateManifestProject(opt, mp, manifest_name)
|
||||
|
||||
load_local_manifests = not self.manifest.HasLocalManifests
|
||||
if self._UseSuperproject(opt):
|
||||
manifest_name = self._UpdateProjectsRevisionId(opt, args)
|
||||
manifest_name = self._UpdateProjectsRevisionId(opt, args, load_local_manifests)
|
||||
|
||||
if self.gitc_manifest:
|
||||
gitc_manifest_projects = self.GetProjects(args,
|
||||
@ -926,7 +936,7 @@ later is required to fix a server side protocol bug.
|
||||
# Iteratively fetch missing and/or nested unregistered submodules
|
||||
previously_missing_set = set()
|
||||
while True:
|
||||
self._ReloadManifest(manifest_name)
|
||||
self._ReloadManifest(manifest_name, load_local_manifests)
|
||||
all_projects = self.GetProjects(args,
|
||||
missing_ok=True,
|
||||
submodules_ok=opt.fetch_submodules)
|
||||
|
Reference in New Issue
Block a user