GUSE (goo͞s) is a git based filesystem, written in rust and mouted with FUSE.
Under development. See Usage for current functionality
Dependencies
This project uses libgit2 (via the git2 crate) and
SQLite (via the rusqlite crate).
OS
This project has support for linux/macOS. On windows, consider using WSL2.
How to install and use
INFO
GUSE is a learning project. It is built to allow user to interact with git directly from the filesystem, using commands such as cd, ls, mkdir, touch, cat etc
Inspired by rencfs
GUSE allows mounting of multiple 'repositories' and manage them independently
The disk structure, as observed by the user is:
data_dir (Root folder. Can be renamed)
├── repository_1/
├── live # working files and folders
├── user_file1.md
└── user_file2.md
├── YYYY-MM/ # a list of months where commits were made
├── Snap_001_HASH/ # list of commits for the respective month
├── user_file1.md # previous versions of the live files. Read only versions
└── user_file2.md
└── Snap_002_HASH/
├── YYYY-MM/
├── Snap_001_HASH/
├── user_file1.md
└── user_file2.md
└── Snap_002_HASH/
├── YYYY-MM/
├── Snaps_on_HASH/
├── user_file1.md
└── user_file2.md
└── Snaps_on_HASH/
...
├── repository_2/
├── live
├── YYYY-MM/
├── YYYY-MM/
├── YYYY-MM/
...
├── repository_3/
├── live
├── YYYY-MM/
├── YYYY-MM/
├── YYYY-MM/
...