I'm managing $HOME using Mercurial, to keep my dotfiles nice and tracked, or at least the ones that matter to me.
However, there's a profusion of files and directories in ~ that do not need to be tracked, and that set is ever-changing and ever-growing.
Historically, I've dealt with this by having this .hgignore:
syntax: glob
*
This keeps my status clean, as far as it goes, making only previously tracked files visible. However, I have some directories (in my case, scripts
, .emacs.d
) that I would like to see untracked files in; I almost always want to track new additions to those directories.
I know that I can run hg st -u scripts
to identify untracked files, but I want a means whereby I can achieve the same function using plain ole hg status.
Is there a way to do this?
Try this in .hgignore
instead:
syntax: regexp
^(?!(scripts|foo|bar)/)[^/]+/
^
matches start of path(?!(scripts|foo|bar)
uses negative lookahead to ignore all files except those in directories scripts
, foo
or bar
/)
ensures that directories which have a tracked directory as a prefix are ignored[^/]+/
then actually matches any directory (excluding those ruled out by the lookahead), so that files in ~
aren't ignoredCredit for the central idea in this solution (the negative lookahead) goes to Michael La Voie's answer to this question
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With