Mercurial > hg
comparison mercurial/changegroup.py @ 38346:83534c4ec58b
changegroup: use progress helper in apply() (API)
Differential Revision: https://phab.mercurial-scm.org/D3766
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 15 Jun 2018 23:04:44 -0700 |
parents | aac4be30e250 |
children | ef692614e601 |
comparison
equal
deleted
inserted
replaced
38345:bec1212eceaa | 38346:83534c4ec58b |
---|---|
235 next = pos + 2**20 | 235 next = pos + 2**20 |
236 yield chunk[pos:next] | 236 yield chunk[pos:next] |
237 pos = next | 237 pos = next |
238 yield closechunk() | 238 yield closechunk() |
239 | 239 |
240 def _unpackmanifests(self, repo, revmap, trp, prog, numchanges): | 240 def _unpackmanifests(self, repo, revmap, trp, prog): |
241 # We know that we'll never have more manifests than we had | 241 self.callback = prog.increment |
242 # changesets. | |
243 self.callback = prog(_('manifests'), numchanges) | |
244 # no need to check for empty manifest group here: | 242 # no need to check for empty manifest group here: |
245 # if the result of the merge of 1 and 2 is the same in 3 and 4, | 243 # if the result of the merge of 1 and 2 is the same in 3 and 4, |
246 # no new manifest will be created and the manifest group will | 244 # no new manifest will be created and the manifest group will |
247 # be empty during the pull | 245 # be empty during the pull |
248 self.manifestheader() | 246 self.manifestheader() |
249 deltas = self.deltaiter() | 247 deltas = self.deltaiter() |
250 repo.manifestlog._revlog.addgroup(deltas, revmap, trp) | 248 repo.manifestlog._revlog.addgroup(deltas, revmap, trp) |
251 repo.ui.progress(_('manifests'), None) | 249 prog.update(None) |
252 self.callback = None | 250 self.callback = None |
253 | 251 |
254 def apply(self, repo, tr, srctype, url, targetphase=phases.draft, | 252 def apply(self, repo, tr, srctype, url, targetphase=phases.draft, |
255 expectedtotal=None): | 253 expectedtotal=None): |
256 """Add the changegroup returned by source.read() to this repo. | 254 """Add the changegroup returned by source.read() to this repo. |
291 | 289 |
292 trp = weakref.proxy(tr) | 290 trp = weakref.proxy(tr) |
293 # pull off the changeset group | 291 # pull off the changeset group |
294 repo.ui.status(_("adding changesets\n")) | 292 repo.ui.status(_("adding changesets\n")) |
295 clstart = len(cl) | 293 clstart = len(cl) |
296 class prog(object): | 294 progress = repo.ui.makeprogress(_('changesets'), unit=_('chunks'), |
297 def __init__(self, step, total): | 295 total=expectedtotal) |
298 self._step = step | 296 self.callback = progress.increment |
299 self._total = total | |
300 self._count = 1 | |
301 def __call__(self): | |
302 repo.ui.progress(self._step, self._count, unit=_('chunks'), | |
303 total=self._total) | |
304 self._count += 1 | |
305 self.callback = prog(_('changesets'), expectedtotal) | |
306 | 297 |
307 efiles = set() | 298 efiles = set() |
308 def onchangelog(cl, node): | 299 def onchangelog(cl, node): |
309 efiles.update(cl.readfiles(node)) | 300 efiles.update(cl.readfiles(node)) |
310 | 301 |
316 if not cgnodes: | 307 if not cgnodes: |
317 repo.ui.develwarn('applied empty changegroup', | 308 repo.ui.develwarn('applied empty changegroup', |
318 config='warn-empty-changegroup') | 309 config='warn-empty-changegroup') |
319 clend = len(cl) | 310 clend = len(cl) |
320 changesets = clend - clstart | 311 changesets = clend - clstart |
321 repo.ui.progress(_('changesets'), None) | 312 progress.update(None) |
322 self.callback = None | 313 self.callback = None |
323 | 314 |
324 # pull off the manifest group | 315 # pull off the manifest group |
325 repo.ui.status(_("adding manifests\n")) | 316 repo.ui.status(_("adding manifests\n")) |
326 self._unpackmanifests(repo, revmap, trp, prog, changesets) | 317 # We know that we'll never have more manifests than we had |
318 # changesets. | |
319 progress = repo.ui.makeprogress(_('manifests'), unit=_('chunks'), | |
320 total=changesets) | |
321 self._unpackmanifests(repo, revmap, trp, progress) | |
327 | 322 |
328 needfiles = {} | 323 needfiles = {} |
329 if repo.ui.configbool('server', 'validate'): | 324 if repo.ui.configbool('server', 'validate'): |
330 cl = repo.changelog | 325 cl = repo.changelog |
331 ml = repo.manifestlog | 326 ml = repo.manifestlog |
473 | 468 |
474 def _deltaheader(self, headertuple, prevnode): | 469 def _deltaheader(self, headertuple, prevnode): |
475 node, p1, p2, deltabase, cs, flags = headertuple | 470 node, p1, p2, deltabase, cs, flags = headertuple |
476 return node, p1, p2, deltabase, cs, flags | 471 return node, p1, p2, deltabase, cs, flags |
477 | 472 |
478 def _unpackmanifests(self, repo, revmap, trp, prog, numchanges): | 473 def _unpackmanifests(self, repo, revmap, trp, prog): |
479 super(cg3unpacker, self)._unpackmanifests(repo, revmap, trp, prog, | 474 super(cg3unpacker, self)._unpackmanifests(repo, revmap, trp, prog) |
480 numchanges) | |
481 for chunkdata in iter(self.filelogheader, {}): | 475 for chunkdata in iter(self.filelogheader, {}): |
482 # If we get here, there are directory manifests in the changegroup | 476 # If we get here, there are directory manifests in the changegroup |
483 d = chunkdata["filename"] | 477 d = chunkdata["filename"] |
484 repo.ui.debug("adding %s revisions\n" % d) | 478 repo.ui.debug("adding %s revisions\n" % d) |
485 dirlog = repo.manifestlog._revlog.dirlog(d) | 479 dirlog = repo.manifestlog._revlog.dirlog(d) |