diff --git a/mercurial/mergestate.py b/mercurial/mergestate.py --- a/mercurial/mergestate.py +++ b/mercurial/mergestate.py @@ -865,6 +865,7 @@ self._basectx = ctx self.reset() self._ancestor_filectxs = {} + self._state = {} def __iter__(self): return iter(sorted(self._conflicts)) @@ -875,7 +876,9 @@ # TODO(augie): the rebase codepath depends on non-implicit # ancestor. I think we should fix things so that ancestor can # be passed in to reset(). - self._ancestor_filectxs[fcl.path()] = fca + print('paths', fcl.path(), fco.path(), fca.path(), fd) + self._ancestor_filectxs[fd] = fca + self._state[fd] = fcl, fco, fca # Since memmergestate isn't mutable yet, these are all trivial # implementations used by the "happy path" in merge code. @@ -949,12 +952,13 @@ fca = _filectxorabsent( nullhex if dfile not in actx else None, actx, dfile ) + fcl, fco, fca = self._state[dfile] fn = filemerge.premerge if preresolve else filemerge.filemerge complete, mergeret, deleted = fn( self._repo, wctx, self._local, - dfile, # orig + fcl.path(), fcd, fco, fca,