| OLD | NEW |
| 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 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 upstream_branch = self.GetUpstream(self.checkout_path) | 244 upstream_branch = self.GetUpstream(self.checkout_path) |
| 245 if not upstream_branch or not upstream_branch.startswith('refs/remotes'): | 245 if not upstream_branch or not upstream_branch.startswith('refs/remotes'): |
| 246 current_type = "hash" | 246 current_type = "hash" |
| 247 logging.debug("Current branch is based off a specific rev and is not " | 247 logging.debug("Current branch is based off a specific rev and is not " |
| 248 "tracking an upstream.") | 248 "tracking an upstream.") |
| 249 elif upstream_branch.startswith('refs/remotes'): | 249 elif upstream_branch.startswith('refs/remotes'): |
| 250 current_type = "branch" | 250 current_type = "branch" |
| 251 else: | 251 else: |
| 252 raise gclient_utils.Error('Invalid Upstream') | 252 raise gclient_utils.Error('Invalid Upstream') |
| 253 | 253 |
| 254 # Update the remotes first so we have all the refs | 254 # Update the remotes first so we have all the refs. |
| 255 remote_output, remote_err = self.Capture(['remote'] + verbose + ['update'], | 255 for i in range(3): |
| 256 self.checkout_path, | 256 try: |
| 257 print_error=False) | 257 remote_output, remote_err = self.Capture( |
| 258 ['remote'] + verbose + ['update'], |
| 259 self.checkout_path, |
| 260 print_error=False) |
| 261 break |
| 262 except gclient_utils.CheckCallError, e: |
| 263 # Hackish but at that point, git is known to work so just checking for |
| 264 # 502 in stderr should be fine. |
| 265 if '502' in e.stderr: |
| 266 print str(e) |
| 267 print "Retrying..." |
| 268 continue |
| 269 raise e |
| 270 |
| 258 if verbose: | 271 if verbose: |
| 259 print remote_output.strip() | 272 print remote_output.strip() |
| 260 # git remote update prints to stderr when used with --verbose | 273 # git remote update prints to stderr when used with --verbose |
| 261 print remote_err.strip() | 274 print remote_err.strip() |
| 262 | 275 |
| 263 # This is a big hammer, debatable if it should even be here... | 276 # This is a big hammer, debatable if it should even be here... |
| 264 if options.force or options.reset: | 277 if options.force or options.reset: |
| 265 self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False) | 278 self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False) |
| 266 | 279 |
| 267 if current_type is 'hash': | 280 if current_type is 'hash': |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 print("\n________ couldn't run \'%s\' in \'%s\':\nThe directory " | 828 print("\n________ couldn't run \'%s\' in \'%s\':\nThe directory " |
| 816 "does not exist." | 829 "does not exist." |
| 817 % (' '.join(command), path)) | 830 % (' '.join(command), path)) |
| 818 # There's no file list to retrieve. | 831 # There's no file list to retrieve. |
| 819 else: | 832 else: |
| 820 self.RunAndGetFileList(options, command, path, file_list) | 833 self.RunAndGetFileList(options, command, path, file_list) |
| 821 | 834 |
| 822 def FullUrlForRelativeUrl(self, url): | 835 def FullUrlForRelativeUrl(self, url): |
| 823 # Find the forth '/' and strip from there. A bit hackish. | 836 # Find the forth '/' and strip from there. A bit hackish. |
| 824 return '/'.join(self.url.split('/')[:4]) + url | 837 return '/'.join(self.url.split('/')[:4]) + url |
| OLD | NEW |