Mercurial > hg-stable
changeset 32389:9742f937c971
localrepo: migrate to context manager for changing dirstate parents
author | Augie Fackler <augie@google.com> |
---|---|
date | Thu, 18 May 2017 17:11:14 -0400 |
parents | 81936f6462c1 |
children | c568c187102f |
files | mercurial/localrepo.py |
diffstat | 1 files changed, 14 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/localrepo.py Thu May 18 17:11:07 2017 -0400 +++ b/mercurial/localrepo.py Thu May 18 17:11:14 2017 -0400 @@ -850,21 +850,20 @@ return self[changeid] def setparents(self, p1, p2=nullid): - self.dirstate.beginparentchange() - copies = self.dirstate.setparents(p1, p2) - pctx = self[p1] - if copies: - # Adjust copy records, the dirstate cannot do it, it - # requires access to parents manifests. Preserve them - # only for entries added to first parent. - for f in copies: - if f not in pctx and copies[f] in pctx: - self.dirstate.copy(copies[f], f) - if p2 == nullid: - for f, s in sorted(self.dirstate.copies().items()): - if f not in pctx and s not in pctx: - self.dirstate.copy(None, f) - self.dirstate.endparentchange() + with self.dirstate.parentchange(): + copies = self.dirstate.setparents(p1, p2) + pctx = self[p1] + if copies: + # Adjust copy records, the dirstate cannot do it, it + # requires access to parents manifests. Preserve them + # only for entries added to first parent. + for f in copies: + if f not in pctx and copies[f] in pctx: + self.dirstate.copy(copies[f], f) + if p2 == nullid: + for f, s in sorted(self.dirstate.copies().items()): + if f not in pctx and s not in pctx: + self.dirstate.copy(None, f) def filectx(self, path, changeid=None, fileid=None): """changeid can be a changeset revision, node, or tag.