OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # Monkeypatch IMapIterator so that Ctrl-C can kill everything properly. | 5 # Monkeypatch IMapIterator so that Ctrl-C can kill everything properly. |
6 # Derived from https://gist.github.com/aljungberg/626518 | 6 # Derived from https://gist.github.com/aljungberg/626518 |
7 import multiprocessing.pool | 7 import multiprocessing.pool |
8 from multiprocessing.pool import IMapIterator | 8 from multiprocessing.pool import IMapIterator |
9 def wrapper(func): | 9 def wrapper(func): |
10 def wrap(self, timeout=None): | 10 def wrap(self, timeout=None): |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 * 'HEAD' | 490 * 'HEAD' |
491 * 'origin/master' | 491 * 'origin/master' |
492 * 'cool_branch~2' | 492 * 'cool_branch~2' |
493 """ | 493 """ |
494 try: | 494 try: |
495 return map(binascii.unhexlify, hash_multi(*commitrefs)) | 495 return map(binascii.unhexlify, hash_multi(*commitrefs)) |
496 except subprocess2.CalledProcessError: | 496 except subprocess2.CalledProcessError: |
497 raise BadCommitRefException(commitrefs) | 497 raise BadCommitRefException(commitrefs) |
498 | 498 |
499 | 499 |
500 RebaseRet = collections.namedtuple('RebaseRet', 'success message') | 500 RebaseRet = collections.namedtuple('RebaseRet', 'success stdout stderr') |
501 | 501 |
502 | 502 |
503 def rebase(parent, start, branch, abort=False): | 503 def rebase(parent, start, branch, abort=False): |
504 """Rebases |start|..|branch| onto the branch |parent|. | 504 """Rebases |start|..|branch| onto the branch |parent|. |
505 | 505 |
506 Args: | 506 Args: |
507 parent - The new parent ref for the rebased commits. | 507 parent - The new parent ref for the rebased commits. |
508 start - The commit to start from | 508 start - The commit to start from |
509 branch - The branch to rebase | 509 branch - The branch to rebase |
510 abort - If True, will call git-rebase --abort in the event that the rebase | 510 abort - If True, will call git-rebase --abort in the event that the rebase |
511 doesn't complete successfully. | 511 doesn't complete successfully. |
512 | 512 |
513 Returns a namedtuple with fields: | 513 Returns a namedtuple with fields: |
514 success - a boolean indicating that the rebase command completed | 514 success - a boolean indicating that the rebase command completed |
515 successfully. | 515 successfully. |
516 message - if the rebase failed, this contains the stdout of the failed | 516 message - if the rebase failed, this contains the stdout of the failed |
517 rebase. | 517 rebase. |
518 """ | 518 """ |
519 try: | 519 try: |
520 args = ['--onto', parent, start, branch] | 520 args = ['--onto', parent, start, branch] |
521 if TEST_MODE: | 521 if TEST_MODE: |
522 args.insert(0, '--committer-date-is-author-date') | 522 args.insert(0, '--committer-date-is-author-date') |
523 run('rebase', *args) | 523 run('rebase', *args) |
524 return RebaseRet(True, '') | 524 return RebaseRet(True, '', '') |
525 except subprocess2.CalledProcessError as cpe: | 525 except subprocess2.CalledProcessError as cpe: |
526 if abort: | 526 if abort: |
527 run('rebase', '--abort') | 527 run('rebase', '--abort') |
528 return RebaseRet(False, cpe.stdout) | 528 return RebaseRet(False, cpe.stdout, cpe.stderr) |
529 | 529 |
530 | 530 |
531 def remove_merge_base(branch): | 531 def remove_merge_base(branch): |
532 del_branch_config(branch, 'base') | 532 del_branch_config(branch, 'base') |
533 del_branch_config(branch, 'base-upstream') | 533 del_branch_config(branch, 'base-upstream') |
534 | 534 |
535 | 535 |
536 def root(): | 536 def root(): |
537 return config('depot-tools.upstream', 'origin/master') | 537 return config('depot-tools.upstream', 'origin/master') |
538 | 538 |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 hash=branch_hash, upstream=upstream_branch, ahead=ahead, behind=behind) | 761 hash=branch_hash, upstream=upstream_branch, ahead=ahead, behind=behind) |
762 | 762 |
763 # Set None for upstreams which are not branches (e.g empty upstream, remotes | 763 # Set None for upstreams which are not branches (e.g empty upstream, remotes |
764 # and deleted upstream branches). | 764 # and deleted upstream branches). |
765 missing_upstreams = {} | 765 missing_upstreams = {} |
766 for info in info_map.values(): | 766 for info in info_map.values(): |
767 if info.upstream not in info_map and info.upstream not in missing_upstreams: | 767 if info.upstream not in info_map and info.upstream not in missing_upstreams: |
768 missing_upstreams[info.upstream] = None | 768 missing_upstreams[info.upstream] = None |
769 | 769 |
770 return dict(info_map.items() + missing_upstreams.items()) | 770 return dict(info_map.items() + missing_upstreams.items()) |
OLD | NEW |