git cl diff: fix regression.

Reported in https://codereview.chromium.org/1852803002/#msg5.
Also some cleanup in nearby code AND fix of the git cl diff's previous behavior that actually updated local branch config with latest *uploaded* CL values. 

BUG=579182
R=machenbach@chromium.org,andybons@chromium.org
CC=servolk@chromium.org

Review URL: https://codereview.chromium.org/1871463003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@299759 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cl.py b/git_cl.py
index 98d9c67..fb12eaf 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -1297,8 +1297,8 @@
 
   def CMDPatchIssue(self, issue_arg, reject, nocommit, directory):
     """Fetches and applies the issue patch from codereview to local branch."""
-    if issue_arg.isdigit():
-      parsed_issue_arg = _RietveldParsedIssueNumberArgument(int(issue_arg))
+    if isinstance(issue_arg, (int, long)) or issue_arg.isdigit():
+      parsed_issue_arg = _ParsedIssueNumberArgument(int(issue_arg))
     else:
       # Assume url.
       parsed_issue_arg = self._codereview_impl.ParseIssueURL(
@@ -1603,7 +1603,8 @@
     if parsed_issue_arg.hostname:
       self._rietveld_server = 'https://%s' % parsed_issue_arg.hostname
 
-    if parsed_issue_arg.patch_url:
+    if (isinstance(parsed_issue_arg, _RietveldParsedIssueNumberArgument) and
+        parsed_issue_arg.patch_url):
       assert parsed_issue_arg.patchset
       patchset = parsed_issue_arg.patchset
       patch_data = urllib2.urlopen(parsed_issue_arg.patch_url).read()
@@ -4316,6 +4317,9 @@
 
   # Create a new branch based on the merge-base
   RunGit(['checkout', '-q', '-b', TMP_BRANCH, base_branch])
+  # Update the cached branch in cl instance, to avoid overwriting original
+  # branch properties.
+  cl.branch = cl.branchref = None
   try:
     rtn = cl.CMDPatchIssue(issue, reject=False, nocommit=False, directory=None)
     if rtn != 0: