If someone updates a file in place, do you really want to create a new version for every write call? On the other hand, apps that update files atomically do so by renaming original and backup, which breaks tracking these as the same file.
What you can do is make hourly snapshots and make them available as read only shared directories. Easy enough with simple hard links, and many filesystems support snapshots natively.
Protocols like WebDav do support versioning, but it would work best with WebDav clients, not naive apps that think they are writing to a local disk.
The best version control is actual version control such as git.