diff --git a/git_superproject.py b/git_superproject.py index 1293f35..07bc264 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 99f30dc..0388f5d 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 4d0a5ec..3451ab6 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