comparison tests/test-wireproto-exchangev2.t @ 39631:b9e453d683a1

exchangev2: fetch changeset revisions All Mercurial repository data is derived from changesets: you can't do anything unless you have changesets. Therefore, it makes sense for changesets to be the first piece of data that we transfer as part of pull. To do this, we call our new "changesetdata" command, requesting parents and revision data. This gives us all the data that a changegroup delta group would give us. We simply normalize this data into what addgroup() expects and call that API on the changelog to bulk insert revisions into the changelog. Code in this commit is heavily borrowed from changegroup.cg1unpacker.apply(). Differential Revision: https://phab.mercurial-scm.org/D4482
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 12 Sep 2018 10:01:36 -0700
parents a86d21e70b2b
children ff2de4f2eb3c
comparison
equal deleted inserted replaced
39630:9c2c77c73f23 39631:b9e453d683a1
49 received frame(size=43; request=1; stream=2; streamflags=; type=command-response; flags=continuation) 49 received frame(size=43; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
50 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) 50 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
51 received frame(size=11; request=3; stream=2; streamflags=; type=command-response; flags=continuation) 51 received frame(size=11; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
52 received frame(size=1; request=3; stream=2; streamflags=; type=command-response; flags=continuation) 52 received frame(size=1; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
53 received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos) 53 received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
54 sending 1 commands
55 sending command changesetdata: {
56 'fields': set([
57 'parents',
58 'revision'
59 ]),
60 'noderange': [
61 [],
62 [
63 '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
64 '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
65 ]
66 ]
67 }
68 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
69 received frame(size=809; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
70 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
71 add changeset 3390ef850073
72 add changeset 4432d83626e8
73 add changeset cd2534766bec
74 add changeset e96ae20f4188
75 add changeset caa2a465451d
76 updating the branch cache
77 new changesets 3390ef850073:caa2a465451d
78
79 All changesets should have been transferred
80
81 $ hg -R client-simple debugindex -c
82 rev linkrev nodeid p1 p2
83 0 0 3390ef850073 000000000000 000000000000
84 1 1 4432d83626e8 3390ef850073 000000000000
85 2 2 cd2534766bec 4432d83626e8 000000000000
86 3 3 e96ae20f4188 3390ef850073 000000000000
87 4 4 caa2a465451d e96ae20f4188 000000000000
88
89 $ hg -R client-simple log -G -T '{rev} {node} {phase}\n'
90 o 4 caa2a465451dd1facda0f5b12312c355584188a1 public
91 |
92 o 3 e96ae20f4188487b9ae4ef3941c27c81143146e5 public
93 |
94 | o 2 cd2534766bece138c7c1afdc6825302f0f62d81f public
95 | |
96 | o 1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
97 |/
98 o 0 3390ef850073fbc2f0dfff2244342c8e9229013a public
99
100
101 Cloning only a specific revision works
102
103 $ hg --debug clone -U -r 4432d83626e8 http://localhost:$HGPORT client-singlehead
104 using http://localhost:$HGPORT/
105 sending capabilities command
106 sending 1 commands
107 sending command lookup: {
108 'key': '4432d83626e8'
109 }
110 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
111 received frame(size=21; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
112 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
113 query 1; heads
114 sending 2 commands
115 sending command heads: {}
116 sending command known: {
117 'nodes': []
118 }
119 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
120 received frame(size=43; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
121 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
122 received frame(size=11; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
123 received frame(size=1; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
124 received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
125 sending 1 commands
126 sending command changesetdata: {
127 'fields': set([
128 'parents',
129 'revision'
130 ]),
131 'noderange': [
132 [],
133 [
134 'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
135 ]
136 ]
137 }
138 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
139 received frame(size=327; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
140 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
141 add changeset 3390ef850073
142 add changeset 4432d83626e8
143 updating the branch cache
144 new changesets 3390ef850073:4432d83626e8
145
146 $ cd client-singlehead
147
148 $ hg log -G -T '{rev} {node} {phase}\n'
149 o 1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
150 |
151 o 0 3390ef850073fbc2f0dfff2244342c8e9229013a public
152
153
154 Incremental pull works
155
156 $ hg --debug pull
157 pulling from http://localhost:$HGPORT/
158 using http://localhost:$HGPORT/
159 sending capabilities command
160 query 1; heads
161 sending 2 commands
162 sending command heads: {}
163 sending command known: {
164 'nodes': [
165 'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
166 ]
167 }
168 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
169 received frame(size=43; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
170 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
171 received frame(size=11; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
172 received frame(size=2; request=3; stream=2; streamflags=; type=command-response; flags=continuation)
173 received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
174 searching for changes
175 all local heads known remotely
176 sending 1 commands
177 sending command changesetdata: {
178 'fields': set([
179 'parents',
180 'revision'
181 ]),
182 'noderange': [
183 [
184 'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
185 ],
186 [
187 '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
188 '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
189 ]
190 ]
191 }
192 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
193 received frame(size=495; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
194 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
195 add changeset cd2534766bec
196 add changeset e96ae20f4188
197 add changeset caa2a465451d
198 updating the branch cache
199 new changesets cd2534766bec:caa2a465451d
200 (run 'hg update' to get a working copy)
201
202 $ hg log -G -T '{rev} {node} {phase}\n'
203 o 4 caa2a465451dd1facda0f5b12312c355584188a1 public
204 |
205 o 3 e96ae20f4188487b9ae4ef3941c27c81143146e5 public
206 |
207 | o 2 cd2534766bece138c7c1afdc6825302f0f62d81f public
208 | |
209 | o 1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
210 |/
211 o 0 3390ef850073fbc2f0dfff2244342c8e9229013a public
212
213
214 $ cd ..