diff hgext/lfs/__init__.py @ 38689:ff5b6fca1082

fileset: rewrite predicates to return matcher not closed to subset (API) (BC) This makes fileset expression open to any input, so that we can just say "hg status 'set: not binary()'" to select text files including unknowns. With this and removal of subset computation, 'set:**' becomes as fast as 'glob:**'. Further optimization will probably be possible by narrowing the file tree to compute status for example. This also fixes 'subrepo()' to not ignore the current mctx.subset. .. bc:: The fileset expression may include untracked files by default. Use ``tracked()`` to explicitly filter out files not existing at the context revision.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 09 Jun 2018 19:55:10 +0900
parents b4d85bc122bd
children 7790cd70842a 535fc8a22365
line wrap: on
line diff
--- a/hgext/lfs/__init__.py	Tue Jul 10 23:49:48 2018 +0900
+++ b/hgext/lfs/__init__.py	Sat Jun 09 19:55:10 2018 +0900
@@ -362,8 +362,10 @@
     """File that uses LFS storage."""
     # i18n: "lfs" is a keyword
     fileset.getargs(x, 0, 0, _("lfs takes no arguments"))
-    return [f for f in mctx.subset
-            if wrapper.pointerfromctx(mctx.ctx, f, removed=True) is not None]
+    ctx = mctx.ctx
+    def lfsfilep(f):
+        return wrapper.pointerfromctx(ctx, f, removed=True) is not None
+    return mctx.predicate(lfsfilep, predrepr='<lfs>')
 
 @templatekeyword('lfs_files', requires={'ctx'})
 def lfsfiles(context, mapping):