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

Side by Side Diff: gclient_scm.py

Issue 1812001: Standardize automatic retry and add a 15 seconds sleep to increase the chances of success (Closed)
Patch Set: Created 10 years, 7 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 | scm.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 (c) 2009 The Chromium Authors. All rights reserved. 1 # Copyright (c) 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 """Gclient-specific SCM-specific operations.""" 5 """Gclient-specific SCM-specific operations."""
6 6
7 import logging 7 import logging
8 import os 8 import os
9 import posixpath 9 import posixpath
10 import re 10 import re
11 import subprocess 11 import subprocess
12 import time
12 13
13 import scm 14 import scm
14 import gclient_utils 15 import gclient_utils
15 16
16 17
17 class DiffFilterer(object): 18 class DiffFilterer(object):
18 """Simple class which tracks which file is being diffed and 19 """Simple class which tracks which file is being diffed and
19 replaces instances of its file name in the original and 20 replaces instances of its file name in the original and
20 working copy lines of the svn/git diff output.""" 21 working copy lines of the svn/git diff output."""
21 index_string = "Index: " 22 index_string = "Index: "
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 if not upstream_branch or not upstream_branch.startswith('refs/remotes'): 246 if not upstream_branch or not upstream_branch.startswith('refs/remotes'):
246 current_type = "hash" 247 current_type = "hash"
247 logging.debug("Current branch is based off a specific rev and is not " 248 logging.debug("Current branch is based off a specific rev and is not "
248 "tracking an upstream.") 249 "tracking an upstream.")
249 elif upstream_branch.startswith('refs/remotes'): 250 elif upstream_branch.startswith('refs/remotes'):
250 current_type = "branch" 251 current_type = "branch"
251 else: 252 else:
252 raise gclient_utils.Error('Invalid Upstream') 253 raise gclient_utils.Error('Invalid Upstream')
253 254
254 # Update the remotes first so we have all the refs. 255 # Update the remotes first so we have all the refs.
255 for _ in range(3): 256 for _ in range(10):
256 try: 257 try:
257 remote_output, remote_err = scm.GIT.Capture( 258 remote_output, remote_err = scm.GIT.Capture(
258 ['remote'] + verbose + ['update'], 259 ['remote'] + verbose + ['update'],
259 self.checkout_path, 260 self.checkout_path,
260 print_error=False) 261 print_error=False)
261 break 262 break
262 except gclient_utils.CheckCallError, e: 263 except gclient_utils.CheckCallError:
263 # Hackish but at that point, git is known to work so just checking for 264 # Hackish but at that point, git is known to work so just checking for
264 # 502 in stderr should be fine. 265 # 502 in stderr should be fine.
265 if '502' in e.stderr: 266 if '502' in e.stderr:
266 print str(e) 267 print str(e)
267 print "Retrying..." 268 print "Sleeping 15 seconds and retrying..."
269 time.sleep(15)
268 continue 270 continue
269 raise e 271 raise
270 272
271 if verbose: 273 if verbose:
272 print remote_output.strip() 274 print remote_output.strip()
273 # git remote update prints to stderr when used with --verbose 275 # git remote update prints to stderr when used with --verbose
274 print remote_err.strip() 276 print remote_err.strip()
275 277
276 # This is a big hammer, debatable if it should even be here... 278 # This is a big hammer, debatable if it should even be here...
277 if options.force or options.reset: 279 if options.force or options.reset:
278 self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False) 280 self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False)
279 281
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 print("\n________ couldn't run \'%s\' in \'%s\':\nThe directory " 852 print("\n________ couldn't run \'%s\' in \'%s\':\nThe directory "
851 "does not exist." 853 "does not exist."
852 % (' '.join(command), path)) 854 % (' '.join(command), path))
853 # There's no file list to retrieve. 855 # There's no file list to retrieve.
854 else: 856 else:
855 scm.SVN.RunAndGetFileList(options, command, path, file_list) 857 scm.SVN.RunAndGetFileList(options, command, path, file_list)
856 858
857 def FullUrlForRelativeUrl(self, url): 859 def FullUrlForRelativeUrl(self, url):
858 # Find the forth '/' and strip from there. A bit hackish. 860 # Find the forth '/' and strip from there. A bit hackish.
859 return '/'.join(self.url.split('/')[:4]) + url 861 return '/'.join(self.url.split('/')[:4]) + url
OLDNEW
« no previous file with comments | « no previous file | scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698