dirstate: fix restoration of "merged" state after a remove
Before this change, "merged" file that get removed and re-added later were
recorded as "from_p2" instead.
This came from
8fe74328f700, a 2014 changeset that start explicitly doing so
for reason I have not been able to fully grasp. The graft test mentioned in
the description are still happy after this changeset.
So this changeset restore what seems to be the intended behavior. Restoring
information as it was before the removal.
Differential Revision: https://phab.mercurial-scm.org/D11429
== New Features ==
* `hg mv -A` can now be used with `--at-rev`. It behaves just like
`hg cp -A --at-rev`, i.e. it marks the destination as a copy of the
source whether or not the source still exists (but the source must
exist in the parent revision).
* New revset predicate `diffcontains(pattern)` for filtering revisions
in the same way as `hg grep --diff pattern`.
* The memory footprint per changeset and per file during pull/unbundle
operations has been significantly reduced.
== New Experimental Features ==
== Bug Fixes ==
== Backwards Compatibility Changes ==
== Internal API Changes ==
* `merge.update()` is now private (renamed to `_update()`). Hopefully
the higher-level functions available in the same module cover your
use cases.
* `phases.registernew` now takes a set of revisions instead of a list
of nodes. `phases.advanceboundary` takes an optional set of revisions
in addition to the list of nodes. The corresponeding members of the
`phasecache` class follow this change.
* The `addgroup` member of `revlog` classes no longer keeps a list of
all found nodes. It now returns True iff a node was found in the group.
An optional callback for duplicated nodes can be used by callers to keep
track of all nodes themselve.
* The `_chaininfocache` of `revlog` classes has been changed from a dict
to a LRU cache.