Mercurial > hg
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 |