bundle2: fix the formatting of the stream part requirements stable
authorBoris Feld <boris.feld@octobus.net>
Wed, 31 Jan 2018 16:31:34 +0100
branchstable
changeset 35813 768326377e4d
parent 35812 84965e5f3241
child 35814 92b7039613d0
bundle2: fix the formatting of the stream part requirements Use the same pre-encoded normalization as bundlespecs for the stream v2 part requirements. As it touch the wire protocol, it needs to change before the release. This was spotted by Gregory Szorc. Differential Revision: https://phab.mercurial-scm.org/D1950
mercurial/bundle2.py
mercurial/exchange.py
tests/test-clone-uncompressed.t
--- a/mercurial/bundle2.py	Mon Jan 29 10:28:10 2018 +0100
+++ b/mercurial/bundle2.py	Wed Jan 31 16:31:34 2018 +0100
@@ -2143,7 +2143,7 @@
 @parthandler('stream2', ('requirements', 'filecount', 'bytecount'))
 def handlestreamv2bundle(op, part):
 
-    requirements = part.params['requirements'].split()
+    requirements = urlreq.unquote(part.params['requirements']).split(',')
     filecount = int(part.params['filecount'])
     bytecount = int(part.params['bytecount'])
 
--- a/mercurial/exchange.py	Mon Jan 29 10:28:10 2018 +0100
+++ b/mercurial/exchange.py	Wed Jan 31 16:31:34 2018 +0100
@@ -1793,7 +1793,7 @@
     bundler.prefercompressed = False
 
     filecount, bytecount, it = streamclone.generatev2(repo)
-    requirements = ' '.join(sorted(repo.requirements))
+    requirements = _formatrequirementsspec(repo.requirements)
     part = bundler.newpart('stream2', data=it)
     part.addparam('bytecount', '%d' % bytecount, mandatory=True)
     part.addparam('filecount', '%d' % filecount, mandatory=True)
--- a/tests/test-clone-uncompressed.t	Mon Jan 29 10:28:10 2018 +0100
+++ b/tests/test-clone-uncompressed.t	Wed Jan 31 16:31:34 2018 +0100
@@ -199,23 +199,23 @@
   
 
   $ f --size --hex --bytes 256 body
-  body: size=112222
+  body: size=112230
   0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......|
-  0010: 68 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |h.STREAM2.......|
-  0020: 05 09 04 0c 2d 62 79 74 65 63 6f 75 6e 74 39 38 |....-bytecount98|
+  0010: 70 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |p.STREAM2.......|
+  0020: 05 09 04 0c 35 62 79 74 65 63 6f 75 6e 74 39 38 |....5bytecount98|
   0030: 37 35 38 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |758filecount1030|
   0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote|
-  0050: 6e 63 6f 64 65 20 66 6e 63 61 63 68 65 20 67 65 |ncode fncache ge|
-  0060: 6e 65 72 61 6c 64 65 6c 74 61 20 72 65 76 6c 6f |neraldelta revlo|
-  0070: 67 76 31 20 73 74 6f 72 65 00 00 80 00 73 08 42 |gv1 store....s.B|
-  0080: 64 61 74 61 2f 30 2e 69 00 03 00 01 00 00 00 00 |data/0.i........|
-  0090: 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 01 |................|
-  00a0: ff ff ff ff ff ff ff ff 80 29 63 a0 49 d3 23 87 |.........)c.I.#.|
-  00b0: bf ce fe 56 67 92 67 2c 69 d1 ec 39 00 00 00 00 |...Vg.g,i..9....|
-  00c0: 00 00 00 00 00 00 00 00 75 30 73 08 42 64 61 74 |........u0s.Bdat|
-  00d0: 61 2f 31 2e 69 00 03 00 01 00 00 00 00 00 00 00 |a/1.i...........|
-  00e0: 02 00 00 00 01 00 00 00 00 00 00 00 01 ff ff ff |................|
-  00f0: ff ff ff ff ff f9 76 da 1d 0d f2 25 6c de 08 db |......v....%l...|
+  0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%|
+  0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2|
+  0070: 43 72 65 76 6c 6f 67 76 31 25 32 43 73 74 6f 72 |Crevlogv1%2Cstor|
+  0080: 65 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 |e....s.Bdata/0.i|
+  0090: 00 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 |................|
+  00a0: 00 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff |................|
+  00b0: 80 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c |.)c.I.#....Vg.g,|
+  00c0: 69 d1 ec 39 00 00 00 00 00 00 00 00 00 00 00 00 |i..9............|
+  00d0: 75 30 73 08 42 64 61 74 61 2f 31 2e 69 00 03 00 |u0s.Bdata/1.i...|
+  00e0: 01 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 |................|
+  00f0: 00 00 00 00 01 ff ff ff ff ff ff ff ff f9 76 da |..............v.|
 
 --uncompressed is an alias to --stream