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

Side by Side Diff: scm.py

Issue 529002: Abort gclient sync when a svn command fails. (Closed)
Patch Set: typo Created 10 years, 11 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2006-2009 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 """SCM-specific utility classes.""" 5 """SCM-specific utility classes."""
6 6
7 import os 7 import os
8 import re 8 import re
9 import shutil 9 import shutil
10 import subprocess 10 import subprocess
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 pattern = { 326 pattern = {
327 'checkout': update_pattern, 327 'checkout': update_pattern,
328 'status': status_pattern, 328 'status': status_pattern,
329 'update': update_pattern, 329 'update': update_pattern,
330 }[args[0]] 330 }[args[0]]
331 compiled_pattern = re.compile(pattern) 331 compiled_pattern = re.compile(pattern)
332 # Place an upper limit. 332 # Place an upper limit.
333 for i in range(1, 10): 333 for i in range(1, 10):
334 previous_list_len = len(file_list) 334 previous_list_len = len(file_list)
335 failure = [] 335 failure = []
336
336 def CaptureMatchingLines(line): 337 def CaptureMatchingLines(line):
337 match = compiled_pattern.search(line) 338 match = compiled_pattern.search(line)
338 if match: 339 if match:
339 file_list.append(match.group(1)) 340 file_list.append(match.group(1))
340 if line.startswith('svn: '): 341 if line.startswith('svn: '):
341 # We can't raise an exception. We can't alias a variable. Use a cheap 342 # We can't raise an exception. We can't alias a variable. Use a cheap
342 # way. 343 # way.
343 failure.append(True) 344 failure.append(True)
345
344 try: 346 try:
345 SVN.RunAndFilterOutput(args, 347 SVN.RunAndFilterOutput(args,
346 in_directory, 348 in_directory,
347 options.verbose, 349 options.verbose,
348 True, 350 True,
349 CaptureMatchingLines) 351 CaptureMatchingLines)
350 except gclient_utils.Error: 352 except gclient_utils.Error:
351 # We enforce that some progress has been made. 353 # We enforce that some progress has been made.
352 if len(failure) and len(file_list) > previous_list_len: 354 if len(failure) and len(file_list) > previous_list_len:
353 if args[0] == 'checkout': 355 if args[0] == 'checkout':
354 args = args[:] 356 args = args[:]
355 # An aborted checkout is now an update. 357 # An aborted checkout is now an update.
356 args[0] = 'update' 358 args[0] = 'update'
357 continue 359 continue
360 # No progress was made, bail out.
361 raise
358 break 362 break
359 363
360 @staticmethod 364 @staticmethod
361 def RunAndFilterOutput(args, 365 def RunAndFilterOutput(args,
362 in_directory, 366 in_directory,
363 print_messages, 367 print_messages,
364 print_stdout, 368 print_stdout,
365 filter): 369 filter):
366 """Runs a command, optionally outputting to stdout. 370 """Runs a command, optionally outputting to stdout.
367 371
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 if not cur_dir_repo_root: 701 if not cur_dir_repo_root:
698 return None 702 return None
699 703
700 while True: 704 while True:
701 parent = os.path.dirname(directory) 705 parent = os.path.dirname(directory)
702 if (SVN.CaptureInfo(parent, print_error=False).get( 706 if (SVN.CaptureInfo(parent, print_error=False).get(
703 "Repository Root") != cur_dir_repo_root): 707 "Repository Root") != cur_dir_repo_root):
704 break 708 break
705 directory = parent 709 directory = parent
706 return directory 710 return directory
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698