Index: gclient_scm.py |
diff --git a/gclient_scm.py b/gclient_scm.py |
index 68f3be328e86c1c0b0ab73bc0919d08f29d03b01..0f34d38601fc3d3ebd9df62b775ec9e7e249db79 100644 |
--- a/gclient_scm.py |
+++ b/gclient_scm.py |
@@ -353,27 +353,28 @@ class GitWrapper(SCMWrapper): |
else: |
raise gclient_utils.Error('Invalid Upstream: %s' % upstream_branch) |
- # Update the remotes first so we have all the refs. |
- backoff_time = 5 |
- for _ in range(10): |
- try: |
- remote_output = scm.GIT.Capture( |
- ['remote'] + verbose + ['update'], |
- cwd=self.checkout_path) |
- break |
- except subprocess2.CalledProcessError, e: |
- # Hackish but at that point, git is known to work so just checking for |
- # 502 in stderr should be fine. |
- if '502' in e.stderr: |
- print(str(e)) |
- print('Sleeping %.1f seconds and retrying...' % backoff_time) |
- time.sleep(backoff_time) |
- backoff_time *= 1.3 |
- continue |
- raise |
+ if not scm.GIT.IsValidRevision(cwd=self.checkout_path, rev=revision): |
+ # Update the remotes first so we have all the refs. |
+ backoff_time = 5 |
+ for _ in range(10): |
+ try: |
+ remote_output = scm.GIT.Capture( |
+ ['remote'] + verbose + ['update'], |
+ cwd=self.checkout_path) |
+ break |
+ except subprocess2.CalledProcessError, e: |
+ # Hackish but at that point, git is known to work so just checking for |
+ # 502 in stderr should be fine. |
+ if '502' in e.stderr: |
+ print(str(e)) |
+ print('Sleeping %.1f seconds and retrying...' % backoff_time) |
+ time.sleep(backoff_time) |
+ backoff_time *= 1.3 |
+ continue |
+ raise |
- if verbose: |
- print(remote_output.strip()) |
+ if verbose: |
+ print(remote_output.strip()) |
# This is a big hammer, debatable if it should even be here... |
if options.force or options.reset: |