Mercurial > hg
changeset 27671:067d87feeb11
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.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Tue, 05 Jan 2016 07:47:08 -0800 |
parents | 4374f039d269 |
children | f2da9bb87ae0 |
files | mercurial/commands.py tests/test-help.t tests/test-hgignore.t |
diffstat | 3 files changed, 44 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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'))],
--- 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
--- 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