info: print superproject revision

Bug: 416589884
Change-Id: I5d1c709518d76d777a7f07c4c774569773c5a265
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/478205
Lint: Scott Lee <ddoman@google.com>
Tested-by: Scott Lee <ddoman@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
Commit-Queue: Scott Lee <ddoman@google.com>
diff --git a/git_superproject.py b/git_superproject.py
index aba836a..a557879 100644
--- a/git_superproject.py
+++ b/git_superproject.py
@@ -130,6 +130,29 @@
         self._print_messages = value
 
     @property
+    def commit_id(self):
+        """Returns the commit ID of the superproject checkout."""
+        cmd = ["rev-parse", self.revision]
+        p = GitCommand(
+            None,  # project
+            cmd,
+            gitdir=self._work_git,
+            bare=True,
+            capture_stdout=True,
+            capture_stderr=True,
+        )
+        retval = p.Wait()
+        if retval != 0:
+            self._LogWarning(
+                "git rev-parse call failed, command: git {}, "
+                "return code: {}, stderr: {}",
+                cmd,
+                p.stdwerr,
+            )
+            return None
+        return p.stdout
+
+    @property
     def project_commit_ids(self):
         """Returns a dictionary of projects and their commit ids."""
         return self._project_commit_ids
@@ -276,7 +299,7 @@
         Works only in git repositories.
 
         Returns:
-            data: data returned from 'git ls-tree ...' instead of None.
+            data: data returned from 'git ls-tree ...'. None on error.
         """
         if not os.path.exists(self._work_git):
             self._LogWarning(
@@ -306,6 +329,7 @@
                 retval,
                 p.stderr,
             )
+            return None
         return data
 
     def Sync(self, git_event_log):
diff --git a/subcmds/info.py b/subcmds/info.py
index f8c2b1e..2fbdae0 100644
--- a/subcmds/info.py
+++ b/subcmds/info.py
@@ -102,6 +102,10 @@
         self.heading("Manifest groups: ")
         self.headtext(manifestGroups)
         self.out.nl()
+        sp = self.manifest.superproject
+        srev = sp.commit_id if sp and sp.commit_id else "None"
+        self.heading("Superproject revision: ")
+        self.headtext(srev)
 
         self.printSeparator()