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 |