Fix logic for determing remote name from remote branch.

BUG=413391
R=iannucci@chromium.org,agable@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@292117 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_rebase_update.py b/git_rebase_update.py
index 09eaffa..e5b6d42 100755
--- a/git_rebase_update.py
+++ b/git_rebase_update.py
@@ -13,6 +13,7 @@
 import sys
 import textwrap
 
+from fnmatch import fnmatch
 from pprint import pformat
 
 import git_common as git
@@ -41,15 +42,23 @@
   fetch_tags = False
   remotes = set()
   tag_set = git.tags()
+  fetchspec_map = {}
+  all_fetchspec_configs = git.run(
+      'config', '--get-regexp', r'remote\..*\.fetch').strip()
+  for fetchspec_config in all_fetchspec_configs.splitlines():
+    key, _, fetchspec = fetchspec_config.partition(' ')
+    dest_spec = fetchspec.partition(':')[2]
+    remote_name = key.split('.')[1]
+    fetchspec_map[dest_spec] = remote_name
   for parent in branch_tree.itervalues():
     if parent in tag_set:
       fetch_tags = True
     else:
       full_ref = git.run('rev-parse', '--symbolic-full-name', parent)
-      if full_ref.startswith('refs/remotes'):
-        parts = full_ref.split('/')
-        remote_name = parts[2]
-        remotes.add(remote_name)
+      for dest_spec, remote_name in fetchspec_map.iteritems():
+        if fnmatch(full_ref, dest_spec):
+          remotes.add(remote_name)
+          break
 
   fetch_args = []
   if fetch_tags: