Chromium Code Reviews| Index: git_rebase_update.py |
| diff --git a/git_rebase_update.py b/git_rebase_update.py |
| index 09eaffa0f8a5da76a58b5d46bc5a13ecaf844e30..ca71922d81900ff17734ab0d982eb51ec5a7c3c1 100755 |
| --- a/git_rebase_update.py |
| +++ b/git_rebase_update.py |
| @@ -13,6 +13,7 @@ import logging |
| import sys |
| import textwrap |
| +from fnmatch import fnmatch |
| from pprint import pformat |
| import git_common as git |
| @@ -41,15 +42,23 @@ def fetch_remotes(branch_tree): |
| fetch_tags = False |
| remotes = set() |
| tag_set = git.tags() |
| + fetchspec_map = {} |
| + all_fetchspec_configs = git.run( |
| + 'config', '--get-regexp', r'remote\..*\.fetch') |
| + for fetchspec_config in all_fetchspec_configs.splitlines(): |
|
iannucci
2014/09/24 08:55:00
there may be an extra newline at the end... I'd do
szager1
2014/09/24 17:23:11
Done.
|
| + key, _, fetchspec = fetchspec_config.partition(' ') |
| + dest_spec = fetchspec.partition(':')[2] |
|
iannucci
2014/09/24 08:55:00
nit: imo split is clearer.
szager1
2014/09/24 17:23:11
meh, the thing I like about partition is that it's
|
| + 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: |