A simple, fast, and secure
checkpoint system
gini lets you create, list, and restore project checkpoints with the efficiency of Git's snapshot model, making it easy to save and roll back to different states without duplicating data.
Why Use Gini?
A lightweight but powerful tool for managing project states with confidence and efficiency.
Efficient Snapshots
Uses a content-addressed storage model inspired by Git. Only stores unique file contents, saving significant disk space through deduplication.
Enhanced Security
Protects against common issues with input validation, path traversal protection, and configurable file size limits.
Automatic Backups
Before any destructive operation like a restore, gini automatically creates a backup, providing a complete safety net.
Instant Checkpoints
Save a snapshot of your project's state instantly with descriptive messages and simple, intuitive commands.
Clean History
View a clean, chronological log of all checkpoints to easily track your project's evolution over time.
Simple Commands
An intuitive and minimal set of commands with short aliases makes gini incredibly easy to learn and use daily.
The Efficiency of Snapshots
Instead of copying your entire project, gini uses a content-addressed object store, just like Git, for maximum efficiency.
1. Commits (Checkpoints)
Snapshot with metadata
2. Trees
Directory structure
3. Blobs
File content
Interactive Command Explorer
Click on any command below to see how it works in action.
Get Started with Gini
Choose your preferred installation method and start creating checkpoints in minutes.
Install from Crates.io
The easiest way to get gini is by installing it with Cargo. Requires Rust 1.70 or later.
cargo install gini
ā” Installs the latest stable version
Build from Source
Clone the repository and build it yourself for the latest features and development version.
š Get the latest development features
Quick Start
After installation, verify gini is working:
gini --version