On Oct 24, 2016, at 2:32 PM, Adam Jensen <han...@riseup.net> wrote: > > On 10/24/2016 03:07 PM, Warren Young wrote: >> I don’t know that Fossil is all that close to any other software >> system you’ve likely used before. > > Isn't it a file (version) management system based on an embedded database?
Under casual inspection, Fossil presents itself to the user that way, but if you dig into the way it actually works, you quickly find many places where Fossil doesn’t behave like a POSIX filesystem. (Or an NTFS one, for that matter.) 1. Fossil’s file storage mechanism isn’t fundamentally hierarchical. If you have a file called foo/bar/qux.c checked into the repo, its stored name is “foo/bar/qux.c” not “qux.c” which happens to live in a directory called “bar”. 2. Fossil’s low-level storage mechanism doesn’t have any concept of directories except as parents of a file, which is all Fossil really cares about. Largely this follows from point 1, but there are other knock-on effects, such as that you can’t store an empty directory in Fossil. 3. Symlinks continue to have impedance mismatch problems w.r.t. POSIX semantics. For example, there was the fix merged into trunk just 20 days ago allowing a symlink stored in Fossil to point to a directory. Unix solved this in 1983 with the release of 4.2BSD, but Fossil didn’t implement this use case until 2016, which is the sort of thing that happens when you’re not setting out to build a POSIX filesystem from the start. (I’m not laying blame, I’m just pointing out that different goals get different results.) 4. fossil mv and rm don’t behave like POSIX requires unless you give --hard or build Fossil in a nonstandard way and set an option that’s cleared by default. 5. Fossil’s understanding of file permissions is pretty much just a least-common-denominator subset of the logical intersection of Windows and POSIX permissions. There is an experimental (?) feature of Fossil allowing it to operate as a FUSE filesystem. (fossil help fusefs) I suspect if you tried to use it that way for any complex software build system — say, that of Firefox — that you’d run into one or more of the above problems, or perhaps others I haven’t cataloged, as the build system makes assumptions about POSIX semantics that Fossil simply doesn’t provide. _______________________________________________ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users