diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2435,15 +2435,41 @@ def debuggetbundle(ui, repopath, bundlep raise error.Abort(_('unknown bundle type specified with --type')) changegroup.writebundle(ui, bundle, bundlepath, bundletype) -@command('debugignore', [], '') -def debugignore(ui, repo, *values, **opts): - """display the combined ignore pattern""" +@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 @@ Test list of internal help commands 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 @@ Test relative ignore path (issue4473): $ hg debugignore (?:(?:|.*/)[^/]*(?:/|$)) + $ hg debugignore b.o + b.o is ignored + $ cd .. Check patterns that match only the directory @@ -191,6 +194,10 @@ Check recursive glob pattern matches no ? 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 @@ Check include subignore at the same leve $ hg status | grep file2 [1] + $ hg debugignore dir1/file2 + dir1/file2 is ignored