sapling/mercurial
Martin von Zweigbergk 37105d1059 match: introduce boolean prefix() method
tl;dr: This is another step towards a (previously unstated) goal of
eliminating match.files() in conditions.

There are four types of matchers:

 * always: Matches everything, checked with always(), files() is empty

 * exact: Matches exact set of files, checked with isexact(), files()
   contains the files to match

 * patterns: Matches more complex patterns, checked with anypats(),
   files() contains roots of the matched patterns

 * prefix: Matches simple 'path:' patterns as prefixes ('foo' matches
   both 'foo' and 'foo/bar'), no single method to check, files()
   contains the prefixes to match

For completeness, it would be nice to have a method for checking for
the "prefix" type of matcher as well, so let's add that, making it
return True simply when none of the others do.

The larger goal here is to eliminate uses of match.files() in
conditions (i.e. bool(match.files())). The reason for this is that
there are scenarios when you would like to create a "prefix" matcher
that happens to match no files. One example is for 'hg files -I foo
bar'. The narrowmatcher also restricts the set of files given and it
would not surprise me if have bugs caused by that already. Note that
'if m.files() and not m.anypats()' and similar is sometimes used to
catch the "exact" and "prefix" cases above.
2014-10-28 22:47:22 -07:00
..
default.d merge-tools: configuration for Beyond Compare on OS X 2015-02-27 21:42:58 +01:00
help files: recurse into subrepos automatically with an explicit path 2015-05-17 22:42:47 -04:00
hgweb cleanup: use __builtins__.any instead of util.any 2015-05-16 14:30:07 -04:00
httpclient style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
pure parsers: remove unused dependency on util 2015-04-06 13:59:36 -07:00
templates hgweb: descend empty directories in monoblue 2015-05-21 19:52:36 +08:00
__init__.py Add back links from file revisions to changeset revisions 2005-05-03 13:16:10 -08:00
ancestor.py util: drop alias for collections.deque 2015-05-16 11:28:04 -07:00
archival.py archive: look for first visible revision to build repo identity (issue4591) 2015-04-08 23:30:02 +09:00
base85.c base85: cast Py_ssize_t values to int (issue3481) 2012-06-04 16:59:34 +02:00
bdiff.c bdiff: avoid a memory error on malloc failure 2013-10-30 16:03:42 -05:00
bookmarks.py bookmarks: rename current to active in variables and comments 2015-04-14 12:53:48 -07:00
branchmap.py branchcache: stay silent if failing to read cache files 2015-01-14 01:15:26 +01:00
bundle2.py bundle2: disable ouput capture unless we use http (issue4613 issue4615) 2015-04-28 17:38:02 -07:00
bundlerepo.py bundlerepo: remove unused 'repo' parameter 2015-05-03 14:18:32 -07:00
byterange.py style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
changegroup.py changegroup: drop _changelog and _manifest properties 2015-04-30 16:45:03 -07:00
changelog.py changelog: fix readpending if no pending data exist (issue4609) 2015-04-20 17:16:22 +02:00
cmdutil.py files: recurse into subrepos automatically with an explicit path 2015-05-17 22:42:47 -04:00
commands.py commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED 2015-04-30 22:40:18 +09:00
commandserver.py cmdserver: protect pipe server streams against corruption caused by direct io 2014-11-15 13:50:43 +09:00
config.py config: give it an includepaths option for looking for config files 2015-05-15 09:04:32 -04:00
context.py merge with stable 2015-05-19 07:17:57 -05:00
copies.py copies: add matcher parameter to copy logic 2015-04-16 11:29:30 -07:00
crecord.py crecord: fix mixed imports warning 2015-04-09 23:47:07 -04:00
dagparser.py dagparser: use 'next' instead of try/except for default value 2015-05-18 12:22:44 -05:00
dagutil.py style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
demandimport.py demandimport: blacklist distutils.msvc9compiler (issue4475) 2014-12-22 17:27:31 -05:00
diffhelpers.c diffhelpers: fix botched return statement from e48d70075d8a 2015-01-28 13:34:20 -05:00
dirs.c dirs._addpath: reinstate use of Py_CLEAR 2015-04-07 20:43:04 -07:00
dirstate.py dirstate: use open/read of vfs(opener) explicitly instead of read 2015-05-20 01:06:09 +09:00
discovery.py discovery: don't compute allfuturecommon when it won't be used 2015-04-13 09:54:36 -04:00
dispatch.py dispatch: add support for python-flamegraph[0] profiling 2015-04-16 17:12:33 -04:00
dummycert.pem ssl: on OS X, use a dummy cert to trick Python/OpenSSL to use system CA certs 2014-09-26 02:19:48 +02:00
encoding.py util.h: define an enum for normcase specs 2015-04-02 19:17:32 -07:00
error.py error: add a new UnknownIdentifier error type 2015-01-26 14:31:01 -05:00
exchange.py merge with stable 2015-05-19 07:17:57 -05:00
exewrapper.c exewrapper: adapt for legacy HackableMercurial 2012-08-07 11:04:41 +02:00
extensions.py extensions: clear aftercallbacks after execution (issue4646) 2015-05-06 09:52:10 -07:00
fancyopts.py fancyopts: restore use of callable() since it was readded in Python 3.2 2014-06-23 09:24:16 -04:00
filelog.py filelog: use censored revlog flag bit to quickly check if a node is censored 2015-01-12 15:29:36 -05:00
filemerge.py merge: better debug messages before/after invoking external merge tool 2015-03-19 22:22:50 +01:00
fileset.py fileset: add a fileset for portable filenames 2015-03-19 21:26:18 -07:00
formatter.py formatter: convert None to json null 2014-09-17 22:34:34 +09:00
graphmod.py spelling: fixes from proofreading of spell checker issues 2015-01-18 02:38:57 +01:00
hbisect.py util: drop alias for collections.deque 2015-05-16 11:28:04 -07:00
help.py help: also hide options marked EXPERIMENTAL 2015-04-27 15:12:41 -07:00
hg.py bookmarks: rename setcurrent to activate (API) 2015-04-13 22:27:01 -07:00
hook.py hook: drop dedicated catch for 'KeyboardInterrupt' 2015-05-18 15:40:23 -05:00
httpconnection.py httpconnection: drop Python 2.4 specify hack 2015-05-18 16:47:26 -05:00
httppeer.py httppeer: use try/except/finally 2015-05-15 09:57:02 -05:00
i18n.py i18n: cache the result of every gettext call 2014-10-17 13:52:10 -04:00
keepalive.py util: move md5 back next to sha1 and allow to call it without an argument 2014-09-24 16:00:47 +09:00
localrepo.py merge with stable 2015-05-20 15:29:32 -05:00
lock.py lock: while releasing, unlink lockfile even if the release function throws 2014-10-16 19:15:51 -07:00
lsprof.py profiling: replace '+' markup of nested lines with indentation 2013-02-08 22:54:48 +01:00
lsprofcalltree.py drop unused imports 2009-05-14 15:35:46 +02:00
mail.py mail: drop explicit mail import required by Python 2.4 2015-05-18 16:46:32 -05:00
manifest.c lazymanifest: drop SP before some labels 2015-04-12 07:14:53 -07:00
manifest.py treemanifest: lazily load manifests 2015-04-09 17:14:35 -07:00
match.py match: introduce boolean prefix() method 2014-10-28 22:47:22 -07:00
mdiff.py mdiff: add helper for making deltas which replace the full text of a revision 2015-01-21 16:35:09 -05:00
merge.py merge: run update hook after the last wlock release 2015-04-29 15:52:31 -04:00
minirst.py help: show all nested subsections of a section with hg help foo.section 2014-10-06 07:35:53 -04:00
mpatch.c mpatch: rewrite pointer overflow checks 2013-12-11 18:33:42 -06:00
namespaces.py spelling: fixes from proofreading of spell checker issues 2015-01-18 02:38:57 +01:00
node.py Update license to GPLv2+ 2010-01-19 22:20:08 -06:00
obsolete.py util: drop the 'unpacker' helper 2015-05-18 23:43:36 -05:00
osutil.c osutil: mark end of string with null char, not 0 2015-03-25 16:21:58 -07:00
parser.py parsers: use 'next' instead of try/except 2015-05-18 12:27:15 -05:00
parsers.c phases: add set per phase in C phase computation 2015-04-01 11:17:17 -07:00
patch.py cleanup: use __builtins__.any instead of util.any 2015-05-16 14:30:07 -04:00
pathencode.c pathencode: eliminate signed integer warnings 2014-02-19 13:11:24 -08:00
pathutil.py canonpath: fix infinite recursion 2015-05-12 19:40:45 -05:00
peer.py peer: delete double definition of method peer 2012-07-28 22:36:22 +02:00
phases.py phases: add set per phase in C phase computation 2015-04-01 11:17:17 -07:00
posix.py util: add removedirs as platform depending function 2015-04-11 00:47:09 +09:00
pushkey.py obsolete: add exchange option 2014-10-14 13:26:01 -07:00
pvec.py pvec: replace 'ctx._repo' with 'ctx.repo()' 2015-03-12 23:18:20 -04:00
py3kcompat.py py3kcompat: drop unused export 2014-05-13 15:22:36 -05:00
repair.py repair: avoid string concatenation by + operator 2015-04-25 23:44:53 +09:00
repoview.py repoview: avoid processing the same rev twice in _getstatichidden 2015-04-03 14:41:18 -07:00
revlog.py util: drop alias for collections.deque 2015-05-16 11:28:04 -07:00
revset.py revset: drop translation marker from error message of _notpublic() 2015-05-19 23:29:20 +09:00
scmposix.py config: don't read the same config file twice 2014-09-04 21:36:35 +02:00
scmutil.py match: resolve filesets in subrepos for commands given the '-S' argument 2015-05-16 00:36:35 -04:00
scmwindows.py config: don't read the same config file twice 2014-09-04 21:36:35 +02:00
setdiscovery.py cleanup: use __builtins__.all instead of util.all 2015-05-16 14:34:19 -04:00
similar.py cleanup: eradicate long lines 2012-05-12 15:54:54 +02:00
simplemerge.py simplemerge: remove dead code 2014-08-07 12:51:45 -04:00
sshpeer.py merge with stable 2014-12-29 16:39:20 -06:00
sshserver.py changegroup: rename bundle-related functions and classes 2014-09-02 12:11:36 +02:00
sslutil.py ssl: resolve symlink before checking for Apple python executable (issue4588) 2015-04-04 14:56:18 +09:00
statichttprepo.py statichttprepo: remove wrong getattr ladder 2015-05-18 22:40:16 -04:00
store.py treemanifest: store submanifest revlog per directory 2015-04-13 23:21:02 -07:00
strutil.py Update license to GPLv2+ 2010-01-19 22:20:08 -06:00
subrepo.py files: recurse into subrepos automatically with an explicit path 2015-05-17 22:42:47 -04:00
tagmerge.py spelling: fixes from proofreading of spell checker issues 2014-04-17 22:47:38 +02:00
tags.py tags: use try/except/finally 2015-05-15 09:58:02 -05:00
templatefilters.py templatefilters: add "upper" and "lower" for case conversion 2015-03-30 23:54:29 +09:00
templatekw.py templatekw: introduce activebookmark keyword 2015-04-15 08:12:04 -07:00
templater.py templater: strictly parse leading backslashes of '{' (issue4569) (BC) 2015-05-04 10:17:34 +09:00
transaction.py recover: catch any exception, not just Exception 2015-05-18 15:38:24 -05:00
treediscovery.py util: drop alias for collections.deque 2015-05-16 11:28:04 -07:00
ui.py cleanup: use __builtins__.any instead of util.any 2015-05-16 14:30:07 -04:00
unionrepo.py unionrepo: use pathutil.normasprefix to ensure os.sep at the end of cwd 2015-04-22 23:38:55 +09:00
url.py url: drop awful hack around bug in Python 2.4 2015-05-18 16:51:02 -05:00
util.h util.h: kill no longer needed definitions for Python < 2.6 2015-05-14 09:04:48 +02:00
util.py util: drop the 'unpacker' helper 2015-05-18 23:43:36 -05:00
verify.py verify: add a note about a paleo-bug 2015-03-27 15:13:21 -05:00
win32.py win32: 'raise ctypes.WinError' -> 'raise ctypes.WinError()' 2015-03-22 19:08:13 -04:00
windows.py windows: drop Python2.4 specific hack for directory not found handling 2015-05-18 16:33:57 -05:00
wireproto.py wireproto: turn an 'except' into a 'finally' as suggest by the comment 2015-05-18 13:25:07 -05:00
worker.py cleanup: avoid _ for local unused tmp variables - that is reserved for i18n 2014-08-15 16:20:47 +02:00