D6851: narrow: don't hexify paths and double-hexify known nodes on wire (BC)
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Mon Sep 16 00:49:30 EDT 2019
martinvonz edited the summary of this revision.
martinvonz updated this revision to Diff 16553.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6851?vs=16544&id=16553
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6851/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6851
AFFECTED FILES
hgext/narrow/narrowcommands.py
hgext/narrow/narrowwirepeer.py
relnotes/next
CHANGE DETAILS
diff --git a/relnotes/next b/relnotes/next
--- a/relnotes/next
+++ b/relnotes/next
@@ -15,5 +15,9 @@
you can override it by setting `$HGTEST_SHELL` or by passing it to
`run-tests.py --shell <shell>`.
+ * The (experimental) narrow extension's wire protocol changed. If
+ you're using it, you'll need to make sure to upgrade server and
+ client at the same time.
+
== Internal API Changes ==
diff --git a/hgext/narrow/narrowwirepeer.py b/hgext/narrow/narrowwirepeer.py
--- a/hgext/narrow/narrowwirepeer.py
+++ b/hgext/narrow/narrowwirepeer.py
@@ -13,7 +13,6 @@
extensions,
hg,
narrowspec,
- node as nodemod,
pycompat,
wireprototypes,
wireprotov1peer,
@@ -61,10 +60,13 @@
preferuncompressed = False
try:
- oldincludes = wireprototypes.decodelist(oldincludes)
- newincludes = wireprototypes.decodelist(newincludes)
- oldexcludes = wireprototypes.decodelist(oldexcludes)
- newexcludes = wireprototypes.decodelist(newexcludes)
+ def splitpaths(data):
+ # work around ''.split(',') => ['']
+ return data.split(b',') if data else []
+ oldincludes = splitpaths(oldincludes)
+ newincludes = splitpaths(newincludes)
+ oldexcludes = splitpaths(oldexcludes)
+ newexcludes = splitpaths(newexcludes)
# validate the patterns
narrowspec.validatepatterns(set(oldincludes))
narrowspec.validatepatterns(set(newincludes))
@@ -73,7 +75,6 @@
common = wireprototypes.decodelist(commonheads)
known = wireprototypes.decodelist(known)
- known = {nodemod.bin(n) for n in known}
if ellipses == '0':
ellipses = False
else:
@@ -106,10 +107,12 @@
prefer_uncompressed=preferuncompressed)
def peernarrowwiden(remote, **kwargs):
- for ch in (r'oldincludes', r'newincludes', r'oldexcludes', r'newexcludes',
- r'commonheads', r'known'):
+ for ch in (r'commonheads', r'known'):
kwargs[ch] = wireprototypes.encodelist(kwargs[ch])
+ for ch in (r'oldincludes', r'newincludes', r'oldexcludes', r'newexcludes'):
+ kwargs[ch] = b','.join(kwargs[ch])
+
kwargs[r'ellipses'] = '%i' % bool(kwargs[r'ellipses'])
f = remote._callcompressable('narrow_widen', **kwargs)
return bundle2.getunbundler(remote.ui, f)
diff --git a/hgext/narrow/narrowcommands.py b/hgext/narrow/narrowcommands.py
--- a/hgext/narrow/narrowcommands.py
+++ b/hgext/narrow/narrowcommands.py
@@ -293,7 +293,7 @@
else:
known = []
if ellipsesremote:
- known = [node.hex(ctx.node()) for ctx in
+ known = [ctx.node() for ctx in
repo.set('::%ln', common)
if ctx.node() != node.nullid]
with remote.commandexecutor() as e:
To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list