diff -r 0d494a38c586 -r ebf6d38c9063 mercurial/localrepo.py --- a/mercurial/localrepo.py Sun Apr 29 16:18:46 2012 +0200 +++ b/mercurial/localrepo.py Sun Apr 29 22:25:55 2012 +0200 @@ -633,6 +633,17 @@ '''get list of changectxs for parents of changeid''' return self[changeid].parents() + def setparents(self, p1, p2=nullid): + copies = self.dirstate.setparents(p1, p2) + 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. + pctx = self[p1] + for f in copies: + if f not in pctx and copies[f] in pctx: + self.dirstate.copy(copies[f], f) + def filectx(self, path, changeid=None, fileid=None): """changeid can be a changeset revision, node, or tag. fileid can be a file revision or node."""