narrow: move the wireprotocol narrow capability name to core
We are trying to integrate the whole of narrow logic into core and it will be
helpful for upcoming patches to have these capability names in core. The next
patch will move the ellipses capability to core also.
The exact motivation is to know whether we are cloning a ellipses repo or not
and adding an ellipses repo requirement.
Differential Revision: https://phab.mercurial-scm.org/D4808
# Extension dedicated to test patch.diff() upgrade modes
from __future__ import absolute_import
from mercurial import (
error,
patch,
pycompat,
registrar,
scmutil,
)
cmdtable = {}
command = registrar.command(cmdtable)
@command(b'autodiff',
[(b'', b'git', b'', b'git upgrade mode (yes/no/auto/warn/abort)')],
b'[OPTION]... [FILE]...')
def autodiff(ui, repo, *pats, **opts):
opts = pycompat.byteskwargs(opts)
diffopts = patch.difffeatureopts(ui, opts)
git = opts.get(b'git', b'no')
brokenfiles = set()
losedatafn = None
if git in (b'yes', b'no'):
diffopts.git = git == b'yes'
diffopts.upgrade = False
elif git == b'auto':
diffopts.git = False
diffopts.upgrade = True
elif git == b'warn':
diffopts.git = False
diffopts.upgrade = True
def losedatafn(fn=None, **kwargs):
brokenfiles.add(fn)
return True
elif git == b'abort':
diffopts.git = False
diffopts.upgrade = True
def losedatafn(fn=None, **kwargs):
raise error.Abort(b'losing data for %s' % fn)
else:
raise error.Abort(b'--git must be yes, no or auto')
ctx1, ctx2 = scmutil.revpair(repo, [])
m = scmutil.match(ctx2, pats, opts)
it = patch.diff(repo, ctx1.node(), ctx2.node(), match=m, opts=diffopts,
losedatafn=losedatafn)
for chunk in it:
ui.write(chunk)
for fn in sorted(brokenfiles):
ui.write((b'data lost for: %s\n' % fn))