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 and Gerrit.""" | 8 """A git-command for integrating reviews on Rietveld and Gerrit.""" |
| 9 | 9 |
| 10 from distutils.version import LooseVersion | 10 from distutils.version import LooseVersion |
| (...skipping 2440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2451 # whitespace. This code is not doing this, but it clearly won't decrease | 2451 # whitespace. This code is not doing this, but it clearly won't decrease |
| 2452 # entropy. | 2452 # entropy. |
| 2453 lines.append(message) | 2453 lines.append(message) |
| 2454 change_hash = RunCommand(['git', 'hash-object', '-t', 'commit', '--stdin'], | 2454 change_hash = RunCommand(['git', 'hash-object', '-t', 'commit', '--stdin'], |
| 2455 stdin='\n'.join(lines)) | 2455 stdin='\n'.join(lines)) |
| 2456 return 'I%s' % change_hash.strip() | 2456 return 'I%s' % change_hash.strip() |
| 2457 | 2457 |
| 2458 | 2458 |
| 2459 def GerritUpload(options, args, cl, change): | 2459 def GerritUpload(options, args, cl, change): |
| 2460 """upload the current branch to gerrit.""" | 2460 """upload the current branch to gerrit.""" |
| 2461 # We assume the remote called "origin" is the one we want. | |
| 2462 # It is probably not worthwhile to support different workflows. | |
| 2463 gerrit_remote = 'origin' | |
| 2464 | |
| 2461 remote, remote_branch = cl.GetRemoteBranch() | 2465 remote, remote_branch = cl.GetRemoteBranch() |
|
tandrii(chromium)
2016/03/28 15:44:37
alokp@ I think the right fix is to actually check
| |
| 2462 branch = GetTargetRef(remote, remote_branch, options.target_branch, | 2466 branch = GetTargetRef(remote, remote_branch, options.target_branch, |
| 2463 pending_prefix='') | 2467 pending_prefix='') |
| 2464 | 2468 |
| 2465 change_desc = ChangeDescription( | 2469 change_desc = ChangeDescription( |
| 2466 options.message or CreateDescriptionFromLog(args)) | 2470 options.message or CreateDescriptionFromLog(args)) |
| 2467 if not change_desc.description: | 2471 if not change_desc.description: |
| 2468 print "\nDescription is empty. Aborting..." | 2472 print "\nDescription is empty. Aborting..." |
| 2469 return 1 | 2473 return 1 |
| 2470 | 2474 |
| 2471 if options.title: | 2475 if options.title: |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2512 parent = cl.GetCommonAncestorWithUpstream() | 2516 parent = cl.GetCommonAncestorWithUpstream() |
| 2513 | 2517 |
| 2514 tree = RunGit(['rev-parse', 'HEAD:']).strip() | 2518 tree = RunGit(['rev-parse', 'HEAD:']).strip() |
| 2515 ref_to_push = RunGit(['commit-tree', tree, '-p', parent, | 2519 ref_to_push = RunGit(['commit-tree', tree, '-p', parent, |
| 2516 '-m', message]).strip() | 2520 '-m', message]).strip() |
| 2517 else: | 2521 else: |
| 2518 if not git_footers.get_footer_change_id(change_desc.description): | 2522 if not git_footers.get_footer_change_id(change_desc.description): |
| 2519 DownloadGerritHook(False) | 2523 DownloadGerritHook(False) |
| 2520 change_desc.set_description(AddChangeIdToCommitMessage(options, args)) | 2524 change_desc.set_description(AddChangeIdToCommitMessage(options, args)) |
| 2521 ref_to_push = 'HEAD' | 2525 ref_to_push = 'HEAD' |
| 2522 parent = '%s/%s' % (remote, branch) | 2526 parent = '%s/%s' % (gerrit_remote, branch) |
| 2523 change_id = git_footers.get_footer_change_id(change_desc.description)[0] | 2527 change_id = git_footers.get_footer_change_id(change_desc.description)[0] |
| 2524 | 2528 |
| 2525 commits = RunGitSilent(['rev-list', '%s..%s' % (parent, | 2529 commits = RunGitSilent(['rev-list', '%s..%s' % (parent, |
| 2526 ref_to_push)]).splitlines() | 2530 ref_to_push)]).splitlines() |
| 2527 if len(commits) > 1: | 2531 if len(commits) > 1: |
| 2528 print('WARNING: This will upload %d commits. Run the following command ' | 2532 print('WARNING: This will upload %d commits. Run the following command ' |
| 2529 'to see which commits will be uploaded: ' % len(commits)) | 2533 'to see which commits will be uploaded: ' % len(commits)) |
| 2530 print('git log %s..%s' % (parent, ref_to_push)) | 2534 print('git log %s..%s' % (parent, ref_to_push)) |
| 2531 print('You can also use `git squash-branch` to squash these into a single ' | 2535 print('You can also use `git squash-branch` to squash these into a single ' |
| 2532 'commit.') | 2536 'commit.') |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 2543 if cc: | 2547 if cc: |
| 2544 receive_options += ['--cc=' + email for email in cc] | 2548 receive_options += ['--cc=' + email for email in cc] |
| 2545 if change_desc.get_reviewers(): | 2549 if change_desc.get_reviewers(): |
| 2546 receive_options.extend( | 2550 receive_options.extend( |
| 2547 '--reviewer=' + email for email in change_desc.get_reviewers()) | 2551 '--reviewer=' + email for email in change_desc.get_reviewers()) |
| 2548 | 2552 |
| 2549 git_command = ['push'] | 2553 git_command = ['push'] |
| 2550 if receive_options: | 2554 if receive_options: |
| 2551 git_command.append('--receive-pack=git receive-pack %s' % | 2555 git_command.append('--receive-pack=git receive-pack %s' % |
| 2552 ' '.join(receive_options)) | 2556 ' '.join(receive_options)) |
| 2553 git_command += [remote, ref_to_push + ':refs/for/' + branch] | 2557 git_command += [gerrit_remote, ref_to_push + ':refs/for/' + branch] |
| 2554 push_stdout = gclient_utils.CheckCallAndFilter( | 2558 push_stdout = gclient_utils.CheckCallAndFilter( |
| 2555 ['git'] + git_command, | 2559 ['git'] + git_command, |
| 2556 print_stdout=True, | 2560 print_stdout=True, |
| 2557 # Flush after every line: useful for seeing progress when running as | 2561 # Flush after every line: useful for seeing progress when running as |
| 2558 # recipe. | 2562 # recipe. |
| 2559 filter_fn=lambda _: sys.stdout.flush()) | 2563 filter_fn=lambda _: sys.stdout.flush()) |
| 2560 | 2564 |
| 2561 if options.squash: | 2565 if options.squash: |
| 2562 regex = re.compile(r'remote:\s+https?://[\w\-\.\/]*/(\d+)\s.*') | 2566 regex = re.compile(r'remote:\s+https?://[\w\-\.\/]*/(\d+)\s.*') |
| 2563 change_numbers = [m.group(1) | 2567 change_numbers = [m.group(1) |
| (...skipping 1698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4262 if __name__ == '__main__': | 4266 if __name__ == '__main__': |
| 4263 # These affect sys.stdout so do it outside of main() to simplify mocks in | 4267 # These affect sys.stdout so do it outside of main() to simplify mocks in |
| 4264 # unit testing. | 4268 # unit testing. |
| 4265 fix_encoding.fix_encoding() | 4269 fix_encoding.fix_encoding() |
| 4266 colorama.init() | 4270 colorama.init() |
| 4267 try: | 4271 try: |
| 4268 sys.exit(main(sys.argv[1:])) | 4272 sys.exit(main(sys.argv[1:])) |
| 4269 except KeyboardInterrupt: | 4273 except KeyboardInterrupt: |
| 4270 sys.stderr.write('interrupted\n') | 4274 sys.stderr.write('interrupted\n') |
| 4271 sys.exit(1) | 4275 sys.exit(1) |
| OLD | NEW |