diff --git a/hgext/rebase.py b/hgext/rebase.py index 12f3c7144a391f60229cfa83e53122bc9148dde0_aGdleHQvcmViYXNlLnB5..c8a97fa742b716573e8de3e82c3c6968e4537b79_aGdleHQvcmViYXNlLnB5 100644 --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -530,4 +530,5 @@ '''Commit the wd changes with parents p1 and p2. Reuse commit info from rev but also store useful information in extra. Return node of committed revision.''' + dsguard = cmdutil.dirstateguard(repo, 'rebase') try: @@ -533,3 +534,2 @@ try: - repo.dirstate.beginparentchange() repo.setparents(repo[p1].node(), repo[p2].node()) @@ -535,5 +535,4 @@ repo.setparents(repo[p1].node(), repo[p2].node()) - repo.dirstate.endparentchange() ctx = repo[rev] if commitmsg is None: commitmsg = ctx.description() @@ -552,4 +551,5 @@ repo.ui.restoreconfig(backup) repo.dirstate.setbranch(repo[newnode].branch()) + dsguard.close() return newnode @@ -555,8 +555,6 @@ return newnode - except util.Abort: - # Invalidate the previous setparents - repo.dirstate.invalidate() - raise + finally: + release(dsguard) def rebasenode(repo, rev, p1, base, state, collapse, target): 'Rebase a single revision rev on top of p1 using base as merge ancestor' diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t index 12f3c7144a391f60229cfa83e53122bc9148dde0_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLW1pc2MudA==..c8a97fa742b716573e8de3e82c3c6968e4537b79_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLW1pc2MudA== 100644 --- a/tests/test-largefiles-misc.t +++ b/tests/test-largefiles-misc.t @@ -1017,7 +1017,7 @@ $ hg -R no-largefiles -q pull --rebase Invoking status precommit hook - ? normal3 + M normal3 (test reverting)