Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> | 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> |
| 7 | 7 |
| 8 """A git-command for integrating reviews on Rietveld.""" | 8 """A git-command for integrating reviews on Rietveld.""" |
| 9 | 9 |
| 10 from distutils.version import LooseVersion | 10 from distutils.version import LooseVersion |
| (...skipping 3523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3534 stdout = RunCommand(command, cwd=top_dir, env=env) | 3534 stdout = RunCommand(command, cwd=top_dir, env=env) |
| 3535 if opts.dry_run and stdout: | 3535 if opts.dry_run and stdout: |
| 3536 return_value = 2 | 3536 return_value = 2 |
| 3537 except dart_format.NotFoundError as e: | 3537 except dart_format.NotFoundError as e: |
| 3538 print ('Unable to check dart code formatting. Dart SDK is not in ' + | 3538 print ('Unable to check dart code formatting. Dart SDK is not in ' + |
| 3539 'this checkout.') | 3539 'this checkout.') |
| 3540 | 3540 |
| 3541 return return_value | 3541 return return_value |
| 3542 | 3542 |
| 3543 | 3543 |
| 3544 @subcommand.usage('<codereview url or issue id>') | |
| 3545 def CMDcheckout(parser, args): | |
| 3546 """Checks out a branch associated with a given open Rietveld issue.""" | |
|
Dirk Pranke
2015/09/22 19:23:17
how do you know that the issue is still open? I'd
scottmg
2015/09/22 19:34:22
When you `git cl land`, branch.<branch>.rietveldis
| |
| 3547 _, args = parser.parse_args(args) | |
| 3548 | |
| 3549 if len(args) != 1: | |
| 3550 parser.print_help() | |
| 3551 return 1 | |
| 3552 | |
| 3553 if re.match(r'\d+', args[0]): | |
| 3554 target_issue = args[0] | |
| 3555 elif args[0].startswith('http'): | |
| 3556 target_issue = re.sub(r'.*/(\d+)/?', r'\1', args[0]) | |
| 3557 else: | |
| 3558 parser.print_help() | |
| 3559 return 1 | |
| 3560 | |
| 3561 key_and_issues = [x.split() for x in RunGit( | |
| 3562 ['config', '--local', '--get-regexp', r'branch\..*\.rietveldissue']) | |
| 3563 .splitlines()] | |
| 3564 branches = [] | |
| 3565 for key, issue in key_and_issues: | |
| 3566 if issue == target_issue: | |
| 3567 branches.append(re.sub(r'branch\.(.*)\.rietveldissue', r'\1', key)) | |
| 3568 | |
| 3569 if len(branches) == 0: | |
| 3570 print 'No branch with open issue found for %s.' % target_issue | |
|
Dirk Pranke
2015/09/22 19:23:17
and reword this message
| |
| 3571 return 1 | |
| 3572 if len(branches) == 1: | |
| 3573 RunGit(['checkout', branches[0]]) | |
| 3574 else: | |
| 3575 print 'Multiple branches match issue %s:' % target_issue | |
| 3576 for i in range(len(branches)): | |
| 3577 print '%d: %s' % (i, branches[i]) | |
| 3578 which = raw_input('Choose by index: ') | |
| 3579 try: | |
| 3580 RunGit(['checkout', branches[int(which)]]) | |
| 3581 except (IndexError, ValueError): | |
| 3582 print 'Invalid selection, not checking out any branch.' | |
| 3583 return 1 | |
| 3584 | |
| 3585 return 0 | |
| 3586 | |
| 3587 | |
| 3544 def CMDlol(parser, args): | 3588 def CMDlol(parser, args): |
| 3545 # This command is intentionally undocumented. | 3589 # This command is intentionally undocumented. |
| 3546 print zlib.decompress(base64.b64decode( | 3590 print zlib.decompress(base64.b64decode( |
| 3547 'eNptkLEOwyAMRHe+wupCIqW57v0Vq84WqWtXyrcXnCBsmgMJ+/SSAxMZgRB6NzE' | 3591 'eNptkLEOwyAMRHe+wupCIqW57v0Vq84WqWtXyrcXnCBsmgMJ+/SSAxMZgRB6NzE' |
| 3548 'E2ObgCKJooYdu4uAQVffUEoE1sRQLxAcqzd7uK2gmStrll1ucV3uZyaY5sXyDd9' | 3592 'E2ObgCKJooYdu4uAQVffUEoE1sRQLxAcqzd7uK2gmStrll1ucV3uZyaY5sXyDd9' |
| 3549 'JAnN+lAXsOMJ90GANAi43mq5/VeeacylKVgi8o6F1SC63FxnagHfJUTfUYdCR/W' | 3593 'JAnN+lAXsOMJ90GANAi43mq5/VeeacylKVgi8o6F1SC63FxnagHfJUTfUYdCR/W' |
| 3550 'Ofe+0dHL7PicpytKP750Fh1q2qnLVof4w8OZWNY')) | 3594 'Ofe+0dHL7PicpytKP750Fh1q2qnLVof4w8OZWNY')) |
| 3551 return 0 | 3595 return 0 |
| 3552 | 3596 |
| 3553 | 3597 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3596 if __name__ == '__main__': | 3640 if __name__ == '__main__': |
| 3597 # These affect sys.stdout so do it outside of main() to simplify mocks in | 3641 # These affect sys.stdout so do it outside of main() to simplify mocks in |
| 3598 # unit testing. | 3642 # unit testing. |
| 3599 fix_encoding.fix_encoding() | 3643 fix_encoding.fix_encoding() |
| 3600 colorama.init() | 3644 colorama.init() |
| 3601 try: | 3645 try: |
| 3602 sys.exit(main(sys.argv[1:])) | 3646 sys.exit(main(sys.argv[1:])) |
| 3603 except KeyboardInterrupt: | 3647 except KeyboardInterrupt: |
| 3604 sys.stderr.write('interrupted\n') | 3648 sys.stderr.write('interrupted\n') |
| 3605 sys.exit(1) | 3649 sys.exit(1) |
| OLD | NEW |