Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 32350: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 | 7aa4a4cf0dde |
children | 7cd1fa9dfd74 |
comparison
equal
deleted
inserted
replaced
32349:81936f6462c1 | 32350:9742f937c971 |
---|---|
848 | 848 |
849 def changectx(self, changeid): | 849 def changectx(self, changeid): |
850 return self[changeid] | 850 return self[changeid] |
851 | 851 |
852 def setparents(self, p1, p2=nullid): | 852 def setparents(self, p1, p2=nullid): |
853 self.dirstate.beginparentchange() | 853 with self.dirstate.parentchange(): |
854 copies = self.dirstate.setparents(p1, p2) | 854 copies = self.dirstate.setparents(p1, p2) |
855 pctx = self[p1] | 855 pctx = self[p1] |
856 if copies: | 856 if copies: |
857 # Adjust copy records, the dirstate cannot do it, it | 857 # Adjust copy records, the dirstate cannot do it, it |
858 # requires access to parents manifests. Preserve them | 858 # requires access to parents manifests. Preserve them |
859 # only for entries added to first parent. | 859 # only for entries added to first parent. |
860 for f in copies: | 860 for f in copies: |
861 if f not in pctx and copies[f] in pctx: | 861 if f not in pctx and copies[f] in pctx: |
862 self.dirstate.copy(copies[f], f) | 862 self.dirstate.copy(copies[f], f) |
863 if p2 == nullid: | 863 if p2 == nullid: |
864 for f, s in sorted(self.dirstate.copies().items()): | 864 for f, s in sorted(self.dirstate.copies().items()): |
865 if f not in pctx and s not in pctx: | 865 if f not in pctx and s not in pctx: |
866 self.dirstate.copy(None, f) | 866 self.dirstate.copy(None, f) |
867 self.dirstate.endparentchange() | |
868 | 867 |
869 def filectx(self, path, changeid=None, fileid=None): | 868 def filectx(self, path, changeid=None, fileid=None): |
870 """changeid can be a changeset revision, node, or tag. | 869 """changeid can be a changeset revision, node, or tag. |
871 fileid can be a file revision or node.""" | 870 fileid can be a file revision or node.""" |
872 return context.filectx(self, path, changeid, fileid) | 871 return context.filectx(self, path, changeid, fileid) |