Mercurial > hg
comparison mercurial/merge.py @ 18640:a8648f32b8ed
merge: don't fiddle with name lookups or i18n in hot loops
We perform attribute dereferences and i18n lookups before looping.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Sat, 09 Feb 2013 15:51:32 -0800 |
parents | 5774732bb5e5 |
children | de0bd4bfc6d7 |
comparison
equal
deleted
inserted
replaced
18639:5774732bb5e5 | 18640:a8648f32b8ed |
---|---|
347 | 347 |
348 mctx is the context to be merged into the working copy | 348 mctx is the context to be merged into the working copy |
349 | 349 |
350 yields tuples for progress updates | 350 yields tuples for progress updates |
351 """ | 351 """ |
352 verbose = repo.ui.verbose | |
353 unlink = util.unlinkpath | |
354 wjoin = repo.wjoin | |
355 fctx = mctx.filectx | |
356 wwrite = repo.wwrite | |
352 audit = repo.wopener.audit | 357 audit = repo.wopener.audit |
353 i = 0 | 358 i = 0 |
354 for arg in args: | 359 for arg in args: |
355 f = arg[0] | 360 f = arg[0] |
356 if arg[1] == 'r': | 361 if arg[1] == 'r': |
357 repo.ui.note(_("removing %s\n") % f) | 362 if verbose: |
363 repo.ui.note(_("removing %s\n") % f) | |
358 audit(f) | 364 audit(f) |
359 try: | 365 try: |
360 util.unlinkpath(repo.wjoin(f), ignoremissing=True) | 366 unlink(wjoin(f), ignoremissing=True) |
361 except OSError, inst: | 367 except OSError, inst: |
362 repo.ui.warn(_("update failed to remove %s: %s!\n") % | 368 repo.ui.warn(_("update failed to remove %s: %s!\n") % |
363 (f, inst.strerror)) | 369 (f, inst.strerror)) |
364 else: | 370 else: |
365 repo.ui.note(_("getting %s\n") % f) | 371 if verbose: |
366 repo.wwrite(f, mctx.filectx(f).data(), arg[2][0]) | 372 repo.ui.note(_("getting %s\n") % f) |
373 wwrite(f, fctx(f).data(), arg[2][0]) | |
367 if i == 100: | 374 if i == 100: |
368 yield i, f | 375 yield i, f |
369 i = 0 | 376 i = 0 |
370 i += 1 | 377 i += 1 |
371 if i > 0: | 378 if i > 0: |
440 unit=_('files')) | 447 unit=_('files')) |
441 | 448 |
442 if hgsub and hgsub[0] == 'g': | 449 if hgsub and hgsub[0] == 'g': |
443 subrepo.submerge(repo, wctx, mctx, wctx, overwrite) | 450 subrepo.submerge(repo, wctx, mctx, wctx, overwrite) |
444 | 451 |
452 _updating = _('updating') | |
453 _files = _('files') | |
454 progress = repo.ui.progress | |
455 | |
445 for i, a in enumerate(actions): | 456 for i, a in enumerate(actions): |
446 f, m, args, msg = a | 457 f, m, args, msg = a |
447 repo.ui.progress(_('updating'), z + i + 1, item=f, total=numupdates, | 458 progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files) |
448 unit=_('files')) | |
449 if m == "m": # merge | 459 if m == "m": # merge |
450 if fd == '.hgsubstate': # subrepo states need updating | 460 if fd == '.hgsubstate': # subrepo states need updating |
451 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), | 461 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), |
452 overwrite) | 462 overwrite) |
453 continue | 463 continue |
488 flags, = args | 498 flags, = args |
489 audit(f) | 499 audit(f) |
490 util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags) | 500 util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags) |
491 updated += 1 | 501 updated += 1 |
492 ms.commit() | 502 ms.commit() |
493 repo.ui.progress(_('updating'), None, total=numupdates, unit=_('files')) | 503 progress(_updating, None, total=numupdates, unit=_files) |
494 | 504 |
495 return updated, merged, removed, unresolved | 505 return updated, merged, removed, unresolved |
496 | 506 |
497 def calculateupdates(repo, tctx, mctx, ancestor, branchmerge, force, partial): | 507 def calculateupdates(repo, tctx, mctx, ancestor, branchmerge, force, partial): |
498 "Calculate the actions needed to merge mctx into tctx" | 508 "Calculate the actions needed to merge mctx into tctx" |