Mercurial > hg
changeset 28054:8515b813976b
debugignore: normalize the file before testing dirstate._ignore()
With an ignore pattern containing a '/' and a Windows style path containing '\',
status was properly ignoring the file, but debugignore was stating that it
wasn't ignored.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 08 Feb 2016 12:33:00 -0500 |
parents | 34a2944aac9b |
children | 92e8e3f20a6f |
files | mercurial/commands.py tests/test-hgignore.t |
diffstat | 2 files changed, 20 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Thu Feb 11 02:15:45 2016 +0900 +++ b/mercurial/commands.py Mon Feb 08 12:33:00 2016 -0500 @@ -2457,20 +2457,21 @@ raise error.Abort(_("no ignore patterns found")) else: for f in files: + nf = util.normpath(f) ignored = None ignoredata = None - if f != '.': - if ignore(f): - ignored = f - ignoredata = repo.dirstate._ignorefileandline(f) + if nf != '.': + if ignore(nf): + ignored = nf + ignoredata = repo.dirstate._ignorefileandline(nf) else: - for p in util.finddirs(f): + for p in util.finddirs(nf): if ignore(p): ignored = p ignoredata = repo.dirstate._ignorefileandline(p) break if ignored: - if ignored == f: + if ignored == nf: ui.write("%s is ignored\n" % f) else: ui.write("%s is ignored because of containing folder %s\n"
--- a/tests/test-hgignore.t Thu Feb 11 02:15:45 2016 +0900 +++ b/tests/test-hgignore.t Mon Feb 08 12:33:00 2016 -0500 @@ -286,3 +286,16 @@ $ hg debugignore dir1/file2 dir1/file2 is ignored (ignore rule in dir2/.hgignore, line 1: 'file*2') + +#if windows + +Windows paths are accepted on input + + $ rm dir1/.hgignore + $ echo "dir1/file*" >> .hgignore + $ hg debugignore "dir1\file2" + dir1\file2 is ignored + (ignore rule in $TESTTMP\ignorerepo\.hgignore, line 4: 'dir1/file*') + $ hg up -qC . + +#endif