| 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 __future__ import print_function | 10 from __future__ import print_function |
| 11 | 11 |
| 12 from distutils.version import LooseVersion | 12 from distutils.version import LooseVersion |
| 13 from multiprocessing.pool import ThreadPool | 13 from multiprocessing.pool import ThreadPool |
| 14 import base64 | 14 import base64 |
| 15 import collections | 15 import collections |
| 16 import glob | |
| 17 import httplib | 16 import httplib |
| 18 import json | 17 import json |
| 19 import logging | 18 import logging |
| 20 import multiprocessing | 19 import multiprocessing |
| 21 import optparse | 20 import optparse |
| 22 import os | 21 import os |
| 23 import re | 22 import re |
| 24 import stat | 23 import stat |
| 25 import sys | 24 import sys |
| 26 import textwrap | 25 import textwrap |
| (...skipping 2687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2714 people = cleanup_list([match.group(2).strip()]) | 2713 people = cleanup_list([match.group(2).strip()]) |
| 2715 if match.group(1) == 'TBR': | 2714 if match.group(1) == 'TBR': |
| 2716 tbr_names.extend(people) | 2715 tbr_names.extend(people) |
| 2717 else: | 2716 else: |
| 2718 r_names.extend(people) | 2717 r_names.extend(people) |
| 2719 for name in r_names: | 2718 for name in r_names: |
| 2720 if name not in reviewers: | 2719 if name not in reviewers: |
| 2721 reviewers.append(name) | 2720 reviewers.append(name) |
| 2722 if add_owners_tbr: | 2721 if add_owners_tbr: |
| 2723 owners_db = owners.Database(change.RepositoryRoot(), | 2722 owners_db = owners.Database(change.RepositoryRoot(), |
| 2724 fopen=file, os_path=os.path, glob=glob.glob) | 2723 fopen=file, os_path=os.path) |
| 2725 all_reviewers = set(tbr_names + reviewers) | 2724 all_reviewers = set(tbr_names + reviewers) |
| 2726 missing_files = owners_db.files_not_covered_by(change.LocalPaths(), | 2725 missing_files = owners_db.files_not_covered_by(change.LocalPaths(), |
| 2727 all_reviewers) | 2726 all_reviewers) |
| 2728 tbr_names.extend(owners_db.reviewers_for(missing_files, | 2727 tbr_names.extend(owners_db.reviewers_for(missing_files, |
| 2729 change.author_email)) | 2728 change.author_email)) |
| 2730 new_r_line = 'R=' + ', '.join(reviewers) if reviewers else None | 2729 new_r_line = 'R=' + ', '.join(reviewers) if reviewers else None |
| 2731 new_tbr_line = 'TBR=' + ', '.join(tbr_names) if tbr_names else None | 2730 new_tbr_line = 'TBR=' + ', '.join(tbr_names) if tbr_names else None |
| 2732 | 2731 |
| 2733 # Put the new lines in the description where the old first R= line was. | 2732 # Put the new lines in the description where the old first R= line was. |
| 2734 line_loc = next((i for i, match in enumerate(matches) if match), -1) | 2733 line_loc = next((i for i, match in enumerate(matches) if match), -1) |
| (...skipping 2099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4834 base_branch = args[0] | 4833 base_branch = args[0] |
| 4835 else: | 4834 else: |
| 4836 # Default to diffing against the common ancestor of the upstream branch. | 4835 # Default to diffing against the common ancestor of the upstream branch. |
| 4837 base_branch = cl.GetCommonAncestorWithUpstream() | 4836 base_branch = cl.GetCommonAncestorWithUpstream() |
| 4838 | 4837 |
| 4839 change = cl.GetChange(base_branch, None) | 4838 change = cl.GetChange(base_branch, None) |
| 4840 return owners_finder.OwnersFinder( | 4839 return owners_finder.OwnersFinder( |
| 4841 [f.LocalPath() for f in | 4840 [f.LocalPath() for f in |
| 4842 cl.GetChange(base_branch, None).AffectedFiles()], | 4841 cl.GetChange(base_branch, None).AffectedFiles()], |
| 4843 change.RepositoryRoot(), author, | 4842 change.RepositoryRoot(), author, |
| 4844 fopen=file, os_path=os.path, glob=glob.glob, | 4843 fopen=file, os_path=os.path, |
| 4845 disable_color=options.no_color).run() | 4844 disable_color=options.no_color).run() |
| 4846 | 4845 |
| 4847 | 4846 |
| 4848 def BuildGitDiffCmd(diff_type, upstream_commit, args): | 4847 def BuildGitDiffCmd(diff_type, upstream_commit, args): |
| 4849 """Generates a diff command.""" | 4848 """Generates a diff command.""" |
| 4850 # Generate diff for the current branch's changes. | 4849 # Generate diff for the current branch's changes. |
| 4851 diff_cmd = ['diff', '--no-ext-diff', '--no-prefix', diff_type, | 4850 diff_cmd = ['diff', '--no-ext-diff', '--no-prefix', diff_type, |
| 4852 upstream_commit, '--' ] | 4851 upstream_commit, '--' ] |
| 4853 | 4852 |
| 4854 if args: | 4853 if args: |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5105 if __name__ == '__main__': | 5104 if __name__ == '__main__': |
| 5106 # These affect sys.stdout so do it outside of main() to simplify mocks in | 5105 # These affect sys.stdout so do it outside of main() to simplify mocks in |
| 5107 # unit testing. | 5106 # unit testing. |
| 5108 fix_encoding.fix_encoding() | 5107 fix_encoding.fix_encoding() |
| 5109 setup_color.init() | 5108 setup_color.init() |
| 5110 try: | 5109 try: |
| 5111 sys.exit(main(sys.argv[1:])) | 5110 sys.exit(main(sys.argv[1:])) |
| 5112 except KeyboardInterrupt: | 5111 except KeyboardInterrupt: |
| 5113 sys.stderr.write('interrupted\n') | 5112 sys.stderr.write('interrupted\n') |
| 5114 sys.exit(1) | 5113 sys.exit(1) |
| OLD | NEW |