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.
--- 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