changeset 14129:81e6d42b3228

context: provide an efficient iterator for workingctx This avoids needing to call status or build a synthetic manifest.
author Matt Mackall <mpm@selenic.com>
date Sun, 01 May 2011 08:29:50 -0500
parents 0386b51dd749
children 5e4ec4119485
files mercurial/cmdutil.py mercurial/context.py
diffstat 2 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sun May 01 06:06:59 2011 -0500
+++ b/mercurial/cmdutil.py	Sun May 01 08:29:50 2011 -0500
@@ -1314,11 +1314,9 @@
     match.bad = lambda x, y: bad.append(x) or oldbad(x, y)
     names = []
     wctx = repo[None]
-    wctx.status(clean=True)
     existing = None
     if scmutil.showportabilityalert(ui):
-        existing = dict([(fn.lower(), fn) for fn in
-                         wctx.added() + wctx.clean() + wctx.modified()])
+        existing = dict([(fn.lower(), fn) for fn in wctx])
     for f in repo.walk(match):
         exact = match.exact(f)
         if exact or f not in repo.dirstate:
--- a/mercurial/context.py	Sun May 01 06:06:59 2011 -0500
+++ b/mercurial/context.py	Sun May 01 08:29:50 2011 -0500
@@ -661,6 +661,12 @@
 
         return man
 
+    def __iter__(self):
+        d = self._repo.dirstate
+        for f in d:
+            if d[f] != 'r':
+                yield f
+
     @propertycache
     def _status(self):
         return self._repo.status()[:4]