From 5fa912b0d148cf92f72640ac7dcff98c5db11853 Mon Sep 17 00:00:00 2001 From: LaMont Jones Date: Thu, 14 Apr 2022 14:41:13 +0000 Subject: [PATCH] Stop passing optparse.Values to git_superproject Make git_superproject independent of the command line by passing the specific value instead of requiring the caller to have an optparse.Values object to pass in. Flag --use-superproject and --archive as incompatible in subcmds/init.py Change-Id: Ied7c874b312e151038df903c8af4328f070f387c Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/335135 Tested-by: LaMont Jones Reviewed-by: Raman Tenneti Reviewed-by: Mike Frysinger --- git_superproject.py | 24 +++++++++++++++++------- subcmds/init.py | 3 +++ subcmds/sync.py | 8 +++++--- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/git_superproject.py b/git_superproject.py index 1293f352..07bc2645 100644 --- a/git_superproject.py +++ b/git_superproject.py @@ -415,16 +415,26 @@ def _UseSuperprojectFromConfiguration(): return False -def PrintMessages(opt, manifest): - """Returns a boolean if error/warning messages are to be printed.""" - return opt.use_superproject is not None or bool(manifest.superproject) +def PrintMessages(use_superproject, manifest): + """Returns a boolean if error/warning messages are to be printed. + + Args: + use_superproject: option value from optparse. + manifest: manifest to use. + """ + return use_superproject is not None or bool(manifest.superproject) -def UseSuperproject(opt, manifest): - """Returns a boolean if use-superproject option is enabled.""" +def UseSuperproject(use_superproject, manifest): + """Returns a boolean if use-superproject option is enabled. - if opt.use_superproject is not None: - return opt.use_superproject + Args: + use_superproject: option value from optparse. + manifest: manifest to use. + """ + + if use_superproject is not None: + return use_superproject else: client_value = manifest.manifestProject.use_superproject if client_value is not None: diff --git a/subcmds/init.py b/subcmds/init.py index 99f30dce..0388f5d1 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -260,6 +260,9 @@ to update the working directory files. if opt.use_superproject is not None: self.OptionParser.error('--mirror and --use-superproject cannot be ' 'used together.') + if opt.archive and opt.use_superproject is not None: + self.OptionParser.error('--archive and --use-superproject cannot be used ' + 'together.') if opt.standalone_manifest and (opt.manifest_branch or opt.manifest_name != 'default.xml'): diff --git a/subcmds/sync.py b/subcmds/sync.py index 4d0a5ec6..3451ab6b 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -286,7 +286,7 @@ later is required to fix a server side protocol bug. True if a superproject is requested, otherwise the value of the current_branch option (True, False or None). """ - return git_superproject.UseSuperproject(opt, self.manifest) or opt.current_branch_only + return git_superproject.UseSuperproject(opt.use_superproject, self.manifest) or opt.current_branch_only def _UpdateProjectsRevisionId(self, opt, args, load_local_manifests, superproject_logging_data): """Update revisionId of every project with the SHA from superproject. @@ -306,7 +306,8 @@ later is required to fix a server side protocol bug. """ superproject = self.manifest.superproject superproject.SetQuiet(opt.quiet) - print_messages = git_superproject.PrintMessages(opt, self.manifest) + print_messages = git_superproject.PrintMessages(opt.use_superproject, + self.manifest) superproject.SetPrintMessages(print_messages) if opt.local_only: manifest_path = superproject.manifest_path @@ -993,7 +994,8 @@ later is required to fix a server side protocol bug. self._UpdateManifestProject(opt, mp, manifest_name) load_local_manifests = not self.manifest.HasLocalManifests - use_superproject = git_superproject.UseSuperproject(opt, self.manifest) + use_superproject = git_superproject.UseSuperproject(opt.use_superproject, + self.manifest) if use_superproject and (self.manifest.IsMirror or self.manifest.IsArchive): # Don't use superproject, because we have no working tree. use_superproject = False