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 """Applies an issue from Rietveld. | 6 """Applies an issue from Rietveld. |
7 """ | 7 """ |
8 | 8 |
9 import getpass | 9 import getpass |
10 import json | 10 import json |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 parser.add_option( | 65 parser.add_option( |
66 '-s', | 66 '-s', |
67 '--server', | 67 '--server', |
68 default='http://codereview.chromium.org', | 68 default='http://codereview.chromium.org', |
69 help='Rietveld server') | 69 help='Rietveld server') |
70 parser.add_option('--no-auth', action='store_true', | 70 parser.add_option('--no-auth', action='store_true', |
71 help='Do not attempt authenticated requests.') | 71 help='Do not attempt authenticated requests.') |
72 parser.add_option('--revision-mapping', default='{}', | 72 parser.add_option('--revision-mapping', default='{}', |
73 help='When running gclient, annotate the got_revisions ' | 73 help='When running gclient, annotate the got_revisions ' |
74 'using the revision-mapping.') | 74 'using the revision-mapping.') |
| 75 parser.add_option('-f', '--force', action='store_true', |
| 76 help='Really run apply_issue, even if .update.flag ' |
| 77 'is detected.') |
| 78 parser.add_option('-b', '--base_ref', help='Base git ref to patch on top of, ' |
| 79 'used for verification.') |
75 options, args = parser.parse_args() | 80 options, args = parser.parse_args() |
| 81 if (os.path.isfile(os.path.join(os.getcwd(), 'update.flag')) |
| 82 and not options.force): |
| 83 print 'update.flag file found: bot_update has run and checkout is already ' |
| 84 print 'in a consistent state. No actions will be performed in this step.' |
| 85 return 0 |
76 logging.basicConfig( | 86 logging.basicConfig( |
77 format='%(levelname)5s %(module)11s(%(lineno)4d): %(message)s', | 87 format='%(levelname)5s %(module)11s(%(lineno)4d): %(message)s', |
78 level=[logging.WARNING, logging.INFO, logging.DEBUG][ | 88 level=[logging.WARNING, logging.INFO, logging.DEBUG][ |
79 min(2, options.verbose)]) | 89 min(2, options.verbose)]) |
80 if args: | 90 if args: |
81 parser.error('Extra argument(s) "%s" not understood' % ' '.join(args)) | 91 parser.error('Extra argument(s) "%s" not understood' % ' '.join(args)) |
82 if not options.issue: | 92 if not options.issue: |
83 parser.error('Require --issue') | 93 parser.error('Require --issue') |
84 options.server = options.server.rstrip('/') | 94 options.server = options.server.rstrip('/') |
85 if not options.server: | 95 if not options.server: |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 options.issue, options.patchset, | 154 options.issue, options.patchset, |
145 options.server, options.issue) | 155 options.server, options.issue) |
146 return 1 | 156 return 1 |
147 for patch in patchset.patches: | 157 for patch in patchset.patches: |
148 print(patch) | 158 print(patch) |
149 full_dir = os.path.abspath(options.root_dir) | 159 full_dir = os.path.abspath(options.root_dir) |
150 scm_type = scm.determine_scm(full_dir) | 160 scm_type = scm.determine_scm(full_dir) |
151 if scm_type == 'svn': | 161 if scm_type == 'svn': |
152 scm_obj = checkout.SvnCheckout(full_dir, None, None, None, None) | 162 scm_obj = checkout.SvnCheckout(full_dir, None, None, None, None) |
153 elif scm_type == 'git': | 163 elif scm_type == 'git': |
154 scm_obj = checkout.GitCheckout(full_dir, None, None, None, None) | 164 scm_obj = checkout.GitCheckout(full_dir, None, None, None, None, |
| 165 base_ref=options.base_ref) |
155 elif scm_type == None: | 166 elif scm_type == None: |
156 scm_obj = checkout.RawCheckout(full_dir, None, None) | 167 scm_obj = checkout.RawCheckout(full_dir, None, None) |
157 else: | 168 else: |
158 parser.error('Couldn\'t determine the scm') | 169 parser.error('Couldn\'t determine the scm') |
159 | 170 |
160 # TODO(maruel): HACK, remove me. | 171 # TODO(maruel): HACK, remove me. |
161 # When run a build slave, make sure buildbot knows that the checkout was | 172 # When run a build slave, make sure buildbot knows that the checkout was |
162 # modified. | 173 # modified. |
163 if options.root_dir == 'src' and getpass.getuser() == 'chrome-bot': | 174 if options.root_dir == 'src' and getpass.getuser() == 'chrome-bot': |
164 # See sourcedirIsPatched() in: | 175 # See sourcedirIsPatched() in: |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 f, options.revision_mapping) | 213 f, options.revision_mapping) |
203 annotated_gclient.emit_buildprops(revisions) | 214 annotated_gclient.emit_buildprops(revisions) |
204 | 215 |
205 return retcode | 216 return retcode |
206 return 0 | 217 return 0 |
207 | 218 |
208 | 219 |
209 if __name__ == "__main__": | 220 if __name__ == "__main__": |
210 fix_encoding.fix_encoding() | 221 fix_encoding.fix_encoding() |
211 sys.exit(main()) | 222 sys.exit(main()) |
OLD | NEW |