tinygitfs

command module
v0.0.0-...-b142f4f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2023 License: MIT Imports: 1 Imported by: 0

README

TinyGitfs

A little tiny gitfs

Goal

Explore the possibility of Git's storage and computation separation.

Function

Use Fuse to route git repository data to different storage media. Specifically, the file system's file metadata and directory data are written to a metadata storage such as Redis, while file data is written to an object storage such as MinIO. From the perspective of a Git repository, all of its data is saved to a data store, except for Git's loose and symbolic references which are saved to a metadata store as key-value (KV) pairs.

How to use

# run metadata storage redis
$ docker run -d --name redis \
        -v $PWD/redis-data:/data \
        -p 6379:6379 \
        --restart unless-stopped \
        redis redis-server --appendonly yes
   
# run data storage minio       
$ docker run -d --name minio \
        -v $PWD/minio-data:/data \
        -p 9000:9000 \
        --restart unless-stopped \
        minio/minio server /data

# run tinygitfs   
$ go build
$ mkdir /tmp/tinygitfs
$ ./tinygitfs mount /tmp/tinygitfs --metadata="redis://127.0.0.1:6379/2"  --endpoint=http://127.0.0.1:9000 --bucket=gitfs --access_key=minioadmin --secret_key=minioadmin
$ ls -ali /tmp/tinygitfs
total 16
    0 drwxr-xr-x   9 adl   staff  4096 Jan  4 00:16 .
26346 drwxrwxrwt  17 root  wheel   544 Jan  7 19:52 ..
   57 drwxr-xr-x   5 adl   staff  4096 Jan  7 17:04 d4
   60 -rw-r--r--   1 adl   staff     0 Jan  7 18:06 f3

architecture

img.png

Documentation

Overview

Copyright © 2023 ZheNing Hu <[email protected]>

Directories

Path Synopsis
pkg
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL