Proposed Patch to hgignore
jakob at hawo.stw.uni-erlangen.de
Thu Mar 6 15:01:09 CST 2008
On Thu 2008-03-06 14:00:19 -0600, Matt Mackall wrote:
> As discussed in the distant past, this feature is very difficult to
> implement in a way that is simultaneously correct and easy to
> understand, nevermind fast. Even though it looks simple on paper.
> Ever wonder why regexes themselves don't have a negation operator?
> It's the sort of deep result that computer science professors tend to
> skim over but could easily fill a book or two.
> Mathematics is the supreme nostalgia of our time.
Maybe, but my patch uses only facilities that are already present
in mercurial (look at the -I and -X options).
in other words, my solution doesnt create a regex that matches
anything _but_ a pattern, it creates a regex that _matches_ said pattern
and feeds it to another parameter of the constructor of the matcher object.
have a look at the patch, it happens in mercurial/ignore.py
the matcher object is defined in mercurial/util.py
it accepts two lists of patterns, and matches (which leads to an ignore)
if any pattern in the first list matches and _no_ pattern in the second list.
the second list of patterns does indeed consist of ordinary regular
expressions, the negation is done on logic level after the matching.
a valid comparison would be the hosts.allow / hosts.deny mechanism
of wietse venemas tcp_wrapper.
(cf. http://itso.iu.edu/TCP_Wrappers )
More information about the Mercurial-devel