comparison tests/test-clone.t @ 39814:d059cb669632

wireprotov2: allow multiple fields to follow revision maps The *data wire protocol commands emit a series of CBOR values. Because revision/delta data may be large, their data is emitted outside the map as a top-level bytestring value. Before this commit, we'd emit a single optional bytestring value after the revision descriptor map. This got the job done. But it was limiting in that we could only send a single field. And, it required the consumer to know that the presence of a key in the map implied the existence of a following bytestring value. This commit changes the encoding strategy so top-level bytestring values in the stream are explicitly denoted in a "fieldsfollowing" key. This key contains an array defining what fields that follow and the expected size of each field. By defining things this way, we can easily send N bytestring values without any ambiguity about their order. In addition, clients only need to know how to parse ``fieldsfollowing`` to know if extra values are present. Because this breaks backwards compatibility, we've bumped the version number of the wire protocol version 2 API endpoint. Differential Revision: https://phab.mercurial-scm.org/D4620
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 20 Sep 2018 12:57:23 -0700
parents 5abc47d4ca6b
children 41263df08109
comparison
equal deleted inserted replaced
39813:c30faea8d02d 39814:d059cb669632
1175 [255] 1175 [255]
1176 1176
1177 #if windows 1177 #if windows
1178 $ hg clone "ssh://%26touch%20owned%20/" --debug 1178 $ hg clone "ssh://%26touch%20owned%20/" --debug
1179 running sh -c "read l; read l; read l" "&touch owned " "hg -R . serve --stdio" 1179 running sh -c "read l; read l; read l" "&touch owned " "hg -R . serve --stdio"
1180 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) (sshv2 !) 1180 sending upgrade request: * proto=exp-ssh-v2-0002 (glob) (sshv2 !)
1181 sending hello command 1181 sending hello command
1182 sending between command 1182 sending between command
1183 abort: no suitable response from remote hg! 1183 abort: no suitable response from remote hg!
1184 [255] 1184 [255]
1185 $ hg clone "ssh://example.com:%26touch%20owned%20/" --debug 1185 $ hg clone "ssh://example.com:%26touch%20owned%20/" --debug
1186 running sh -c "read l; read l; read l" -p "&touch owned " example.com "hg -R . serve --stdio" 1186 running sh -c "read l; read l; read l" -p "&touch owned " example.com "hg -R . serve --stdio"
1187 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) (sshv2 !) 1187 sending upgrade request: * proto=exp-ssh-v2-0002 (glob) (sshv2 !)
1188 sending hello command 1188 sending hello command
1189 sending between command 1189 sending between command
1190 abort: no suitable response from remote hg! 1190 abort: no suitable response from remote hg!
1191 [255] 1191 [255]
1192 #else 1192 #else
1193 $ hg clone "ssh://%3btouch%20owned%20/" --debug 1193 $ hg clone "ssh://%3btouch%20owned%20/" --debug
1194 running sh -c "read l; read l; read l" ';touch owned ' 'hg -R . serve --stdio' 1194 running sh -c "read l; read l; read l" ';touch owned ' 'hg -R . serve --stdio'
1195 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) (sshv2 !) 1195 sending upgrade request: * proto=exp-ssh-v2-0002 (glob) (sshv2 !)
1196 sending hello command 1196 sending hello command
1197 sending between command 1197 sending between command
1198 abort: no suitable response from remote hg! 1198 abort: no suitable response from remote hg!
1199 [255] 1199 [255]
1200 $ hg clone "ssh://example.com:%3btouch%20owned%20/" --debug 1200 $ hg clone "ssh://example.com:%3btouch%20owned%20/" --debug
1201 running sh -c "read l; read l; read l" -p ';touch owned ' example.com 'hg -R . serve --stdio' 1201 running sh -c "read l; read l; read l" -p ';touch owned ' example.com 'hg -R . serve --stdio'
1202 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) (sshv2 !) 1202 sending upgrade request: * proto=exp-ssh-v2-0002 (glob) (sshv2 !)
1203 sending hello command 1203 sending hello command
1204 sending between command 1204 sending between command
1205 abort: no suitable response from remote hg! 1205 abort: no suitable response from remote hg!
1206 [255] 1206 [255]
1207 #endif 1207 #endif
1208 1208
1209 $ hg clone "ssh://v-alid.example.com/" --debug 1209 $ hg clone "ssh://v-alid.example.com/" --debug
1210 running sh -c "read l; read l; read l" v-alid\.example\.com ['"]hg -R \. serve --stdio['"] (re) 1210 running sh -c "read l; read l; read l" v-alid\.example\.com ['"]hg -R \. serve --stdio['"] (re)
1211 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) (sshv2 !) 1211 sending upgrade request: * proto=exp-ssh-v2-0002 (glob) (sshv2 !)
1212 sending hello command 1212 sending hello command
1213 sending between command 1213 sending between command
1214 abort: no suitable response from remote hg! 1214 abort: no suitable response from remote hg!
1215 [255] 1215 [255]
1216 1216