I'm quite often concerned that my hgignore file may be excluding important files. For example I just noticed that I was excluding all .exe files which excluded some little executable tools which should be kept with the source. It was a simple change to include them but makes me worried that the rules could have un-intended consequences.
Is there a way to view a list of all the files which are not being tracked due to the .hgignore
file? Just so I can periodically review the list to check I'm happy with it.
@Jon beat me to the punch with the right answer, but its worth nothing that along with
status -i
, there is:hg status -m
(only modified files)hg status -a
(only files that were added)hg status -r
(only files that were removed)hg status -d
(only files that were deleted)hg status -u
(all non-tracked files)hg status -c
(files with no changes, ie. "clean")hg status -A
(all files, ie, everything)Yes, it is Possible. If You're using smth like TortoiseHg, You can select what files You wanna see.
Here's a sample
If you want to do manual inspection on the file names, then use the
-i/--ignored
flag to status:If you want the file names alone, then use
-n/--no-status
to suppress theI
status code printed in front of each filename:If you need to process the files with
xargs
, then use the-0/--print0
flag in addition:That will take care of handling spaces correctly — with using
-0
, there is a risk that you'll end up treatingignored file.exe
as two files:ignored
andfile.exe
since shells normally split on spaces.The above commands show you untracked files matching
.hgignore
. If you want to solve the related problem of finding tracked files matching.hgignore
, then you need to use a fileset query. That looks like this:You can use filesets with all commands that operate on files, so you can for example do:
to schedule the files found for removal (with a copy left behind in your working copy).
The command
hg status -i
does exactly that.