Robust Versioning System - Git-style version control built for universal compatibility
Project description
๐ RVS - Robust Versioning System
RVS (Robust Versioning System) brings Git-style version control to environments where traditional solutions fall short. Built entirely in Python, RVS trades execution speed for universal compatibility and deployment simplicity.
Built for Flexibility:
- โ Functions in isolated environments (containers, embedded systems, restricted networks)
- โ Zero dependency installation
- โ Predictable behavior across all Python-supported platforms
- โ Simplified deployment pipeline
Local-Centric Design: RVS concentrates on local repository management without remote connectivity features. This focused approach makes it ideal for:
- Offline development workflows
- Edge computing and IoT applications
- Educational and training environments
- Scenarios with network limitations or security constraints
- Personal project archiving and backup systems
โจ Features
- ๐ง Complete Git-like Interface - Familiar commands and workflows
- ๐ Self-Contained Architecture - Zero external dependencies required
- ๐ฆ Universal Installation - Install via pip or run directly on any Python platform
- ๐ณ Full Branching Support - Create, switch, and merge branches
- ๐ Staging Area - Add and commit changes with precision
- ๐ Commit History - View and navigate project history
- ๐ Advanced Operations - Rebase, stash, worktree management
- ๐ ๏ธ Extensible Architecture - Clean, modular codebase
- ๐ฏ Local-First Design - Focused on local operations without remote dependencies
๐ Quick Start
Installation
From PyPI (Recommended)
# Install from PyPI
pip install rvs
From Source
# Clone the repository
git clone https://github.com/rvs-rvs/rvs.git
cd rvs
# Install using pip
pip install .
# Or install in development mode
pip install -e .
Basic Usage
# Initialize a new repository
rvs init
# Add files to staging area
rvs add file.txt
rvs add .
# Create a commit
rvs commit -m "Initial commit"
# Check repository status
rvs status
# View commit history
rvs log
๐ Available Commands
RVS supports all essential local Git operations:
| Command | Description | Example |
|---|---|---|
init |
Initialize a new repository | rvs init |
add |
Add files to staging area | rvs add file.txt |
commit |
Create a commit | rvs commit -m "message" |
status |
Show repository status | rvs status |
log |
Show commit history | rvs log |
branch |
List or create branches | rvs branch feature |
checkout |
Switch branches or restore files | rvs checkout main |
merge |
Join development histories | rvs merge feature |
rebase |
Reapply commits on another base | rvs rebase main |
restore |
Restore working tree files | rvs restore file.txt |
rm |
Remove files from index/working tree | rvs rm file.txt |
ls-files |
Show files in index and working tree | rvs ls-files |
ls-tree |
List contents of tree objects | rvs ls-tree HEAD |
worktree |
Manage multiple working trees | rvs worktree add ../feature |
stash |
Stash changes temporarily | rvs stash |
๐ก Usage Examples
Basic Workflow
# Start a new project
mkdir my-project && cd my-project
rvs init
# Add some files
echo "Hello World" > hello.txt
rvs add hello.txt
rvs commit -m "Add hello.txt"
# Create and switch to a new branch
rvs branch feature
rvs checkout feature
# Make changes and commit
echo "Feature code" > feature.txt
rvs add feature.txt
rvs commit -m "Add feature"
# Switch back and merge
rvs checkout main
rvs merge feature
Advanced Operations
# Stash uncommitted changes
rvs stash
# Work with multiple worktrees
rvs worktree add ../hotfix hotfix-branch
# Interactive rebase (reapply commits)
rvs rebase main
# Restore specific files from a commit
rvs restore --source=HEAD~1 file.txt
Repository Management
# Check what's staged and unstaged
rvs status
# View detailed commit history
rvs log --oneline
# List all files tracked by RVS
rvs ls-files
# Examine tree structure
rvs ls-tree HEAD
๐๏ธ Architecture
RVS is built with a robust, modular architecture designed for reliability and portability:
rvs/
โโโ core/ # Core functionality
โ โโโ repository.py # Repository management
โ โโโ objects.py # Git object handling
โ โโโ index.py # Staging area
โ โโโ refs.py # Branch/tag references
โ โโโ hooks.py # Hook system
โโโ commands/ # Command implementations
โ โโโ add.py # Add command
โ โโโ commit.py # Commit command
โ โโโ branch.py # Branch operations
โ โโโ ... # Other commands
โโโ cli.py # Command-line interface
โโโ exceptions.py # Custom exceptions
๐ง Command Line Options
usage: rvs [-h] [--repo REPO] [--version] {command} ...
RVS - Robust Versioning System
positional arguments:
{init,add,commit,status,log,branch,checkout,merge,rebase,restore,rm,ls-files,ls-tree,worktree,stash}
Available commands
options:
-h, --help Show help message and exit
--repo REPO Repository path (default: current directory)
--version Show program's version number and exit
๐ค Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and add tests
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Setup
# Clone the repository
git clone https://github.com/rvs-rvs/rvs.git
cd rvs
# Install in development mode
pip install -e .
# Run tests (if available)
python -m pytest
# Run RVS directly
python -m rvs --help
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Inspired by Git's elegant design and powerful functionality
- Built with Python's excellent standard library
- Thanks to the open-source community for inspiration and feedback
๐ Contact
- Project: rvs-rvs/rvs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
โญ Star this repository if you find it useful! โญ
Made with โค๏ธ for robust, portable version control
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rvs-2.0.3.tar.gz.
File metadata
- Download URL: rvs-2.0.3.tar.gz
- Upload date:
- Size: 44.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d265c5be7732c239a23f062a9c6fee6db284a098281548170c3748d70db449d0
|
|
| MD5 |
6cea72318dbb43afa2f06ac4b345e404
|
|
| BLAKE2b-256 |
e618aabc7b8d2fd5706b47a67216718c082528aad0d2372db10791db329291e7
|
File details
Details for the file rvs-2.0.3-py3-none-any.whl.
File metadata
- Download URL: rvs-2.0.3-py3-none-any.whl
- Upload date:
- Size: 55.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b588b6d2da03f9d13dbfc5a954d1f199462ef8b499fc9f64842b47de16b8857c
|
|
| MD5 |
0b885270bc5a5fec4cd705749228ceec
|
|
| BLAKE2b-256 |
1f002b5dd4825b7d546e811a0a014f48fc60f6c93f5fe4bddfe43b8e69523aff
|