Mercurial > hg
changeset 24408:caa6b6c65dc3
fileset: add a fileset for portable filenames
This has mostly the same semantics as the files that the 'ui.portablefilenames'
config option would warn or abort about. The only difference is filenames that
case-fold to the same string -- given a set of filenames we've already
checked we can check whether a new one collides with them, but we don't have a
way to tell which filename it collided with.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Thu, 19 Mar 2015 21:26:18 -0700 |
parents | 1297480ed347 |
children | 30b8db6d0c04 |
files | mercurial/fileset.py tests/test-fileset.t |
diffstat | 2 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/fileset.py Mon Mar 16 16:01:16 2015 -0700 +++ b/mercurial/fileset.py Thu Mar 19 21:26:18 2015 -0700 @@ -256,6 +256,16 @@ ignore = mctx.ctx.repo().dirstate._ignore return [f for f in mctx.subset if ignore(f)] +def portable(mctx, x): + """``portable()`` + File that has a portable name. (This doesn't include filenames with case + collisions.) + """ + # i18n: "portable" is a keyword + getargs(x, 0, 0, _("portable takes no arguments")) + checkwinfilename = util.checkwinfilename + return [f for f in mctx.subset if checkwinfilename(f) is None] + def grep(mctx, x): """``grep(regex)`` File contains the given regular expression. @@ -416,6 +426,7 @@ 'ignored': ignored, 'hgignore': hgignore, 'modified': modified, + 'portable': portable, 'removed': removed, 'resolved': resolved, 'size': size,
--- a/tests/test-fileset.t Mon Mar 16 16:01:16 2015 -0700 +++ b/tests/test-fileset.t Thu Mar 19 21:26:18 2015 -0700 @@ -111,6 +111,28 @@ $ hg add b2link #endif +#if no-windows + $ echo foo > con.xml + $ echo bar > 'bar ' + $ echo baz > 'baz\' + $ ls + b1 + b2 + b2link + bar + baz\ + bin + c1 + c2 + c3 + con.xml + $ fileset 'not portable()' + bar + baz\ + con.xml + $ hg --config ui.portablefilenames=ignore add con.xml 'bar ' 'baz\' +#endif + >>> file('1k', 'wb').write(' '*1024) >>> file('2k', 'wb').write(' '*2048) $ hg add 1k 2k @@ -220,6 +242,13 @@ b2link #endif +#if no-windows + $ fileset -r1 'not portable()' + bar + baz\ + con.xml +#endif + $ fileset -r4 'subrepo("re:su.*")' sub $ fileset -r4 'subrepo("sub")' @@ -242,7 +271,10 @@ a1 b1 b2 + bar + baz\ c1 + con.xml mixed $ fileset 'eol(mac)' mac