changeset 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 6204e4d4dd6d
files mercurial/merge.py
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/merge.py	Sat Feb 09 15:51:32 2013 -0800
+++ b/mercurial/merge.py	Sat Feb 09 15:51:32 2013 -0800
@@ -349,21 +349,28 @@
 
     yields tuples for progress updates
     """
+    verbose = repo.ui.verbose
+    unlink = util.unlinkpath
+    wjoin = repo.wjoin
+    fctx = mctx.filectx
+    wwrite = repo.wwrite
     audit = repo.wopener.audit
     i = 0
     for arg in args:
         f = arg[0]
         if arg[1] == 'r':
-            repo.ui.note(_("removing %s\n") % f)
+            if verbose:
+                repo.ui.note(_("removing %s\n") % f)
             audit(f)
             try:
-                util.unlinkpath(repo.wjoin(f), ignoremissing=True)
+                unlink(wjoin(f), ignoremissing=True)
             except OSError, inst:
                 repo.ui.warn(_("update failed to remove %s: %s!\n") %
                              (f, inst.strerror))
         else:
-            repo.ui.note(_("getting %s\n") % f)
-            repo.wwrite(f, mctx.filectx(f).data(), arg[2][0])
+            if verbose:
+                repo.ui.note(_("getting %s\n") % f)
+            wwrite(f, fctx(f).data(), arg[2][0])
         if i == 100:
             yield i, f
             i = 0
@@ -442,10 +449,13 @@
     if hgsub and hgsub[0] == 'g':
         subrepo.submerge(repo, wctx, mctx, wctx, overwrite)
 
+    _updating = _('updating')
+    _files = _('files')
+    progress = repo.ui.progress
+
     for i, a in enumerate(actions):
         f, m, args, msg = a
-        repo.ui.progress(_('updating'), z + i + 1, item=f, total=numupdates,
-                         unit=_('files'))
+        progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files)
         if m == "m": # merge
             if fd == '.hgsubstate': # subrepo states need updating
                 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
@@ -490,7 +500,7 @@
             util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags)
             updated += 1
     ms.commit()
-    repo.ui.progress(_('updating'), None, total=numupdates, unit=_('files'))
+    progress(_updating, None, total=numupdates, unit=_files)
 
     return updated, merged, removed, unresolved