Solves several issues, generally through delivering signals before filesystem events, preventing situations where an overwhelming amount of events makes it impossible to quit.
Does _not_ solve the problem of a queue full of lower-priority events not accepting an urgent message, but that's a rarer issue that's more complicated to overcome.
Changes the Filterer trait: adds Priority to `check_event()`
Makes some events unfilterable (Urgent priority): SIGINT, SIGTERM, and CTRL_C to the main process. These still need to be handled by `on_action` to do anything, but cannot be stopped before reaching that.
This is buggy behaviour that exists in <=1.17, and this patch restores it*
Per gitignore rules, this glob:
*/somefile
Will match:
foo/somefile
bar/somefile
But not:
somefile
However, so far we’ve accepted this. As this is a breaking change, this patch
introduces a hack which lets us accept this behaviour, but clearly marks it as
a compatibility exception. In 2.0, this will be gone.
Fixes#258
* It only restores it on unices, because the behaviour cannot be restored in
any reasonable manner on Windows. Ah well. It's not for long anyway.
These two options are meant to work together: they are a union of filters
rather than competing. Thus:
--exts toml,py --filter Gemfile
will match all of:
foo.toml
bar.py
Gemfile
rather than matching no files at all because Gemfile doesn’t have an extension.
Fixes#259
This notably fixes the v1 "confusing" behaviour when matching folders,
where the expectation is for any of:
folder
folder/
/folder
to match the folder and all paths below it, but v1 would only do this
when *both* of these were added:
**/folder
**/folder/**
Which is very verbose and has caught literally everyone who's ever tried
to do this kinda thing.
The old behaviour is preserved in the globset filterer, for
compatibility, as there are other small behavioural changes that this
affects, even though the new behaviour in the tagged filterer is
arguably the most correct and the old is a bug.