# HG changeset patch # User Matt Mackall # Date 1391111816 21600 # Node ID 46c2331fc7509563d5e01f418ae28eab1e73dfc5 # Parent 82cbaf025b989233e55eb36839fa0f176ba9690a rebase: abort cleanly when we encounter a damaged rebasestate (issue4155) diff -r 82cbaf025b98 -r 46c2331fc750 hgext/rebase.py --- a/hgext/rebase.py Thu Jan 30 17:09:13 2014 +0900 +++ b/hgext/rebase.py Thu Jan 30 13:56:56 2014 -0600 @@ -658,6 +658,7 @@ def restorestatus(repo): 'Restore a previously stored status' try: + keepbranches = None target = None collapse = False external = nullrev @@ -687,6 +688,10 @@ state[repo[oldrev].rev()] = int(newrev) else: state[repo[oldrev].rev()] = repo[newrev].rev() + + if keepbranches is None: + raise util.Abort(_('.hg/rebasestate is incomplete')) + skipped = set() # recompute the set of skipped revs if not collapse: diff -r 82cbaf025b98 -r 46c2331fc750 tests/test-rebase-abort.t --- a/tests/test-rebase-abort.t Thu Jan 30 17:09:13 2014 +0900 +++ b/tests/test-rebase-abort.t Thu Jan 30 13:56:56 2014 -0600 @@ -13,6 +13,16 @@ $ hg init a $ cd a + $ touch .hg/rebasestate + $ hg sum + parent: -1:000000000000 tip (empty repository) + branch: default + commit: (clean) + update: (current) + abort: .hg/rebasestate is incomplete + [255] + $ rm .hg/rebasestate + $ echo c1 > common $ hg add common $ hg ci -m C1