Handle unusual case in rebase-update where second rebase attempt works.

Previously we just added an assert here but better
to simply succeed in this case, while outputting
the intial failure message.

BUG=425696

Review URL: https://codereview.chromium.org/667793005

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@292687 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
sbc@chromium.org
2014-10-27 20:26:04 +00:00
parent 9c99943d35
commit 8b4900e77f
2 changed files with 23 additions and 18 deletions

View File

@@ -148,30 +148,36 @@ def rebase_branch(branch, parent, start_hash):
git.squash_current_branch(merge_base=start_hash)
git.rebase(parent, start_hash, branch)
else:
print "Failed!"
print
# rebase and leave in mid-rebase state.
# This second rebase attempt should always fail in the same
# way that the first one does. If it magically succeeds then
# something very strange has happened.
second_rebase_ret = git.rebase(parent, start_hash, branch)
assert(not second_rebase_ret.success)
print "Failed!"
print
print "Here's what git-rebase (squashed) had to say:"
print
print squash_ret.stdout
print squash_ret.stderr
print textwrap.dedent(
"""\
Squashing failed. You probably have a real merge conflict.
if second_rebase_ret.success: # pragma: no cover
print "Second rebase succeeded unexpectedly!"
print "Please see: http://crbug.com/425696"
print "First rebased failed with:"
print rebase_ret.stderr
else:
print "Here's what git-rebase (squashed) had to say:"
print
print squash_ret.stdout
print squash_ret.stderr
print textwrap.dedent(
"""\
Squashing failed. You probably have a real merge conflict.
Your working copy is in mid-rebase. Either:
* completely resolve like a normal git-rebase; OR
* abort the rebase and mark this branch as dormant:
git config branch.%s.dormant true
Your working copy is in mid-rebase. Either:
* completely resolve like a normal git-rebase; OR
* abort the rebase and mark this branch as dormant:
git config branch.%s.dormant true
And then run `git rebase-update` again to resume.
""" % branch)
return False
And then run `git rebase-update` again to resume.
""" % branch)
return False
else:
print '%s up-to-date' % branch