Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1615)

Side by Side Diff: recipe_modules/gclient/api.py

Issue 2286793003: Remove all references to GIT_MODE from depot_tools (Closed)
Patch Set: Slightly cleaner Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_modules/bot_update/test_api.py ('k') | recipe_modules/gclient/config.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from recipe_engine import recipe_api 5 from recipe_engine import recipe_api
6 6
7 7
8 class RevisionResolver(object): 8 class RevisionResolver(object):
9 """Resolves the revision based on build properties.""" 9 """Resolves the revision based on build properties."""
10 10
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 revisions.extend(['--revision', '%s@%s' % (s.name, fixed_revision)]) 144 revisions.extend(['--revision', '%s@%s' % (s.name, fixed_revision)])
145 145
146 for name, revision in sorted(cfg.revisions.items()): 146 for name, revision in sorted(cfg.revisions.items()):
147 fixed_revision = self.resolve_revision(revision) 147 fixed_revision = self.resolve_revision(revision)
148 if fixed_revision: 148 if fixed_revision:
149 revisions.extend(['--revision', '%s@%s' % (name, fixed_revision)]) 149 revisions.extend(['--revision', '%s@%s' % (name, fixed_revision)])
150 150
151 test_data_paths = set(cfg.got_revision_mapping.keys() + 151 test_data_paths = set(cfg.got_revision_mapping.keys() +
152 [s.name for s in cfg.solutions]) 152 [s.name for s in cfg.solutions])
153 step_test_data = lambda: ( 153 step_test_data = lambda: (
154 self.test_api.output_json(test_data_paths, cfg.GIT_MODE)) 154 self.test_api.output_json(test_data_paths))
155 try: 155 try:
156 if not cfg.GIT_MODE: # pragma: no cover 156 # clean() isn't used because the gclient sync flags passed in checkout()
157 args = ['sync', '--nohooks', '--force', '--verbose'] 157 # do much the same thing, and they're more correct than doing a separate
158 if cfg.delete_unversioned_trees: 158 # 'gclient revert' because it makes sure the other args are correct when
159 args.append('--delete_unversioned_trees') 159 # a repo was deleted and needs to be re-cloned (notably
160 if with_branch_heads: 160 # --with_branch_heads), whereas 'revert' uses default args for clone
161 args.append('--with_branch_heads') 161 # operations.
162 self('sync', args + revisions + ['--output-json', self.m.json.output()], 162 #
163 step_test_data=step_test_data, 163 # TODO(mmoss): To be like current official builders, this step could
164 **kwargs) 164 # just delete the whole <slave_name>/build/ directory and start each
165 else: 165 # build from scratch. That might be the least bad solution, at least
166 # clean() isn't used because the gclient sync flags passed in checkout() 166 # until we have a reliable gclient method to produce a pristine working
167 # do much the same thing, and they're more correct than doing a separate 167 # dir for git-based builds (e.g. maybe some combination of 'git
168 # 'gclient revert' because it makes sure the other args are correct when 168 # reset/clean -fx' and removing the 'out' directory).
169 # a repo was deleted and needs to be re-cloned (notably 169 j = '-j2' if self.m.platform.is_win else '-j8'
170 # --with_branch_heads), whereas 'revert' uses default args for clone 170 args = ['sync', '--verbose', '--with_branch_heads', '--nohooks', j,
171 # operations. 171 '--reset', '--force', '--upstream', '--no-nag-max']
172 # 172 if cfg.delete_unversioned_trees:
173 # TODO(mmoss): To be like current official builders, this step could 173 args.append('--delete_unversioned_trees')
174 # just delete the whole <slave_name>/build/ directory and start each 174 self('sync', args + revisions +
175 # build from scratch. That might be the least bad solution, at least 175 ['--output-json', self.m.json.output()],
176 # until we have a reliable gclient method to produce a pristine working 176 step_test_data=step_test_data,
177 # dir for git-based builds (e.g. maybe some combination of 'git 177 **kwargs)
178 # reset/clean -fx' and removing the 'out' directory).
179 j = '-j2' if self.m.platform.is_win else '-j8'
180 args = ['sync', '--verbose', '--with_branch_heads', '--nohooks', j,
181 '--reset', '--force', '--upstream', '--no-nag-max']
182 if cfg.delete_unversioned_trees:
183 args.append('--delete_unversioned_trees')
184 self('sync', args + revisions +
185 ['--output-json', self.m.json.output()],
186 step_test_data=step_test_data,
187 **kwargs)
188 finally: 178 finally:
189 result = self.m.step.active_result 179 result = self.m.step.active_result
190 data = result.json.output 180 data = result.json.output
191 for path, info in data['solutions'].iteritems(): 181 for path, info in data['solutions'].iteritems():
192 # gclient json paths always end with a slash 182 # gclient json paths always end with a slash
193 path = path.rstrip('/') 183 path = path.rstrip('/')
194 if path in cfg.got_revision_mapping: 184 if path in cfg.got_revision_mapping:
195 propname = cfg.got_revision_mapping[path] 185 propname = cfg.got_revision_mapping[path]
196 result.presentation.properties[propname] = info['revision'] 186 result.presentation.properties[propname] = info['revision']
197 187
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 if revert is self.RevertOnTryserver: 222 if revert is self.RevertOnTryserver:
233 revert = self.m.tryserver.is_tryserver 223 revert = self.m.tryserver.is_tryserver
234 224
235 if inject_parent_got_revision: 225 if inject_parent_got_revision:
236 self.inject_parent_got_revision(cfg, override=True) 226 self.inject_parent_got_revision(cfg, override=True)
237 227
238 self('setup', ['config', '--spec', self.config_to_pythonish(cfg)], **kwargs) 228 self('setup', ['config', '--spec', self.config_to_pythonish(cfg)], **kwargs)
239 229
240 sync_step = None 230 sync_step = None
241 try: 231 try:
242 if not cfg.GIT_MODE: # pragma: no cover 232 sync_step = self.sync(cfg, with_branch_heads=with_branch_heads,
243 try: 233 **kwargs)
244 if revert:
245 self.revert(**kwargs)
246 finally:
247 sync_step = self.sync(cfg, with_branch_heads=with_branch_heads,
248 **kwargs)
249 else:
250 sync_step = self.sync(cfg, with_branch_heads=with_branch_heads,
251 **kwargs)
252 234
253 cfg_cmds = [ 235 cfg_cmds = [
254 ('user.name', 'local_bot'), 236 ('user.name', 'local_bot'),
255 ('user.email', 'local_bot@example.com'), 237 ('user.email', 'local_bot@example.com'),
256 ] 238 ]
257 for var, val in cfg_cmds: 239 for var, val in cfg_cmds:
258 name = 'recurse (git config %s)' % var 240 name = 'recurse (git config %s)' % var
259 self(name, ['recurse', 'git', 'config', var, val], **kwargs) 241 self(name, ['recurse', 'git', 'config', var, val], **kwargs)
260
261 finally: 242 finally:
262 cwd = kwargs.get('cwd', self.m.path['slave_build']) 243 cwd = kwargs.get('cwd', self.m.path['slave_build'])
263 if 'checkout' not in self.m.path: 244 if 'checkout' not in self.m.path:
264 self.m.path['checkout'] = cwd.join( 245 self.m.path['checkout'] = cwd.join(
265 *cfg.solutions[0].name.split(self.m.path.sep)) 246 *cfg.solutions[0].name.split(self.m.path.sep))
266 247
267 return sync_step 248 return sync_step
268 249
269 def revert(self, **kwargs): # pragma: no cover 250 def revert(self, **kwargs): # pragma: no cover
270 """Return a gclient_safe_revert step.""" 251 """Return a gclient_safe_revert step."""
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 """Updates config revision corresponding to patch_project. 334 """Updates config revision corresponding to patch_project.
354 335
355 Useful for bot_update only, as this is the only consumer of gclient's config 336 Useful for bot_update only, as this is the only consumer of gclient's config
356 revision map. This doesn't overwrite the revision if it was already set. 337 revision map. This doesn't overwrite the revision if it was already set.
357 """ 338 """
358 assert patch_project is None or isinstance(patch_project, basestring) 339 assert patch_project is None or isinstance(patch_project, basestring)
359 cfg = gclient_config or self.c 340 cfg = gclient_config or self.c
360 path, revision = cfg.patch_projects.get(patch_project, (None, None)) 341 path, revision = cfg.patch_projects.get(patch_project, (None, None))
361 if path and revision and path not in cfg.revisions: 342 if path and revision and path not in cfg.revisions:
362 cfg.revisions[path] = revision 343 cfg.revisions[path] = revision
OLDNEW
« no previous file with comments | « recipe_modules/bot_update/test_api.py ('k') | recipe_modules/gclient/config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698