comparison tests/test-clone.t @ 40176:41263df08109

wireprotov2: change how revisions are specified to changesetdata Right now, we have a handful of arguments for specifying the revisions whose data should be returned. Defining how all these arguments interact when various combinations are present is difficult. This commit establishes a new, generic mechanism for specifying revisions. Instead of a hodgepodge of arguments defining things, we have a list of dicts that specify revision selectors. The final set of revisions is a union of all these selectors. We implement support for specifying revisions based on: * An explicit list of changeset revisions * An explicit list of changeset revisions plus ancestry depth * A DAG range between changeset roots and heads If you squint hard enough, this problem has already been solved by revsets. But I'm reluctant to expose revsets to the wire protocol because that would require servers to implement a revset parser. Plus there are security and performance implications: the set of revision selectors needs to be narrowly and specifically tailored for what is appropriate to be executing on a server. Perhaps there would be a way for us to express the "parse tree" of a revset query, for example. I'm not sure. We can explore this space another time. For now, the new mechanism should bring sufficient flexibility while remaining relatively simple. The selector "types" are prefixed with "changeset" because I plan to add manifest and file-flavored selectors as well. This will enable us to e.g. select file revisions based on a range of changeset revisions. Differential Revision: https://phab.mercurial-scm.org/D4979
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 08 Oct 2018 18:17:12 -0700
parents d059cb669632
children 7ba6b880b09a
comparison
equal deleted inserted replaced
40175:6c42409691ec 40176:41263df08109
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-0002 (glob) (sshv2 !) 1180 sending upgrade request: * proto=exp-ssh-v2-0003 (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-0002 (glob) (sshv2 !) 1187 sending upgrade request: * proto=exp-ssh-v2-0003 (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-0002 (glob) (sshv2 !) 1195 sending upgrade request: * proto=exp-ssh-v2-0003 (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-0002 (glob) (sshv2 !) 1202 sending upgrade request: * proto=exp-ssh-v2-0003 (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-0002 (glob) (sshv2 !) 1211 sending upgrade request: * proto=exp-ssh-v2-0003 (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