SnapVC - Simple Version Control System
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/SnapVC
📝 License & Author
- License: MIT
- Author: Shreyash Mogaveera (@ShreyashM17)
Learn version control by building it! 🚀
Metadata
Release files for snapvc 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| snapvc-1.2.1.tar.gz | 10.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| snapvc-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.4 kB
Release files / snapvc-1.2.1.tar.gz
| Download URL | snapvc-1.2.1.tar.gz |
|---|---|
| Size | 10.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a65a0428297b886bbe679302095bf9a402fb79d1a2a0aad33d89d80a7d6c3754
|
|
BLAKE2b-256 checksum How to use checksums |
090f7f4f304cd9b4f708229d0c736338f70fa6d37cf3dc24f580eb7699925f8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / snapvc-1.2.1-py3-none-any.whl
| Download URL | snapvc-1.2.1-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
26edde322077897ae754783e8585ad25fef77a27bd649cb558d8a948fc23ae0f
|
|
BLAKE2b-256 checksum How to use checksums |
f9018064cf8f73c5c81a6192b8abdac3edfd60ea47d350363c22163b0c5b4e62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|