# HG changeset patch # User Augie Fackler # Date 1495141884 14400 # Node ID c568c187102fc72956e8f69955c4b493fe683321 # Parent 9742f937c97124ff689c408118751f00e47af28d merge: migrate to context manager for changing dirstate parents diff -r 9742f937c971 -r c568c187102f mercurial/merge.py --- a/mercurial/merge.py Thu May 18 17:11:14 2017 -0400 +++ b/mercurial/merge.py Thu May 18 17:11:24 2017 -0400 @@ -1696,15 +1696,14 @@ stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels) if not partial: - repo.dirstate.beginparentchange() - repo.setparents(fp1, fp2) - recordupdates(repo, actions, branchmerge) - # update completed, clear state - util.unlink(repo.vfs.join('updatestate')) + with repo.dirstate.parentchange(): + repo.setparents(fp1, fp2) + recordupdates(repo, actions, branchmerge) + # update completed, clear state + util.unlink(repo.vfs.join('updatestate')) - if not branchmerge: - repo.dirstate.setbranch(p2.branch()) - repo.dirstate.endparentchange() + if not branchmerge: + repo.dirstate.setbranch(p2.branch()) if not partial: repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3]) @@ -1742,10 +1741,9 @@ parents.remove(pctx) pother = parents[0].node() - repo.dirstate.beginparentchange() - repo.setparents(repo['.'].node(), pother) - repo.dirstate.write(repo.currenttransaction()) - # fix up dirstate for copies and renames - copies.duplicatecopies(repo, ctx.rev(), pctx.rev()) - repo.dirstate.endparentchange() + with repo.dirstate.parentchange(): + repo.setparents(repo['.'].node(), pother) + repo.dirstate.write(repo.currenttransaction()) + # fix up dirstate for copies and renames + copies.duplicatecopies(repo, ctx.rev(), pctx.rev()) return stats