[PATCH 2 of 3] debugignore: find out if a file is being ignored
Laurent Charignon
lcharignon at fb.com
Tue Jan 5 10:06:34 CST 2016
# HG changeset patch
# User Laurent Charignon <lcharignon at fb.com>
# Date 1452008828 28800
# Tue Jan 05 07:47:08 2016 -0800
# Node ID f7e7e2860418d168df8486867297ce598f5b362b
# Parent 6019e5e7842a8c474f38c5933555f6cc514d8a68
debugignore: find out if a file is being ignored
Before this patch debugignore was just displaying the list of ignore patterns.
This patch makes it support a list of filename as argument and tells the user
if those given files are ignored or not.
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2435,15 +2435,41 @@
raise error.Abort(_('unknown bundle type specified with --type'))
changegroup.writebundle(ui, bundle, bundlepath, bundletype)
- at command('debugignore', [], '')
-def debugignore(ui, repo, *values, **opts):
- """display the combined ignore pattern"""
+ at command('debugignore', [], '[FILE]')
+def debugignore(ui, repo, *files, **opts):
+ """display the combined ignore pattern and information about ignored files
+
+ With no argument display the combined ignore pattern.
+
+ Given space separated file names, shows if the given file is ignored.
+ """
ignore = repo.dirstate._ignore
- includepat = getattr(ignore, 'includepat', None)
- if includepat is not None:
- ui.write("%s\n" % includepat)
+ if not files:
+ # Show all the patterns
+ includepat = getattr(ignore, 'includepat', None)
+ if includepat is not None:
+ ui.write("%s\n" % includepat)
+ else:
+ raise error.Abort(_("no ignore patterns found"))
else:
- raise error.Abort(_("no ignore patterns found"))
+ for f in files:
+ ignored = None
+ if f != '.':
+ if ignore(f):
+ ignored = f
+ else:
+ for p in util.finddirs(f):
+ if ignore(p):
+ ignored = p
+ break
+ if ignored:
+ if ignored == f:
+ ui.write("%s is ignored\n" % f)
+ else:
+ ui.write("%s is ignored because of containing folder %s\n"
+ % (f, ignored))
+ else:
+ ui.write("%s is not ignored\n" % f)
@command('debugindex', debugrevlogopts +
[('f', 'format', 0, _('revlog format'), _('FORMAT'))],
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -829,7 +829,8 @@
debugfsinfo show information detected about current filesystem
debuggetbundle
retrieves a bundle from a repo
- debugignore display the combined ignore pattern
+ debugignore display the combined ignore pattern and information about
+ ignored files
debugindex dump the contents of an index file
debugindexdot
dump an index DAG as a graphviz dot file
diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t
--- a/tests/test-hgignore.t
+++ b/tests/test-hgignore.t
@@ -166,6 +166,9 @@
$ hg debugignore
(?:(?:|.*/)[^/]*(?:/|$))
+ $ hg debugignore b.o
+ b.o is ignored
+
$ cd ..
Check patterns that match only the directory
@@ -191,6 +194,10 @@
? a.c
? a.o
? syntax
+ $ hg debugignore a.c
+ a.c is not ignored
+ $ hg debugignore dir/c.o
+ dir/c.o is ignored
Check using 'include:' in ignore file
@@ -274,3 +281,5 @@
$ hg status | grep file2
[1]
+ $ hg debugignore dir1/file2
+ dir1/file2 is ignored
More information about the Mercurial-devel
mailing list