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 17 matching lines...) Expand all Loading... |
28 except ImportError: | 28 except ImportError: |
29 pass | 29 pass |
30 | 30 |
31 | 31 |
32 from third_party import colorama | 32 from third_party import colorama |
33 from third_party import upload | 33 from third_party import upload |
34 import breakpad # pylint: disable=W0611 | 34 import breakpad # pylint: disable=W0611 |
35 import clang_format | 35 import clang_format |
36 import fix_encoding | 36 import fix_encoding |
37 import gclient_utils | 37 import gclient_utils |
| 38 import git_common |
| 39 import owners_finder |
38 import presubmit_support | 40 import presubmit_support |
39 import rietveld | 41 import rietveld |
40 import scm | 42 import scm |
41 import subcommand | 43 import subcommand |
42 import subprocess2 | 44 import subprocess2 |
43 import watchlists | 45 import watchlists |
44 import owners_finder | |
45 | 46 |
46 __version__ = '1.0' | 47 __version__ = '1.0' |
47 | 48 |
48 DEFAULT_SERVER = 'https://codereview.appspot.com' | 49 DEFAULT_SERVER = 'https://codereview.appspot.com' |
49 POSTUPSTREAM_HOOK_PATTERN = '.git/hooks/post-cl-%s' | 50 POSTUPSTREAM_HOOK_PATTERN = '.git/hooks/post-cl-%s' |
50 DESCRIPTION_BACKUP_FILE = '~/.git_cl_description_backup' | 51 DESCRIPTION_BACKUP_FILE = '~/.git_cl_description_backup' |
51 GIT_INSTRUCTIONS_URL = 'http://code.google.com/p/chromium/wiki/UsingGit' | 52 GIT_INSTRUCTIONS_URL = 'http://code.google.com/p/chromium/wiki/UsingGit' |
52 CHANGE_ID = 'Change-Id:' | 53 CHANGE_ID = 'Change-Id:' |
53 | 54 |
54 # Valid extensions for files we want to lint. | 55 # Valid extensions for files we want to lint. |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 else: | 545 else: |
545 DieWithError("""Unable to determine default branch to diff against. | 546 DieWithError("""Unable to determine default branch to diff against. |
546 Either pass complete "git diff"-style arguments, like | 547 Either pass complete "git diff"-style arguments, like |
547 git cl upload origin/master | 548 git cl upload origin/master |
548 or verify this branch is set up to track another (via the --track argument to | 549 or verify this branch is set up to track another (via the --track argument to |
549 "git checkout -b ...").""") | 550 "git checkout -b ...").""") |
550 | 551 |
551 return remote, upstream_branch | 552 return remote, upstream_branch |
552 | 553 |
553 def GetCommonAncestorWithUpstream(self): | 554 def GetCommonAncestorWithUpstream(self): |
554 return RunGit(['merge-base', self.GetUpstreamBranch(), 'HEAD']).strip() | 555 return git_common.get_or_create_merge_base(self.GetBranch(), |
| 556 self.GetUpstreamBranch()) |
555 | 557 |
556 def GetUpstreamBranch(self): | 558 def GetUpstreamBranch(self): |
557 if self.upstream_branch is None: | 559 if self.upstream_branch is None: |
558 remote, upstream_branch = self.FetchUpstreamTuple(self.GetBranch()) | 560 remote, upstream_branch = self.FetchUpstreamTuple(self.GetBranch()) |
559 if remote is not '.': | 561 if remote is not '.': |
560 upstream_branch = upstream_branch.replace('heads', 'remotes/' + remote) | 562 upstream_branch = upstream_branch.replace('heads', 'remotes/' + remote) |
561 self.upstream_branch = upstream_branch | 563 self.upstream_branch = upstream_branch |
562 return self.upstream_branch | 564 return self.upstream_branch |
563 | 565 |
564 def GetRemoteBranch(self): | 566 def GetRemoteBranch(self): |
(...skipping 1583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2148 group.add_option( | 2150 group.add_option( |
2149 "-b", "--bot", action="append", | 2151 "-b", "--bot", action="append", |
2150 help=("IMPORTANT: specify ONE builder per --bot flag. Use it multiple " | 2152 help=("IMPORTANT: specify ONE builder per --bot flag. Use it multiple " |
2151 "times to specify multiple builders. ex: " | 2153 "times to specify multiple builders. ex: " |
2152 "'-bwin_rel:ui_tests,webkit_unit_tests -bwin_layout'. See " | 2154 "'-bwin_rel:ui_tests,webkit_unit_tests -bwin_layout'. See " |
2153 "the try server waterfall for the builders name and the tests " | 2155 "the try server waterfall for the builders name and the tests " |
2154 "available. Can also be used to specify gtest_filter, e.g. " | 2156 "available. Can also be used to specify gtest_filter, e.g. " |
2155 "-bwin_rel:base_unittests:ValuesTest.*Value")) | 2157 "-bwin_rel:base_unittests:ValuesTest.*Value")) |
2156 group.add_option( | 2158 group.add_option( |
2157 "-m", "--master", default='', | 2159 "-m", "--master", default='', |
2158 help=("Specify a try master where to run the tries.")) | 2160 help=("Specify a try master where to run the tries.")) |
2159 group.add_option( | 2161 group.add_option( |
2160 "-r", "--revision", | 2162 "-r", "--revision", |
2161 help="Revision to use for the try job; default: the " | 2163 help="Revision to use for the try job; default: the " |
2162 "revision will be determined by the try server; see " | 2164 "revision will be determined by the try server; see " |
2163 "its waterfall for more info") | 2165 "its waterfall for more info") |
2164 group.add_option( | 2166 group.add_option( |
2165 "-c", "--clobber", action="store_true", default=False, | 2167 "-c", "--clobber", action="store_true", default=False, |
2166 help="Force a clobber before building; e.g. don't do an " | 2168 help="Force a clobber before building; e.g. don't do an " |
2167 "incremental build") | 2169 "incremental build") |
2168 group.add_option( | 2170 group.add_option( |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2540 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' | 2542 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' |
2541 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) | 2543 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) |
2542 | 2544 |
2543 | 2545 |
2544 if __name__ == '__main__': | 2546 if __name__ == '__main__': |
2545 # These affect sys.stdout so do it outside of main() to simplify mocks in | 2547 # These affect sys.stdout so do it outside of main() to simplify mocks in |
2546 # unit testing. | 2548 # unit testing. |
2547 fix_encoding.fix_encoding() | 2549 fix_encoding.fix_encoding() |
2548 colorama.init() | 2550 colorama.init() |
2549 sys.exit(main(sys.argv[1:])) | 2551 sys.exit(main(sys.argv[1:])) |
OLD | NEW |