Getting Started with Ivaldi
This guide will help you install Ivaldi and create your first repository.
Installation
Build from Source
Ivaldi is written in Go. To build from source:
# Clone the repository
git clone https://github.com/javanhut/IvaldiVCS
cd IvaldiVCS
# Build the binary
go build -o ivaldi .
# Optionally, add to PATH
sudo mv ivaldi /usr/local/bin/
Verify Installation
ivaldi --version
# Ivaldi VCS
Your First Repository
Initialize a New Repository
# Create a new directory
mkdir my-project
cd my-project
# Initialize Ivaldi repository
ivaldi forge
This creates a .ivaldi directory and sets up the main timeline.
Configure Your Identity
# Set your name and email
ivaldi config
# Interactive prompts will guide you
Or set directly:
ivaldi config --set user.name "Your Name"
ivaldi config --set user.email "your.email@example.com"
Create Your First Seal (Commit)
# Create a README file
echo "# My Project" > README.md
# Stage the file
ivaldi gather README.md
# Create a commit (seal)
ivaldi seal "Initial commit"
# Output: Created seal: swift-eagle-flies-high-447abe9b (447abe9b)
Congratulations! You’ve created your first seal with a memorable name.
Check Status
# View repository status
ivaldi status
# See current position
ivaldi whereami
# or shorter:
ivaldi wai
Basic Workflow
1. Make Changes
# Edit files
echo "Hello Ivaldi!" >> README.md
# Check what changed
ivaldi status
2. Stage Changes
# Stage specific files
ivaldi gather README.md
# Or stage all changes
ivaldi gather .
# Or gather all (prompts for hidden files)
ivaldi gather
3. Create a Seal (Commit)
ivaldi seal "Update README with greeting"
# Created seal: brave-wolf-runs-fast-abc12345
4. View History
# See all seals
ivaldi log
# Concise view
ivaldi log --oneline
# Recent seals only
ivaldi log --limit 5
Working with Timelines (Branches)
Create a Timeline
# Create a new timeline for a feature
ivaldi timeline create feature-login
# This automatically switches to the new timeline
Switch Timelines
# Switch back to main
ivaldi timeline switch main
# Your changes are auto-shelved and restored when you return!
List Timelines
ivaldi timeline list
Merge Timelines
# Merge feature into main
ivaldi timeline switch main
ivaldi fuse feature-login to main
GitHub Integration
Connect to GitHub
# Add GitHub repository
ivaldi portal add owner/repo
You’ll need a GitHub token with appropriate permissions. Set it as:
export GITHUB_TOKEN="your_token_here"
Or use GitHub CLI:
gh auth login
Upload (Push) to GitHub
ivaldi upload
Download (Clone) from GitHub
ivaldi download owner/repo my-project
cd my-project
Discover and Fetch Remote Timelines
# See what's available
ivaldi scout
# Download specific timelines
ivaldi harvest feature-payments
# Download all new timelines
ivaldi harvest
Essential Commands Summary
| Command | Purpose | Example |
|---|---|---|
ivaldi forge |
Initialize repository | ivaldi forge |
ivaldi gather |
Stage files | ivaldi gather README.md |
ivaldi seal |
Create commit | ivaldi seal "Add feature" |
ivaldi status |
Check status | ivaldi status |
ivaldi whereami |
Current position | ivaldi whereami |
ivaldi log |
View history | ivaldi log --limit 10 |
ivaldi timeline create |
New timeline | ivaldi timeline create feature-x |
ivaldi timeline switch |
Change timeline | ivaldi timeline switch main |
ivaldi fuse |
Merge timelines | ivaldi fuse feature to main |
ivaldi portal add |
Connect GitHub | ivaldi portal add owner/repo |
ivaldi upload |
Push to GitHub | ivaldi upload |
ivaldi download |
Clone from GitHub | ivaldi download owner/repo |
Quick Start Example
Complete workflow from initialization to pushing to GitHub:
# Initialize repository
ivaldi forge
# Configure user
ivaldi config --set user.name "Your Name"
ivaldi config --set user.email "you@example.com"
# Create initial files
echo "# My Project" > README.md
echo "This is a test project using Ivaldi VCS" >> README.md
# Stage and commit
ivaldi gather README.md
ivaldi seal "Initial commit"
# Create a feature timeline
ivaldi timeline create add-documentation
# Add more files
echo "# Documentation" > DOCS.md
ivaldi gather DOCS.md
ivaldi seal "Add documentation file"
# Switch back to main
ivaldi timeline switch main
# Merge the feature
ivaldi fuse add-documentation to main
# Connect to GitHub
ivaldi portal add yourusername/your-repo
# Push to GitHub
ivaldi upload
Next Steps
Now that you understand the basics:
- Learn about Core Concepts behind Ivaldi
- Explore the Command Reference for detailed command documentation
- Read Workflow Guides for best practices
- See the Git Comparison to understand differences from Git
Getting Help
- View command help:
ivaldi <command> --help - Check current status:
ivaldi status - View configuration:
ivaldi config --list - Report issues on GitHub