Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 22405:6f63c47cbb86
dirstate: wrap setparent calls with begin/endparentchange (issue4353)
This wraps all the locations of dirstate.setparent with the appropriate
begin/endparentchange calls. This will prevent exceptions during those calls
from causing incoherent dirstates (issue4353).
author | Durham Goode <durham@fb.com> |
---|---|
date | Fri, 05 Sep 2014 11:36:20 -0700 |
parents | 12bc7f06fc41 |
children | e6e7ef68c879 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Fri Sep 05 11:34:29 2014 -0700 +++ b/mercurial/localrepo.py Fri Sep 05 11:36:20 2014 -0700 @@ -758,6 +758,7 @@ return self[changeid].parents() def setparents(self, p1, p2=nullid): + self.dirstate.beginparentchange() copies = self.dirstate.setparents(p1, p2) pctx = self[p1] if copies: @@ -771,6 +772,7 @@ 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() def filectx(self, path, changeid=None, fileid=None): """changeid can be a changeset revision, node, or tag.