Mercurial > hg-stable
changeset 14248:25c68ac247c1
match: make 'listfile:' split on LF and CRLF
We want util.readfile() to operate in binary mode, so EOLs have to be handled
correctly depending on the platform. It seems both easier and more convenient
to treat LF and CRLF the same way on all platforms.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 07 May 2011 21:12:30 +0200 |
parents | c9720ada999c |
children | f4766e1bb0b3 |
files | mercurial/match.py tests/test-walk.t |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/match.py Sat May 07 17:25:12 2011 +0200 +++ b/mercurial/match.py Sat May 07 21:12:30 2011 +0200 @@ -273,9 +273,12 @@ elif kind in ('relglob', 'path'): name = util.normpath(name) elif kind in ('listfile', 'listfile0'): - delimiter = kind == 'listfile0' and '\0' or '\n' try: - files = util.readfile(name).split(delimiter) + files = util.readfile(name) + if kind == 'listfile0': + files = files.split('\0') + else: + files = files.splitlines() files = [f for f in files if f] except EnvironmentError: raise util.Abort(_("unable to read file list (%s)") % name)
--- a/tests/test-walk.t Sat May 07 17:25:12 2011 +0200 +++ b/tests/test-walk.t Sat May 07 21:12:30 2011 +0200 @@ -295,6 +295,18 @@ $ hg debugwalk ignored/file f ignored/file ignored/file exact +Test listfile and listfile0 + + $ python -c "file('../listfile0', 'wb').write('fenugreek\0new\0')" + $ hg debugwalk -I 'listfile0:../listfile0' + f fenugreek fenugreek + f new new + $ python -c "file('../listfile', 'wb').write('fenugreek\nnew\r\nmammals/skunk\n')" + $ hg debugwalk -I 'listfile:../listfile' + f fenugreek fenugreek + f mammals/skunk mammals/skunk + f new new + $ cd .. $ hg debugwalk -R t t/mammals/skunk f mammals/skunk t/mammals/skunk exact