aus-der-Technik / FileMonitor

Watch for file changes in a directory with a unified API on Linux and macOS.
MIT License
30 stars 8 forks source link

Recursive directory monitoring -> inconsistent behavior #3

Open jagreenwood opened 4 months ago

jagreenwood commented 4 months ago

When working with this library on macOS and Linux, I'm seeing a difference in behavior between the two regarding recursive monitoring of directories.

Given the scenarios: 1) watch a directory, add a file to directory 2) watch a directory with a subdirectory, add a file to subdirectory 3) watch a directory, add a subdirectory, add a file

1 2 3
macOS
Linux

The reason for this difference is because the inotify C library does not automatically support recursion.

Inotify monitoring of directories is not recursive: to monitor subdirectories
under a directory, additional watches must be created. This can take a significant 
amount time for large directory trees.

I'm not sure which is behaving as intended for the scope of this project, but would expect the behavior to be the same.

KrisSimon commented 2 months ago

Hi @jagreenwood Thank you very much for raising this issue.

My favour would be a consistent behaviour in both (windows is still missing) worlds. Rarely you have to watch a full file tree, so I would go with mimic the linux way back to mac.

Would you like to open a fork and provide a pull request? <3

jagreenwood commented 2 months ago

I actually feel like macOS's behavior is more flexible making it more desirable. While increasing complexity, perhaps an implementation that takes a set of option flags would be a good path forward? I'm afraid I don't have the bandwidth atm to look at this, but I can put it my queue to revisit :)

KrisSimon commented 2 months ago

It's on the roadmap!