D6436: narrow: use narrow_widen wireproto command to widen in case of ellipses
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Tue Jun 4 17:57:56 UTC 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGc767e655ffda: narrow: use narrow_widen wireproto command to widen in case of ellipses (authored by pulkit, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6436?vs=15336&id=15338
REVISION DETAIL
https://phab.mercurial-scm.org/D6436
AFFECTED FILES
hgext/narrow/narrowcommands.py
hgext/narrow/narrowwirepeer.py
mercurial/wireprototypes.py
tests/test-narrow-patterns.t
tests/test-narrow-trackedcmd.t
tests/test-narrow-widen.t
tests/test-narrow.t
CHANGE DETAILS
diff --git a/tests/test-narrow.t b/tests/test-narrow.t
--- a/tests/test-narrow.t
+++ b/tests/test-narrow.t
@@ -290,13 +290,11 @@
$ hg tracked --addinclude d0
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow-empty/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 3 changesets with 1 changes to 1 files
- new changesets *:* (glob)
$ hg tracked
I path:d0
$ hg files
diff --git a/tests/test-narrow-widen.t b/tests/test-narrow-widen.t
--- a/tests/test-narrow-widen.t
+++ b/tests/test-narrow-widen.t
@@ -95,13 +95,11 @@
$ hg tracked --addinclude widest/f
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 2 files
- new changesets *:* (glob)
$ hg tracked
I path:inside
I path:widest/f
@@ -154,13 +152,11 @@
$ hg tracked --addinclude wider
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 8 changesets with 7 changes to 3 files
- new changesets *:* (glob)
$ hg tracked
I path:inside
I path:wider
@@ -261,13 +257,11 @@
$ hg tracked --addinclude d1
comparing with ssh://user@dummy/upstream
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 9 changesets with 5 changes to 5 files
- new changesets *:* (glob)
$ hg tracked
I path:d0
I path:d1
@@ -342,7 +336,6 @@
$ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
comparing with ssh://user@dummy/upstream
searching for changes
- no changes found
saved backup bundle to $TESTTMP/interrupted/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
diff --git a/tests/test-narrow-trackedcmd.t b/tests/test-narrow-trackedcmd.t
--- a/tests/test-narrow-trackedcmd.t
+++ b/tests/test-narrow-trackedcmd.t
@@ -145,13 +145,11 @@
looking for local changes to affected paths
deleting data/inside/f.i
deleting meta/inside/00manifest.i (tree !)
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 2 changesets with 0 changes to 0 files
- new changesets *:* (glob)
$ hg tracked
I path:outisde
X path:inside
@@ -166,13 +164,11 @@
$ hg tracked --import-rules specs --addinclude 'wider/'
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 3 changesets with 1 changes to 1 files
- new changesets *:* (glob)
$ hg tracked
I path:outisde
I path:wider
@@ -211,13 +207,11 @@
$ hg tracked --import-rules ../nspecs
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 3 changesets with 0 changes to 0 files
- new changesets *:* (glob)
$ cd ..
diff --git a/tests/test-narrow-patterns.t b/tests/test-narrow-patterns.t
--- a/tests/test-narrow-patterns.t
+++ b/tests/test-narrow-patterns.t
@@ -135,13 +135,11 @@
$ hg tracked --removeexclude dir1/dirA
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 9 changesets with 6 changes to 6 files
- new changesets *:* (glob)
$ hg tracked
I path:dir1
I path:dir2
@@ -195,13 +193,11 @@
deleting data/dir1/dirA/bar.i (reporevlogstore !)
deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !)
deleting data/dir1/dirA/bar/index (reposimplestore !)
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 11 changesets with 7 changes to 7 files
- new changesets *:* (glob)
$ hg tracked
I path:dir1
I path:dir2
@@ -253,13 +249,11 @@
deleting data/dir1/dirA/foo.i (reporevlogstore !)
deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !)
deleting data/dir1/dirA/foo/index (reposimplestore !)
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 13 changesets with 8 changes to 8 files
- new changesets *:* (glob)
$ hg tracked
I path:dir1
I path:dir2
@@ -312,13 +306,11 @@
$ hg tracked --removeexclude dir1/dirA
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 13 changesets with 9 changes to 9 files
- new changesets *:* (glob)
$ hg tracked
I path:dir1
I path:dir2
@@ -389,13 +381,11 @@
$ hg tracked --addinclude dir1
comparing with ssh://user@dummy/master
searching for changes
- no changes found
saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
adding changesets
adding manifests
adding file changes
added 10 changesets with 6 changes to 6 files
- new changesets *:* (glob)
$ find * | sort
dir1
dir1/bar
diff --git a/mercurial/wireprototypes.py b/mercurial/wireprototypes.py
--- a/mercurial/wireprototypes.py
+++ b/mercurial/wireprototypes.py
@@ -30,7 +30,9 @@
HTTP_WIREPROTO_V2 = 'exp-http-v2-0003'
NARROWCAP = 'exp-narrow-1'
-ELLIPSESCAP = 'exp-ellipses-1'
+ELLIPSESCAP1 = 'exp-ellipses-1'
+ELLIPSESCAP = 'exp-ellipses-2'
+SUPPORTED_ELLIPSESCAP = (ELLIPSESCAP1, ELLIPSESCAP)
# All available wire protocol transports.
TRANSPORTS = {
diff --git a/hgext/narrow/narrowwirepeer.py b/hgext/narrow/narrowwirepeer.py
--- a/hgext/narrow/narrowwirepeer.py
+++ b/hgext/narrow/narrowwirepeer.py
@@ -13,12 +13,15 @@
extensions,
hg,
narrowspec,
+ node as nodemod,
pycompat,
wireprototypes,
wireprotov1peer,
wireprotov1server,
)
+from . import narrowbundle2
+
def uisetup():
wireprotov1peer.wirepeer.narrow_widen = peernarrowwiden
@@ -69,21 +72,26 @@
narrowspec.validatepatterns(set(newexcludes))
common = wireprototypes.decodelist(commonheads)
- known = None
- if known:
- known = wireprototypes.decodelist(known)
+ known = wireprototypes.decodelist(known)
+ known = {nodemod.bin(n) for n in known}
if ellipses == '0':
ellipses = False
else:
ellipses = bool(ellipses)
cgversion = cgversion
- newmatch = narrowspec.match(repo.root, include=newincludes,
- exclude=newexcludes)
- oldmatch = narrowspec.match(repo.root, include=oldincludes,
- exclude=oldexcludes)
- bundler = bundle2.widen_bundle(repo, oldmatch, newmatch, common, known,
- cgversion, ellipses)
+ if not ellipses:
+ newmatch = narrowspec.match(repo.root, include=newincludes,
+ exclude=newexcludes)
+ oldmatch = narrowspec.match(repo.root, include=oldincludes,
+ exclude=oldexcludes)
+ bundler = bundle2.widen_bundle(repo, oldmatch, newmatch, common,
+ known, cgversion, ellipses)
+ else:
+ bundler = bundle2.bundle20(repo.ui)
+ narrowbundle2.generateellipsesbundle2(bundler, repo, oldincludes,
+ oldexcludes, newincludes, newexcludes, cgversion, common,
+ list(common), known, None)
except error.Abort as exc:
bundler = bundle2.bundle20(repo.ui)
manargs = [('message', pycompat.bytestr(exc))]
diff --git a/hgext/narrow/narrowcommands.py b/hgext/narrow/narrowcommands.py
--- a/hgext/narrow/narrowcommands.py
+++ b/hgext/narrow/narrowcommands.py
@@ -146,7 +146,7 @@
kwargs['excludepats'] = exclude
# calculate known nodes only in ellipses cases because in non-ellipses cases
# we have all the nodes
- if wireprototypes.ELLIPSESCAP in pullop.remote.capabilities():
+ if wireprototypes.ELLIPSESCAP1 in pullop.remote.capabilities():
kwargs['known'] = [node.hex(ctx.node()) for ctx in
repo.set('::%ln', pullop.common)
if ctx.node() != node.nullid]
@@ -253,7 +253,14 @@
# then send that information to server whether we want ellipses or not.
# Theoretically a non-ellipses repo should be able to use narrow
# functionality from an ellipses enabled server
- ellipsesremote = wireprototypes.ELLIPSESCAP in remote.capabilities()
+ remotecap = remote.capabilities()
+ ellipsesremote = any(cap in remotecap
+ for cap in wireprototypes.SUPPORTED_ELLIPSESCAP)
+
+ # check whether we are talking to a server which supports old version of
+ # ellipses capabilities
+ isoldellipses = (ellipsesremote and wireprototypes.ELLIPSESCAP1 in
+ remotecap and wireprototypes.ELLIPSESCAP not in remotecap)
def pullbundle2extraprepare_widen(orig, pullop, kwargs):
orig(pullop, kwargs)
@@ -279,8 +286,31 @@
with ds.parentchange():
ds.setparents(node.nullid, node.nullid)
with wrappedextraprepare:
- with repo.ui.configoverride(overrides, 'widen'):
+ if isoldellipses:
exchange.pull(repo, remote, heads=common)
+ else:
+ known = [node.hex(ctx.node()) for ctx in
+ repo.set('::%ln', common)
+ if ctx.node() != node.nullid]
+
+ with remote.commandexecutor() as e:
+ bundle = e.callcommand('narrow_widen', {
+ 'oldincludes': oldincludes,
+ 'oldexcludes': oldexcludes,
+ 'newincludes': newincludes,
+ 'newexcludes': newexcludes,
+ 'cgversion': '03',
+ 'commonheads': common,
+ 'known': known,
+ 'ellipses': True,
+ }).result()
+ trmanager = exchange.transactionmanager(repo, 'widen',
+ remote.url())
+ with trmanager:
+ op = bundle2.bundleoperation(repo,
+ trmanager.transaction, source='widen')
+ bundle2.processbundle(repo, bundle, op=op)
+
with ds.parentchange():
ds.setparents(p1, p2)
else:
To: pulkit, durin42, martinvonz, #hg-reviewers
Cc: marmoute, rdamazio, mercurial-devel
More information about the Mercurial-devel
mailing list