Skip to main content

A lightweight version control system with cross-platform support

Project description

SnapVC - Simple Version Control System

License: MIT Python 3.7+ Cross-Platform

A lightweight, educational version control system with Git-like "house" branches, content-addressable storage, and cross-platform compatibility. Perfect for learning version control internals.

🚀 Quick Start

# Install
pip install snapvc

# Initialize and create first snapshot
svcs init
echo "Hello World" > file.txt
svcs ready && svcs snapshot

# Check status
svcs current  # Current version
svcs snaps    # Total snapshots

✨ Key Features

  • 🏠 House System: Git-like branches for parallel development
  • 📸 Content-Addressable Storage: SHA-256 hashing with automatic deduplication
  • 🗜️ Gzipped Storage: Compressed snapshots for efficient disk usage
  • 🌍 Cross-Platform: Windows, macOS, Linux support
  • 📚 Educational: Learn version control internals hands-on
  • 📦 Zero Dependencies: Python standard library only

📖 Essential Commands

Command Description
svcs init Initialize repository
svcs ready Stage files for snapshot
svcs snapshot Create versioned snapshot
svcs house new <name> Create new house (branch)
svcs house <name> Switch to house
svcs current Show current version
svcs revert <version> Restore to specific version

🏠 House System Example

# Create feature branch
svcs house new feature
echo "new feature" > feature.py
svcs ready && svcs snapshot

# Switch back to main
svcs house main  # feature.py disappears

# Switch to feature
svcs house feature  # feature.py reappears

🔧 How It Works

  • Staging: Files prepared in "ready" area before snapshotting
  • Hashing: SHA-256 ensures integrity and enables deduplication
  • Compression: Gzipped storage for efficient disk usage
  • Storage: Content-addressable storage with automatic file sharing
  • Houses: Independent version histories with shared content pool
.svcs/
├── house.txt           # Current house
├── main/              # Default house
│   ├── data.json      # Version metadata
│   ├── ready/         # Staging area
│   └── snapshot/      # Content by hash (gzipped)
└── feature/           # Other houses

💡 Perfect For

  • Learning: Understand Git-like systems internally
  • Education: Teaching version control concepts
  • Small Projects: Lightweight versioning without Git complexity
  • Experimentation: Try different workflows and branching strategies

⚠️ Requirements

  • Python 3.7+
  • Any OS (Windows, macOS, Linux)
  • No external dependencies

📚 Documentation

For detailed documentation, examples, and architecture details, visit: https://github.com/ShreyashM17/Version-control

📝 License & Author


Learn version control by building it! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snapvc-1.1.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snapvc-1.1.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file snapvc-1.1.0.tar.gz.

File metadata

  • Download URL: snapvc-1.1.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for snapvc-1.1.0.tar.gz
Algorithm Hash digest
SHA256 08a2b036d4c9b832f0b487fb87a5560588e2948f101e2cc2056ed5fb72a45f93
MD5 bda8ea6eaa9878e51d5cf240769f9745
BLAKE2b-256 eb348c986fbb9d006be883e99f61dc4ebc88e56e774b1f89e30eb9765865950a

See more details on using hashes here.

File details

Details for the file snapvc-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: snapvc-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for snapvc-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eed931cd5e1f54d93c68b1f7332ff080c71d2436b96e21969e6e40511a0ba09a
MD5 428be36d499fb631e08e11fc672ddf4e
BLAKE2b-256 f8d5b69338d3de2dd3a6369ff5c43499e5f6b0b71483b12dbd1d06b6028bfe1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page