This document describes the project shape that the implementation is expected to follow while the filesystem is built out.
src/cli.rsparses thetimefscommand line and stays thin.src/config.rsvalidates CLI input and turns it into runtime configuration.src/fs/contains the FUSE-facing implementation and must not talk to the Git library directly.src/git/contains the Git backend abstraction and implementations.src/cache/is reserved for inode, object, and directory caches as the filesystem grows.src/errors.rsholds shared user-facing error types.
Filesystem code depends on local traits instead of gix directly:
RevResolverresolves revisions to commits.ObjectStorereads commits, trees, blobs, and symlink targets.
The initial implementation lives in src/git/store.rs as GixRepository.
The gix backend stores a ThreadSafeRepository and creates one thread-local gix::Repository handle per worker thread.
- No filesystem request path should serialize all repository reads through one global mutex.
- Thread-local handles are created lazily and reused by subsequent operations on the same thread.
The authoritative Git-to-FUSE mapping is available at
docs/FUSE_MAPPING.md, which points at the root
FUSE_MAPPING.md document currently kept in sync with
the implementation work orders.