Merge "Add manifest groups to the output of `info`"
diff --git a/manifest_xml.py b/manifest_xml.py
index 07f0c66..50417c6 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -94,6 +94,7 @@
     self.topdir = os.path.dirname(self.repodir)
     self.manifestFile = os.path.join(self.repodir, MANIFEST_FILE_NAME)
     self.globalConfig = GitConfig.ForUser()
+    self.localManifestWarning = False
 
     self.repoProject = MetaProject(self, 'repo',
       gitdir   = os.path.join(repodir, 'repo/.git'),
@@ -335,9 +336,11 @@
 
       local = os.path.join(self.repodir, LOCAL_MANIFEST_NAME)
       if os.path.exists(local):
-        print('warning: %s is deprecated; put local manifests in `%s` instead'
-              % (LOCAL_MANIFEST_NAME, os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME)),
-              file=sys.stderr)
+        if not self.localManifestWarning:
+          self.localManifestWarning = True
+          print('warning: %s is deprecated; put local manifests in `%s` instead'
+                % (LOCAL_MANIFEST_NAME, os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME)),
+                file=sys.stderr)
         nodes.append(self._ParseManifestXml(local, self.repodir))
 
       local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
diff --git a/subcmds/cherry_pick.py b/subcmds/cherry_pick.py
index 01b97e0..520e4c3 100644
--- a/subcmds/cherry_pick.py
+++ b/subcmds/cherry_pick.py
@@ -81,7 +81,7 @@
         sys.exit(1)
 
     else:
-      print('NOTE: When committing (please see above) and editing the commit'
+      print('NOTE: When committing (please see above) and editing the commit '
             'message, please remove the old Change-Id-line and add:')
       print(self._GetReference(sha1), file=sys.stderr)
       print(file=sys.stderr)
diff --git a/subcmds/help.py b/subcmds/help.py
index 15aab7f..7842882 100644
--- a/subcmds/help.py
+++ b/subcmds/help.py
@@ -49,7 +49,7 @@
       except AttributeError:
         summary = ''
       print(fmt % (name, summary))
-    print("See 'repo help <command>' for more information on a"
+    print("See 'repo help <command>' for more information on a "
           'specific command.')
 
   def _PrintCommonCommands(self):
diff --git a/subcmds/rebase.py b/subcmds/rebase.py
index 06cda22..b9a7774 100644
--- a/subcmds/rebase.py
+++ b/subcmds/rebase.py
@@ -68,7 +68,7 @@
       cb = project.CurrentBranch
       if not cb:
         if one_project:
-          print("error: project %s has a detatched HEAD" % project.relpath,
+          print("error: project %s has a detached HEAD" % project.relpath,
                 file=sys.stderr)
           return -1
         # ignore branches with detatched HEADs
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 5c369a7..6c903ff 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -406,7 +406,7 @@
                            groups = None)
 
             if project.IsDirty():
-              print('error: Cannot remove project "%s": uncommitted changes'
+              print('error: Cannot remove project "%s": uncommitted changes '
                     'are present' % project.relpath, file=sys.stderr)
               print('       commit changes, then run sync again',
                     file=sys.stderr)
@@ -466,7 +466,7 @@
 
     if opt.smart_sync or opt.smart_tag:
       if not self.manifest.manifest_server:
-        print('error: cannot smart sync: no manifest server defined in'
+        print('error: cannot smart sync: no manifest server defined in '
               'manifest', file=sys.stderr)
         sys.exit(1)
 
diff --git a/subcmds/upload.py b/subcmds/upload.py
index e314032..48ee685 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -27,11 +27,11 @@
 
 def _ConfirmManyUploads(multiple_branches=False):
   if multiple_branches:
-    print('ATTENTION: One or more branches has an unusually high number'
+    print('ATTENTION: One or more branches has an unusually high number '
           'of commits.')
   else:
     print('ATTENTION: You are uploading an unusually high number of commits.')
-  print('YOU PROBABLY DO NOT MEAN TO DO THIS. (Did you rebase across'
+  print('YOU PROBABLY DO NOT MEAN TO DO THIS. (Did you rebase across '
         'branches?)')
   answer = raw_input("If you are sure you intend to do this, type 'yes': ").strip()
   return answer == "yes"