# HG changeset patch # User Laurent Charignon # Date 1452008828 28800 # Node ID 067d87feeb11c11fb3ca1ee40b5fa242c93850ea # Parent 4374f039d2691e3b4c635fa0c1a2d1f252bd9952 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 -r 4374f039d269 -r 067d87feeb11 mercurial/commands.py --- a/mercurial/commands.py Tue Jan 05 07:52:04 2016 -0800 +++ b/mercurial/commands.py Tue Jan 05 07:47:08 2016 -0800 @@ -2435,15 +2435,41 @@ 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 -r 4374f039d269 -r 067d87feeb11 tests/test-help.t --- a/tests/test-help.t Tue Jan 05 07:52:04 2016 -0800 +++ b/tests/test-help.t Tue Jan 05 07:47:08 2016 -0800 @@ -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 -r 4374f039d269 -r 067d87feeb11 tests/test-hgignore.t --- a/tests/test-hgignore.t Tue Jan 05 07:52:04 2016 -0800 +++ b/tests/test-hgignore.t Tue Jan 05 07:47:08 2016 -0800 @@ -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