mutagen-io / mutagen

Fast file synchronization and network forwarding for remote development
https://mutagen.io
Other
3.47k stars 153 forks source link

Implement hybrid watching backends for kqueue and FEN systems #8

Open xenoscopic opened 7 years ago

xenoscopic commented 7 years ago

It'd be nice to support inotify, kqueue, etc, but these don't support recursive watching and might potentially exhaust file/watch descriptors for large directories. Perhaps we can make these work though using watches of a certain size, watches on only the N most recently changed files, etc.

See updated comment.

xenoscopic commented 6 years ago

Some initial work has been done here on the hybrid_watch branch, and the design is more or less sound, but we need a different inotify/kqueue implementation. Unfortunately it seems like the fsnotify package is no longer maintained.

See updated comment.

xenoscopic commented 6 years ago

Support for our hybrid watching scheme has now been merged, but only for inotify systems. Unfortunately it seems like we're going to have to write our own kqueue/FEN backends, because those available in other projects are just a bit too clever or a bit too broken. Fortunately all of the hybrid watching code is reusable and the backend interface is super simple.

xenoscopic commented 6 years ago

See also #45 as an idea about how we might support these systems.