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 @@
   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 @@
       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 @@
       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 @@
     """
     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 @@
       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
