Index: cros_mark_as_stable.py |
diff --git a/cros_mark_as_stable.py b/cros_mark_as_stable.py |
index 5df6a83fef1989d811fe28c895ae6d228387185f..2425ff2b02b84519dcc91e2c8ce859afcf558141 100755 |
--- a/cros_mark_as_stable.py |
+++ b/cros_mark_as_stable.py |
@@ -215,6 +215,7 @@ def _PushChange(): |
Raises: |
OSError: Error occurred while pushing. |
""" |
+ num_retries = 5 |
# TODO(sosa) - Add logic for buildbot to check whether other slaves have |
# completed and push this change only if they have. |
@@ -229,16 +230,25 @@ def _PushChange(): |
gflags.FLAGS.tracking_branch + '..') |
description = 'Marking set of ebuilds as stable\n\n%s' % description |
merge_branch_name = 'merge_branch' |
- _SimpleRunCommand('git remote update') |
- merge_branch = _GitBranch(merge_branch_name) |
- merge_branch.CreateBranch() |
- if not merge_branch.Exists(): |
- Die('Unable to create merge branch.') |
- _SimpleRunCommand('git merge --squash %s' % _STABLE_BRANCH_NAME) |
- _SimpleRunCommand('git commit -m "%s"' % description) |
- # Ugh. There has got to be an easier way to push to a tracking branch |
- _SimpleRunCommand('git config push.default tracking') |
- _SimpleRunCommand('git push') |
+ for push_try in range(num_retries + 1): |
+ try: |
+ _SimpleRunCommand('git remote update') |
+ merge_branch = _GitBranch(merge_branch_name) |
+ merge_branch.CreateBranch() |
+ if not merge_branch.Exists(): |
+ Die('Unable to create merge branch.') |
+ _SimpleRunCommand('git merge --squash %s' % _STABLE_BRANCH_NAME) |
+ _SimpleRunCommand('git commit -m "%s"' % description) |
+ # Ugh. There has got to be an easier way to push to a tracking branch |
+ _SimpleRunCommand('git config push.default tracking') |
+ _SimpleRunCommand('git push') |
+ break |
+ except: |
+ if push_try < num_retries: |
+ Warning('Failed to push change, performing retry (%s/%s)' % ( |
+ push_try + 1, num_retries)) |
+ else: |
+ raise |
def _SimpleRunCommand(command): |