Skip to main content

Robust Versioning System - Git-style version control built for universal compatibility

Project description

๐Ÿš€ RVS - Robust Versioning System

Python Version Version License Keywords

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

๐Ÿ†• What's New in v2.1.1

Enhanced Worktree Support: Complete Git-compatible worktree implementation

  • Full worktree lifecycle management (add, list, remove, lock/unlock)
  • Git-compatible .rvs file structure for seamless interoperability
  • Independent HEAD, index, and working directory per worktree

Detached HEAD Operations: Comprehensive support for detached HEAD workflows

  • Checkout commits directly with --detach option
  • Create branches from detached HEAD state
  • Proper status display and commit operations in detached mode

New Git Commands: Extended command set for better Git compatibility

  • rvs show - Display commit information with multiple output formats
  • rvs diff-tree - Compare tree objects between commits
  • rvs reset - Reset HEAD, index, and working tree with --soft, --mixed, --hard modes

Improved Reliability: Enhanced error handling and cross-platform compatibility

  • Better path normalization for Windows/Linux/macOS
  • Robust index state management
  • Improved uncommitted changes detection

โœจ 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 with detached HEAD support
  • ๐Ÿ“ Staging Area - Add and commit changes with precision
  • ๐Ÿ“š Commit History - View and navigate project history
  • ๐Ÿ”„ Advanced Operations - Rebase, stash, comprehensive worktree management
  • ๐Ÿข Multi-Worktree Support - Git-compatible worktree functionality for parallel development
  • ๐ŸŽฏ Detached HEAD Operations - Full support for detached HEAD workflows
  • ๐Ÿ› ๏ธ 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
show Display commit information rvs show HEAD --name-status
diff-tree Compare tree objects rvs diff-tree --name-status -r HEAD
reset Reset HEAD, index, and working tree rvs reset --hard HEAD~1
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
rvs worktree list
rvs worktree remove ../hotfix

# Detached HEAD operations
rvs checkout --detach HEAD~2
rvs checkout -b new-feature  # Create branch from detached HEAD

# Reset operations
rvs reset --soft HEAD~1      # Reset HEAD only
rvs reset --mixed HEAD~1     # Reset HEAD and index (default)
rvs reset --hard HEAD~1      # Reset HEAD, index, and working tree

# Interactive rebase (reapply commits)
rvs rebase main

# Show commit details
rvs show HEAD --name-status  # Show files changed in commit
rvs show HEAD --stat         # Show diffstat

# 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

๐Ÿข Worktree Management

RVS provides comprehensive Git-compatible worktree functionality, allowing you to work on multiple branches simultaneously:

Creating and Managing Worktrees

# Create a new worktree for a feature branch
rvs worktree add ../feature-branch feature

# Create a worktree in detached HEAD state
rvs worktree add ../hotfix HEAD~2

# List all worktrees
rvs worktree list
# Output:
# /path/to/main/repo    abc1234 [main]
# /path/to/feature      def5678 [feature]
# /path/to/hotfix       ghi9012 (detached HEAD)

# Remove a worktree
rvs worktree remove ../feature-branch

# Lock/unlock worktrees
rvs worktree lock ../feature-branch
rvs worktree unlock ../feature-branch

Worktree Benefits

  • Parallel Development: Work on multiple features simultaneously
  • Git Compatibility: Uses the same .rvs file structure as Git worktrees
  • Independent State: Each worktree has its own HEAD, index, and working directory
  • Shared History: All worktrees share the same commit history and branches
  • Detached HEAD Support: Create worktrees in detached HEAD state for experimental work

Detached HEAD Workflows

RVS fully supports detached HEAD operations for experimental development:

# Enter detached HEAD state
rvs checkout --detach HEAD~3

# Make experimental changes
echo "experimental feature" > experiment.txt
rvs add experiment.txt
rvs commit -m "Experimental feature"

# Create a branch from detached HEAD
rvs checkout -b experiment-branch

# Or return to a branch, leaving experimental commits
rvs checkout main

๐Ÿง 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,show,diff-tree,reset,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:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and add tests
  4. Commit your changes (git commit -m 'Add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. 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


โญ 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

rvs-2.1.1.tar.gz (56.5 kB view details)

Uploaded Source

Built Distribution

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

rvs-2.1.1-py3-none-any.whl (71.8 kB view details)

Uploaded Python 3

File details

Details for the file rvs-2.1.1.tar.gz.

File metadata

  • Download URL: rvs-2.1.1.tar.gz
  • Upload date:
  • Size: 56.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rvs-2.1.1.tar.gz
Algorithm Hash digest
SHA256 227c5b68dddca4f4c44b45c1b90a9e7385705b543c60367dc3c3743219b139f6
MD5 c8d19b02d1503dddc2dd1ba4a259cd77
BLAKE2b-256 4b174d10feae6f3b3a6835ea61b10b2c9cb56d0c4e2112eb728f274dfe07749e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rvs-2.1.1.tar.gz:

Publisher: publish-to-pypi.yml on rvs-rvs/rvs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rvs-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: rvs-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 71.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rvs-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2dc1fcf88852e51d1b88ac5eeec9c4ad80b3d5f581024981712bdd2b34ac3716
MD5 c8c3eb55107562c8466c103a92086ce6
BLAKE2b-256 f8e771ed761a110a9296b89fd215ab879112f4aeacebb3ba3e22d5958806b3d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rvs-2.1.1-py3-none-any.whl:

Publisher: publish-to-pypi.yml on rvs-rvs/rvs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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