A modern version control system designed as a Git alternative with enhanced features like timeline-based branching, content-addressable storage, and seamless GitHub integration.
- Timeline-Based Branching: Intuitive branch management with auto-shelving
- Modern Cryptography: BLAKE3 hashing for security and performance
- Content-Addressable Storage: Efficient deduplication and storage
- GitHub Integration: Seamless clone, push, and pull operations
- Auto-Shelving: Never lose work when switching branches
- Selective Sync: Download only the branches you need
- Merkle Mountain Range: Append-only commit history with cryptographic proofs
# Clone and build
git clone https://github.com/javanhut/IvaldiVCS
cd IvaldiVCS
go build -o ivaldi .
# Add to PATH or use ./ivaldi directly
# Initialize repository
ivaldi forge
# Check status
ivaldi status
# Stage files
ivaldi gather file1.txt file2.js
# Create commit (generates memorable seal name)
ivaldi seal "Add new features"
# Output: Created seal: swift-eagle-flies-high-447abe9b (447abe9b)
# Check current position
ivaldi whereami
# Output: Last Seal: swift-eagle-flies-high-447abe9b (just now)
# List all seals
ivaldi seals list
# Create and switch timeline (branch)
ivaldi timeline create feature-auth
ivaldi timeline switch main
# Connect to GitHub repository
ivaldi portal add owner/repo
# Clone from GitHub
ivaldi download owner/awesome-project
# Discover remote branches
ivaldi scout
# Download specific branches
ivaldi harvest feature-auth bugfix-db
# Push changes
ivaldi upload
Timelines are Ivaldi's equivalent to Git branches, but with enhanced features:
- Auto-shelving: Uncommitted changes are automatically preserved when switching
- Workspace isolation: Each timeline maintains its own workspace state
- Efficient storage: Shared content between timelines via content-addressable storage
Ivaldi uses intuitive command names with enhanced user experience:
gather
: Stage files (likegit add
)seal
: Create commit with auto-generated human-friendly names (likegit commit
)seals
: Manage seals with memorable names like "swift-eagle-flies-high-447abe9b"
Remote operations are designed for selective collaboration:
scout
: Discover available remote branchesharvest
: Download only the branches you need
- Usage Guide: Comprehensive guide to using Ivaldi VCS
- Architecture: Technical details about how Ivaldi works
- Seal Names: Human-friendly commit naming system
- Scout & Harvest: Remote timeline operations
- Timeline Branching: Advanced branching features
- Whereami Command: Current timeline information
- GitHub Integration: GitHub synchronization
- Portal Commands: Repository connection management
ivaldi forge # Initialize repository
ivaldi status # Show working directory status
ivaldi whereami # Show current timeline details (alias: wai)
ivaldi gather [files...] # Stage files for commit
ivaldi seal <message> # Create commit with staged files (generates unique seal name)
ivaldi seals list # List all seals with their generated names
ivaldi seals show <name|hash> # Show detailed information about a seal
ivaldi timeline create <name> # Create new timeline
ivaldi timeline switch <name> # Switch to timeline
ivaldi timeline list # List all timelines
ivaldi timeline remove <name> # Delete timeline
ivaldi portal add <owner/repo> # Add GitHub connection
ivaldi portal list # List connections
ivaldi download <url> [dir] # Clone repository
ivaldi scout # Discover remote timelines
ivaldi harvest [names...] # Download timelines
ivaldi upload # Push to GitHub
- All content stored using BLAKE3 hashing
- Automatic deduplication across the entire repository
- Efficient storage of large files through chunking
- Append-only commit history with cryptographic proofs
- Efficient verification of commit inclusion
- Persistent storage using BoltDB
- Hash Array Mapped Trie for efficient directory management
- Structural sharing between timelines
- O(log n) updates and lookups
- Intelligent file materialization when switching timelines
- Auto-shelving preserves uncommitted changes
- Minimal file system operations during switches
Feature | Git | Ivaldi |
---|---|---|
Initialize | git init |
ivaldi forge |
Stage files | git add |
ivaldi gather |
Commit | git commit |
ivaldi seal |
Branch | git branch |
ivaldi timeline create |
Switch branch | git checkout |
ivaldi timeline switch |
Clone | git clone |
ivaldi download |
Push | git push |
ivaldi upload |
Fetch | git fetch |
ivaldi harvest |
- Intuitive Commands: Clear, descriptive command names
- Human-Friendly Seals: Commits get memorable names like "swift-eagle-flies-high-447abe9b"
- Auto-Shelving: Never lose work when switching branches
- Selective Sync: Download only branches you need
- Modern Hashing: BLAKE3 for better security and performance
- Clean Storage: Content-addressable storage with automatic deduplication
- GitHub Integration: First-class GitHub support built-in
# Build the project
make build
# Run tests
make test
# Clean build artifacts
make clean
├── cli/ # Command-line interface
├── internal/ # Internal packages
│ ├── cas/ # Content-addressable storage
│ ├── commit/ # Commit management
│ ├── filechunk/ # File chunking system
│ ├── github/ # GitHub integration
│ ├── hamtdir/ # HAMT directory trees
│ ├── history/ # MMR and timeline history
│ ├── refs/ # Reference management
│ ├── workspace/ # Workspace materialization
│ └── wsindex/ # Workspace indexing
├── docs/ # Documentation
└── main.go # Entry point
- Fork the repository
- Create a feature timeline:
ivaldi timeline create feature-name
- Make your changes and commit:
ivaldi gather . && ivaldi seal "Description"
- Push to your fork:
ivaldi upload
- Create a Pull Request
[License details to be added]
Ivaldi VCS builds upon research in:
- Content-addressable storage systems
- Merkle data structures
- Modern cryptographic hashing
- Version control system design
Ivaldi VCS - Modern version control for the modern developer