# HG changeset patch # User Boris Feld # Date 1517412694 -3600 # Node ID 768326377e4d34e3724fe14033723e2c50adb98e # Parent 84965e5f32419e7363fbd5b94401e3db9bf18f0a 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 diff -r 84965e5f3241 -r 768326377e4d mercurial/bundle2.py --- 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']) diff -r 84965e5f3241 -r 768326377e4d mercurial/exchange.py --- 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) diff -r 84965e5f3241 -r 768326377e4d tests/test-clone-uncompressed.t --- 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