Show More
@@ -91,23 +91,8 b' def writebundle(cg, filename, bundletype' | |||||
91 | # an empty chunkgroup is the end of the changegroup |
|
91 | # an empty chunkgroup is the end of the changegroup | |
92 | # a changegroup has at least 2 chunkgroups (changelog and manifest). |
|
92 | # a changegroup has at least 2 chunkgroups (changelog and manifest). | |
93 | # after that, an empty chunkgroup is the end of the changegroup |
|
93 | # after that, an empty chunkgroup is the end of the changegroup | |
94 | empty = False |
|
94 | for chunk in cg.getchunks(): | |
95 | count = 0 |
|
95 | fh.write(z.compress(chunk)) | |
96 | while not empty or count <= 2: |
|
|||
97 | empty = True |
|
|||
98 | count += 1 |
|
|||
99 | while True: |
|
|||
100 | chunk = getchunk(cg) |
|
|||
101 | if not chunk: |
|
|||
102 | break |
|
|||
103 | empty = False |
|
|||
104 | fh.write(z.compress(chunkheader(len(chunk)))) |
|
|||
105 | pos = 0 |
|
|||
106 | while pos < len(chunk): |
|
|||
107 | next = pos + 2**20 |
|
|||
108 | fh.write(z.compress(chunk[pos:next])) |
|
|||
109 | pos = next |
|
|||
110 | fh.write(z.compress(closechunk())) |
|
|||
111 | fh.write(z.flush()) |
|
96 | fh.write(z.flush()) | |
112 | cleanup = None |
|
97 | cleanup = None | |
113 | return filename |
|
98 | return filename | |
@@ -202,6 +187,34 b' class unbundle10(object):' | |||||
202 | return {'node': node, 'p1': p1, 'p2': p2, 'cs': cs, |
|
187 | return {'node': node, 'p1': p1, 'p2': p2, 'cs': cs, | |
203 | 'deltabase': deltabase, 'delta': delta} |
|
188 | 'deltabase': deltabase, 'delta': delta} | |
204 |
|
189 | |||
|
190 | def getchunks(self): | |||
|
191 | """returns all the chunks contains in the bundle | |||
|
192 | ||||
|
193 | Used when you need to forward the binary stream to a file or another | |||
|
194 | network API. To do so, it parse the changegroup data, otherwise it will | |||
|
195 | block in case of sshrepo because it don't know the end of the stream. | |||
|
196 | """ | |||
|
197 | # an empty chunkgroup is the end of the changegroup | |||
|
198 | # a changegroup has at least 2 chunkgroups (changelog and manifest). | |||
|
199 | # after that, an empty chunkgroup is the end of the changegroup | |||
|
200 | empty = False | |||
|
201 | count = 0 | |||
|
202 | while not empty or count <= 2: | |||
|
203 | empty = True | |||
|
204 | count += 1 | |||
|
205 | while True: | |||
|
206 | chunk = getchunk(self) | |||
|
207 | if not chunk: | |||
|
208 | break | |||
|
209 | empty = False | |||
|
210 | yield chunkheader(len(chunk)) | |||
|
211 | pos = 0 | |||
|
212 | while pos < len(chunk): | |||
|
213 | next = pos + 2**20 | |||
|
214 | yield chunk[pos:next] | |||
|
215 | pos = next | |||
|
216 | yield closechunk() | |||
|
217 | ||||
205 | class headerlessfixup(object): |
|
218 | class headerlessfixup(object): | |
206 | def __init__(self, fh, h): |
|
219 | def __init__(self, fh, h): | |
207 | self._h = h |
|
220 | self._h = h |
General Comments 0
You need to be logged in to leave comments.
Login now