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