# 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/ca/fa/b4fbebd3d96dc21c32bd98fa164d4b07b76dc6f0399438d66fc4102fb0ff/snapvc-1.1.1.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.1.1",
"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": "9bed6fbd407fc86f7576e473f94f7f813a31fc4c934f86e390d8af9d37ff2a52",
"md5": "f089b78fe160093eec23c37aca8de6ad",
"sha256": "aa17175609b8c35897522c71df889876a99b3af54f725a4d4c97a4ffbe9532bf"
},
"downloads": -1,
"filename": "snapvc-1.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f089b78fe160093eec23c37aca8de6ad",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 9484,
"upload_time": "2025-07-25T11:37:40",
"upload_time_iso_8601": "2025-07-25T11:37:40.103378Z",
"url": "https://files.pythonhosted.org/packages/9b/ed/6fbd407fc86f7576e473f94f7f813a31fc4c934f86e390d8af9d37ff2a52/snapvc-1.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cafab4fbebd3d96dc21c32bd98fa164d4b07b76dc6f0399438d66fc4102fb0ff",
"md5": "8ada31fb1ab61fca3b54954834b92173",
"sha256": "1f3075af687c62b7cbeb59ffe8f93d0055d3641882b310d802934d73423dc2b4"
},
"downloads": -1,
"filename": "snapvc-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "8ada31fb1ab61fca3b54954834b92173",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 9816,
"upload_time": "2025-07-25T11:37:41",
"upload_time_iso_8601": "2025-07-25T11:37:41.479444Z",
"url": "https://files.pythonhosted.org/packages/ca/fa/b4fbebd3d96dc21c32bd98fa164d4b07b76dc6f0399438d66fc4102fb0ff/snapvc-1.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-25 11:37:41",
"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"
}