narrow: allow merging non-conflicting change outside of the narrow spec
We use the mergestate to carry information about these merge action and
reprocess them at commit time to apply the necessary update.
The dirstate itself is never affected and remains "pure", with content only in
the narrow-spec. This file involved in such merge are therefor not listed in `hg
status`.
The current testing is based on a modification of the previous testing, that
refused to do such merges. As a result it is a bit simple and more extensive
code and testing testing will have to be introduced later. I am planning to do
this extra testing, soon.
In addition, this only works for flat manifest. Support for tree manifest will
need more work. I am not currently planning to do this work.
Differential Revision: https://phab.mercurial-scm.org/D12119
from __future__ import absolute_import
from mercurial.i18n import _
from mercurial import (
hg,
registrar,
)
from mercurial.utils import (
urlutil,
)
cmdtable = {}
command = registrar.command(cmdtable)
@command(b'getflogheads', [], b'path')
def getflogheads(ui, repo, path):
"""
Extension printing a remotefilelog's heads
Used for testing purpose
"""
dest = urlutil.get_unique_pull_path(b'getflogheads', repo, ui)[0]
peer = hg.peer(repo, {}, dest)
try:
flogheads = peer.x_rfl_getflogheads(path)
finally:
peer.close()
if flogheads:
for head in flogheads:
ui.write(head + b'\n')
else:
ui.write(_(b'EMPTY\n'))