| Crates.io | kitcat |
| lib.rs | kitcat |
| version | 0.2.0-beta.1 |
| created_at | 2026-01-18 13:24:06.722026+00 |
| updated_at | 2026-01-18 13:24:06.722026+00 |
| description | A Git-like version control system written in Rust with support for branching, merging, and packfiles |
| homepage | https://github.com/itsSauraj/kit-kat |
| repository | https://github.com/itsSauraj/kit-kat |
| max_upload_size | |
| id | 2052330 |
| size | 238,990 |
KitCat is a Git-like version control system implemented in Rust, designed to be simple, fast, and Git-compatible where possible. It's an educational project demonstrating how version control systems work under the hood.
Repository Management
.kitcat directory structure)Object Storage
Staging Area
Version Control
log, log --oneline)CLI Interface
Repository Optimization
# Clone the repository
git clone https://github.com/yourusername/kitcat.git
cd kitcat
# Build in release mode
cargo build --release
# The binary is at target/release/kitcat
# Optionally, add to your PATH
See the Installation Guide for detailed instructions.
# Initialize a new repository
kitcat init
# Configure your identity
kitcat config user.name "Your Name"
kitcat config user.email "you@example.com"
# Create and add a file
echo "# My Project" > README.md
kitcat add README.md
# Create your first commit
kitcat commit -m "Initial commit"
# View history
kitcat log
See the Quick Start Guide for a complete tutorial.
Comprehensive documentation is available in the docs/ directory:
Getting Started
Guides
# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- init
# Run all tests
cargo test
# Run specific test
cargo test test_name
# Run with output
cargo test -- --nocapture
# Run manual tests
./test-kitcat.sh # See docs/testing-guide.md
# Initialize repository
kitcat init
# Configure identity
kitcat config user.name "Developer"
kitcat config user.email "dev@example.com"
# Add files
kitcat add file1.txt
kitcat add file2.txt
# Create commit
kitcat commit -m "Add initial files"
# View history
kitcat log --oneline
# Create a branch
kitcat branch feature-x
# List branches
kitcat branch
# Switch to branch
kitcat branch feature-x
# Make changes and commit
kitcat add newfile.txt
kitcat commit -m "Add feature"
# Switch back to master
kitcat branch master
# Delete branch
kitcat branch -d feature-x
# Create and switch to a feature branch
kitcat branch feature
kitcat checkout feature
# Make changes on feature branch
echo "new feature" > feature.txt
kitcat add feature.txt
kitcat commit -m "Add new feature"
# Switch back to master
kitcat checkout master
# Merge feature into master
kitcat merge feature
# If there are conflicts:
# - Edit files to resolve conflicts
# - Stage the resolved files
kitcat add resolved-file.txt
# - Continue the merge
kitcat merge --continue
# Or abort the merge
kitcat merge --abort
# Write tree from index
kitcat write-tree
# List tree contents
kitcat list-tree <tree-hash>
# Show commit details
kitcat show-commit <commit-hash>
# View commit history
kitcat log
kitcat log --oneline
kitcat log -n 5
KitCat uses a modular architecture:
βββββββββββββββββββββββββββββββββββββββ
β CLI Layer β
β (Command Parsing) β
ββββββββββββββ¬βββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββββββββββββββ
β Commands Layer β
β (Business Logic) β
ββββββ¬ββββββββ¬βββββββββ¬ββββββββββββββββ
β β β
ββββββΌββββ βββΌβββββ ββΌβββββββββ
β Index β βObjectβ β Repo β
β (Stage)β βStorageβ β (Config)β
ββββββββββ ββββββββ βββββββββββ
Object Model: Git-compatible
Storage: Content-addressable
See Architecture Documentation for details.
Version: 0.1.0 (Alpha) Rust Edition: 2024
| Feature | Status |
|---|---|
| Repository initialization | β Complete |
| Binary index (staging) | β Complete |
| Blob objects | β Complete |
| Tree objects | β Complete |
| Commit objects | β Complete |
| Branch management | β Complete |
| Commit history (log) | β Complete |
| Configuration | β Complete |
| Status command | β Complete |
| Checkout | β Complete |
| Diff | β Complete |
| Merge | β Complete |
| Garbage collection | β Complete |
| Packfiles | β Complete |
Phase 1 Progress: 11/11 features complete (100%) β¨
Contributions are welcome! Please read our Contributing Guide (coming soon) for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE.rst file for details.
Built with β€οΈ and Rust π¦
KitCat: Because version control should be easy to understand!