gini

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.

terminal
~/my-project $ 

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.

git clone https://github.com/somendrajaat/gini_cli.git
cd gini_cli
cargo install --path .

šŸš€ Get the latest development features

Quick Start

After installation, verify gini is working:

gini --version