git cl: safe fallback for Gerrit RPCs even if gerrit project is unknown.

R=ehmaldonado

Bug: 876910
Change-Id: I258efa0a95f20b80819bc89cccfb5e0a29e09d5c
Reviewed-on: https://chromium-review.googlesource.com/1188989
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
diff --git a/git_cl.py b/git_cl.py
index 36c6889..e3b868f 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -2405,10 +2405,12 @@
         self._gerrit_server = 'https://%s' % self._gerrit_host
     return self._gerrit_server
 
-  def _GetGerritProject(self, remote_url=None):
+  def _GetGerritProject(self):
     """Returns Gerrit project name based on remote git URL."""
+    remote_url = self.GetRemoteUrl()
     if remote_url is None:
-      remote_url = self.GetRemoteUrl()
+      logging.warn('can\'t detect Gerrit project.')
+      return None
     project = urlparse.urlparse(remote_url).path.strip('/')
     if project.endswith('.git'):
       project = project[:-len('.git')]
@@ -2426,9 +2428,13 @@
     """Handy method for gerrit_util.ChangeIdentifier for a given CL.
 
     Not to be confused by value of "Change-Id:" footer.
+    If Gerrit project can be determined, this will speed up Gerrit HTTP API RPC.
     """
-    return gerrit_util.ChangeIdentifier(
-        self._GetGerritProject(), self.GetIssue())
+    project = self._GetGerritProject()
+    if project:
+      return gerrit_util.ChangeIdentifier(project, self.GetIssue())
+    # Fall back on still unique, but less efficient change number.
+    return str(self.GetIssue())
 
   @classmethod
   def IssueConfigKey(cls):