--- a/mercurial/ignore.py Sun Jul 29 19:32:55 2007 +0200
+++ b/mercurial/ignore.py Mon Jul 30 20:06:11 2007 +0200
@@ -57,10 +57,13 @@
warn(_("%s: ignoring invalid syntax '%s'\n") % (f, s))
continue
pat = syntax + line
- for s in syntaxes.values():
- if line.startswith(s):
+ for s, rels in syntaxes.items():
+ if line.startswith(rels):
pat = line
break
+ elif line.startswith(s+':'):
+ pat = rels + line[len(s)+1:]
+ break
pats[f].append(pat)
except IOError, inst:
if f != files[0]:
--- a/tests/test-hgignore Sun Jul 29 19:32:55 2007 +0200
+++ b/tests/test-hgignore Mon Jul 30 20:06:11 2007 +0200
@@ -40,12 +40,15 @@
echo ".*\.o" > .hgignore
echo "--" ; hg status
-# XXX: broken
-#echo "glob:**.o" > .hgignore
-#echo "--" ; hg status
-#
-#echo "glob:*.o" > .hgignore
-#echo "--" ; hg status
+echo "glob:**.o" > .hgignore
+echo "--" ; hg status
+
+echo "glob:*.o" > .hgignore
+echo "--" ; hg status
+
+echo "syntax: glob" > .hgignore
+echo "re:.*\.o" >> .hgignore
+echo "--" ; hg status
echo "syntax: invalid" > .hgignore
echo "--" ; hg status 2>&1 | sed -e 's/.*\.hgignore:/.hgignore:/'
--- a/tests/test-hgignore.out Sun Jul 29 19:32:55 2007 +0200
+++ b/tests/test-hgignore.out Mon Jul 30 20:06:11 2007 +0200
@@ -14,6 +14,21 @@
? a.c
? syntax
--
+A dir/b.o
+? .hgignore
+? a.c
+? syntax
+--
+A dir/b.o
+? .hgignore
+? a.c
+? syntax
+--
+A dir/b.o
+? .hgignore
+? a.c
+? syntax
+--
.hgignore: ignoring invalid syntax 'invalid'
A dir/b.o
? .hgignore