diff --git a/mercurial/mergestate.py b/mercurial/mergestate.py --- a/mercurial/mergestate.py +++ b/mercurial/mergestate.py @@ -875,6 +875,7 @@ self._basectx = ctx self.reset() self._ancestor_filectxs = {} + self._state = {} def add(self, fcl, fco, fca, fd): """add a new (potentially?) conflicting file to the merge state""" @@ -882,7 +883,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. @@ -956,12 +959,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,