Show More
@@ -2143,41 +2143,10 class localrepository(object): | |||||
2143 | pr.total = efiles |
|
2143 | pr.total = efiles | |
2144 | source.callback = None |
|
2144 | source.callback = None | |
2145 |
|
2145 | |||
2146 | while True: |
|
2146 | newrevs, newfiles = self.addchangegroupfiles(source, revmap, trp, | |
2147 | chunkdata = source.filelogheader() |
|
2147 | pr, needfiles) | |
2148 | if not chunkdata: |
|
2148 | revisions += newrevs | |
2149 | break |
|
2149 | files += newfiles | |
2150 | f = chunkdata["filename"] |
|
|||
2151 | self.ui.debug("adding %s revisions\n" % f) |
|
|||
2152 | pr() |
|
|||
2153 | fl = self.file(f) |
|
|||
2154 | o = len(fl) |
|
|||
2155 | if not fl.addgroup(source, revmap, trp): |
|
|||
2156 | raise util.Abort(_("received file revlog group is empty")) |
|
|||
2157 | revisions += len(fl) - o |
|
|||
2158 | files += 1 |
|
|||
2159 | if f in needfiles: |
|
|||
2160 | needs = needfiles[f] |
|
|||
2161 | for new in xrange(o, len(fl)): |
|
|||
2162 | n = fl.node(new) |
|
|||
2163 | if n in needs: |
|
|||
2164 | needs.remove(n) |
|
|||
2165 | else: |
|
|||
2166 | raise util.Abort( |
|
|||
2167 | _("received spurious file revlog entry")) |
|
|||
2168 | if not needs: |
|
|||
2169 | del needfiles[f] |
|
|||
2170 | self.ui.progress(_('files'), None) |
|
|||
2171 |
|
||||
2172 | for f, needs in needfiles.iteritems(): |
|
|||
2173 | fl = self.file(f) |
|
|||
2174 | for n in needs: |
|
|||
2175 | try: |
|
|||
2176 | fl.rev(n) |
|
|||
2177 | except error.LookupError: |
|
|||
2178 | raise util.Abort( |
|
|||
2179 | _('missing file data for %s:%s - run hg verify') % |
|
|||
2180 | (f, hex(n))) |
|
|||
2181 |
|
2150 | |||
2182 | dh = 0 |
|
2151 | dh = 0 | |
2183 | if oldheads: |
|
2152 | if oldheads: | |
@@ -2257,6 +2226,47 class localrepository(object): | |||||
2257 | else: |
|
2226 | else: | |
2258 | return dh + 1 |
|
2227 | return dh + 1 | |
2259 |
|
2228 | |||
|
2229 | def addchangegroupfiles(self, source, revmap, trp, pr, needfiles): | |||
|
2230 | revisions = 0 | |||
|
2231 | files = 0 | |||
|
2232 | while True: | |||
|
2233 | chunkdata = source.filelogheader() | |||
|
2234 | if not chunkdata: | |||
|
2235 | break | |||
|
2236 | f = chunkdata["filename"] | |||
|
2237 | self.ui.debug("adding %s revisions\n" % f) | |||
|
2238 | pr() | |||
|
2239 | fl = self.file(f) | |||
|
2240 | o = len(fl) | |||
|
2241 | if not fl.addgroup(source, revmap, trp): | |||
|
2242 | raise util.Abort(_("received file revlog group is empty")) | |||
|
2243 | revisions += len(fl) - o | |||
|
2244 | files += 1 | |||
|
2245 | if f in needfiles: | |||
|
2246 | needs = needfiles[f] | |||
|
2247 | for new in xrange(o, len(fl)): | |||
|
2248 | n = fl.node(new) | |||
|
2249 | if n in needs: | |||
|
2250 | needs.remove(n) | |||
|
2251 | else: | |||
|
2252 | raise util.Abort( | |||
|
2253 | _("received spurious file revlog entry")) | |||
|
2254 | if not needs: | |||
|
2255 | del needfiles[f] | |||
|
2256 | self.ui.progress(_('files'), None) | |||
|
2257 | ||||
|
2258 | for f, needs in needfiles.iteritems(): | |||
|
2259 | fl = self.file(f) | |||
|
2260 | for n in needs: | |||
|
2261 | try: | |||
|
2262 | fl.rev(n) | |||
|
2263 | except error.LookupError: | |||
|
2264 | raise util.Abort( | |||
|
2265 | _('missing file data for %s:%s - run hg verify') % | |||
|
2266 | (f, hex(n))) | |||
|
2267 | ||||
|
2268 | return revisions, files | |||
|
2269 | ||||
2260 | def stream_in(self, remote, requirements): |
|
2270 | def stream_in(self, remote, requirements): | |
2261 | lock = self.lock() |
|
2271 | lock = self.lock() | |
2262 | try: |
|
2272 | try: |
General Comments 0
You need to be logged in to leave comments.
Login now