# SnapVC - Simple Version Control System
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/ShreyashM17/Version-control)
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
```bash
# 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
```bash
# 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](https://github.com/ShreyashM17/Snapvc)
## 📝 License & Author
- **License**: MIT
- **Author**: Shreyash Mogaveera ([@ShreyashM17](https://github.com/ShreyashM17))
---
**Learn version control by building it! 🚀**
Raw data
{
"_id": null,
"home_page": "https://github.com/ShreyashM17/Version-control",
"name": "snapvc",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "version-control, vcs, educational, git, snapshots, cross-platform, cli, learning, development-tools",
"author": "Shreyash Mogaveera",
"author_email": "shreyashmogaveera@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/8c/09/85e9b2a10449d17a9c47c837d466fb84408f7e8242d418682562ddacd018/snapvc-1.2.0.tar.gz",
"platform": null,
"description": "# SnapVC - Simple Version Control System\n\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n[](https://github.com/ShreyashM17/Version-control)\n\nA lightweight, educational version control system with Git-like \"house\" branches, content-addressable storage, and cross-platform compatibility. Perfect for learning version control internals.\n\n## \ud83d\ude80 Quick Start\n\n```bash\n# Install\npip install snapvc\n\n# Initialize and create first snapshot\nsvcs init\necho \"Hello World\" > file.txt\nsvcs ready && svcs snapshot\n\n# Check status\nsvcs current # Current version\nsvcs snaps # Total snapshots\n```\n\n## \u2728 Key Features\n\n- **\ud83c\udfe0 House System**: Git-like branches for parallel development\n- **\ud83d\udcf8 Content-Addressable Storage**: SHA-256 hashing with automatic deduplication\n- **\ud83d\udddc\ufe0f Gzipped Storage**: Compressed snapshots for efficient disk usage\n- **\ud83c\udf0d Cross-Platform**: Windows, macOS, Linux support\n- **\ud83d\udcda Educational**: Learn version control internals hands-on\n- **\ud83d\udce6 Zero Dependencies**: Python standard library only\n\n## \ud83d\udcd6 Essential Commands\n\n| Command | Description |\n|---------|-------------|\n| `svcs init` | Initialize repository |\n| `svcs ready` | Stage files for snapshot |\n| `svcs snapshot` | Create versioned snapshot |\n| `svcs house new <name>` | Create new house (branch) |\n| `svcs house <name>` | Switch to house |\n| `svcs current` | Show current version |\n| `svcs revert <version>` | Restore to specific version |\n\n## \ud83c\udfe0 House System Example\n\n```bash\n# Create feature branch\nsvcs house new feature\necho \"new feature\" > feature.py\nsvcs ready && svcs snapshot\n\n# Switch back to main\nsvcs house main # feature.py disappears\n\n# Switch to feature\nsvcs house feature # feature.py reappears\n```\n\n## \ud83d\udd27 How It Works\n\n- **Staging**: Files prepared in \"ready\" area before snapshotting\n- **Hashing**: SHA-256 ensures integrity and enables deduplication\n- **Compression**: Gzipped storage for efficient disk usage\n- **Storage**: Content-addressable storage with automatic file sharing\n- **Houses**: Independent version histories with shared content pool\n\n```\n.svcs/\n\u251c\u2500\u2500 house.txt # Current house\n\u251c\u2500\u2500 main/ # Default house\n\u2502 \u251c\u2500\u2500 data.json # Version metadata\n\u2502 \u251c\u2500\u2500 ready/ # Staging area\n\u2502 \u2514\u2500\u2500 snapshot/ # Content by hash (gzipped)\n\u2514\u2500\u2500 feature/ # Other houses\n```\n\n## \ud83d\udca1 Perfect For\n\n- **Learning**: Understand Git-like systems internally\n- **Education**: Teaching version control concepts\n- **Small Projects**: Lightweight versioning without Git complexity\n- **Experimentation**: Try different workflows and branching strategies\n\n## \u26a0\ufe0f Requirements\n\n- Python 3.7+\n- Any OS (Windows, macOS, Linux)\n- No external dependencies\n\n## \ud83d\udcda Documentation\n\nFor detailed documentation, examples, and architecture details, visit:\n[https://github.com/ShreyashM17/SnapVC](https://github.com/ShreyashM17/Snapvc)\n\n## \ud83d\udcdd License & Author\n\n- **License**: MIT\n- **Author**: Shreyash Mogaveera ([@ShreyashM17](https://github.com/ShreyashM17))\n\n---\n\n**Learn version control by building it! \ud83d\ude80** \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A lightweight version control system with cross-platform support",
"version": "1.2.0",
"project_urls": {
"Bug Tracker": "https://github.com/ShreyashM17/Version-control/issues",
"Documentation": "https://github.com/ShreyashM17/Version-control#readme",
"Homepage": "https://github.com/ShreyashM17/Version-control",
"Source Code": "https://github.com/ShreyashM17/Version-control"
},
"split_keywords": [
"version-control",
" vcs",
" educational",
" git",
" snapshots",
" cross-platform",
" cli",
" learning",
" development-tools"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "02fb5614de1ba2898606f18c5c74010a09062547d63a0a47c667216017a289f2",
"md5": "d4839b374188edfe808a4b82b16db15b",
"sha256": "72b1a4a3c94f273c4becbd543452d13cf4786316c27255b3b1f3e45454bb5a67"
},
"downloads": -1,
"filename": "snapvc-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d4839b374188edfe808a4b82b16db15b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 9581,
"upload_time": "2025-08-13T15:27:51",
"upload_time_iso_8601": "2025-08-13T15:27:51.201351Z",
"url": "https://files.pythonhosted.org/packages/02/fb/5614de1ba2898606f18c5c74010a09062547d63a0a47c667216017a289f2/snapvc-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8c0985e9b2a10449d17a9c47c837d466fb84408f7e8242d418682562ddacd018",
"md5": "661ce989e514b261fdf10f2528e190db",
"sha256": "1fcd4305e84944c79c8a2451b947eb6c49737c184b41f7eea91015878598a176"
},
"downloads": -1,
"filename": "snapvc-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "661ce989e514b261fdf10f2528e190db",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 9879,
"upload_time": "2025-08-13T15:27:53",
"upload_time_iso_8601": "2025-08-13T15:27:53.121073Z",
"url": "https://files.pythonhosted.org/packages/8c/09/85e9b2a10449d17a9c47c837d466fb84408f7e8242d418682562ddacd018/snapvc-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 15:27:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ShreyashM17",
"github_project": "Version-control",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "snapvc"
}