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

Reply via email to