[PATCH 3 of 3] debugignore: find out why a file is being ignored (issue4856)
Augie Fackler
raf at durin42.com
Thu Jan 7 00:52:45 UTC 2016
On Tue, Jan 05, 2016 at 08:06:35AM -0800, Laurent Charignon wrote:
> # HG changeset patch
> # User Laurent Charignon <lcharignon at fb.com>
> # Date 1452008828 28800
> # Tue Jan 05 07:47:08 2016 -0800
> # Node ID 4b94c235c1d56cf1b10b498069be8b8b3cd5df95
> # Parent f7e7e2860418d168df8486867297ce598f5b362b
> debugignore: find out why a file is being ignored (issue4856)
Very nice, looks useful. Queued, thanks.
>
> This patch adds a capability to hg debugignore: to explain why a given file is
> being ignores by mercurial. We display the filename, line and linenumber of the
> rule that lead us to ignore the file.
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -2441,7 +2441,8 @@
>
> With no argument display the combined ignore pattern.
>
> - Given space separated file names, shows if the given file is ignored.
> + Given space separated file names, shows if the given file is ignored and
> + if so, show the ignore rule (file and line number) that matched it.
> """
> ignore = repo.dirstate._ignore
> if not files:
> @@ -2454,13 +2455,16 @@
> else:
> for f in files:
> ignored = None
> + ignoredata = None
> if f != '.':
> if ignore(f):
> ignored = f
> + ignoredata = repo.dirstate._ignorefileandline(f)
> else:
> for p in util.finddirs(f):
> if ignore(p):
> ignored = p
> + ignoredata = repo.dirstate._ignorefileandline(p)
> break
> if ignored:
> if ignored == f:
> @@ -2468,6 +2472,9 @@
> else:
> ui.write("%s is ignored because of containing folder %s\n"
> % (f, ignored))
> + ignorefile, lineno, line = ignoredata
> + ui.write("(ignore rule in %s, line %d: '%s')\n"
> + % (ignorefile, lineno, line))
> else:
> ui.write("%s is not ignored\n" % f)
>
> diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t
> --- a/tests/test-hgignore.t
> +++ b/tests/test-hgignore.t
> @@ -168,6 +168,7 @@
>
> $ hg debugignore b.o
> b.o is ignored
> + (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: '*')
>
> $ cd ..
>
> @@ -198,6 +199,7 @@
> a.c is not ignored
> $ hg debugignore dir/c.o
> dir/c.o is ignored
> + (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 2: 'dir/**/c.o')
>
> Check using 'include:' in ignore file
>
> @@ -283,3 +285,4 @@
> [1]
> $ hg debugignore dir1/file2
> dir1/file2 is ignored
> + (ignore rule in dir2/.hgignore, line 1: 'file*2')
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list