# HG changeset patch # User Matt Harbison # Date 1454952780 18000 # Node ID 8515b813976bfab2abadfc95011807bd8c7a2816 # Parent 34a2944aac9bae1daeba269d16e441459cda76c4 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. diff -r 34a2944aac9b -r 8515b813976b mercurial/commands.py --- 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" diff -r 34a2944aac9b -r 8515b813976b tests/test-hgignore.t --- 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