diff --git a/mercurial/match.py b/mercurial/match.py --- a/mercurial/match.py +++ b/mercurial/match.py @@ -273,9 +273,12 @@ def _normalize(names, default, root, cwd 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) diff --git a/tests/test-walk.t b/tests/test-walk.t --- a/tests/test-walk.t +++ b/tests/test-walk.t @@ -295,6 +295,18 @@ Test patterns: $ 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