A lightweight local version control system
Project description
Oreon
A lightweight Version Control System (VCS) written in Python.
Oreon is a command-line version control system inspired by Git. It allows you to track changes to your project, create commits, restore previous versions, and work with multiple branches—all through a simple and intuitive CLI.
Current Version: 1.0.0
Features
- Initialize repositories
- Track file additions, modifications, and deletions
- Create commits with custom messages
- Restore any previous commit
- View repository status
- Display commit history
- Create and switch between branches
- Prevent branch switching when uncommitted changes exist
- Repository information command
- SHA-256 based change detection
- Incremental storage for efficient versioning
Installation
From PyPI
pip install oreon
Verify Installation
oreon --version
Getting Started
Initialize a Repository
oreon init
Check Repository Status
oreon status
Create a Commit
oreon commit -m "Initial project setup"
View Commit History
oreon show
Restore a Previous Commit
oreon restore
View Repository Information
oreon info
Branching
Create a Branch
oreon createBranch feature
Switch Branches
oreon changeBranch feature
If uncommitted changes are detected, Oreon prevents switching branches to avoid accidental data loss.
Repository Structure
project/
│
├── .oreon/
│ ├── commits/
│ ├── latest/
│ ├── hashes.json
│ └── ...
│
├── source files...
Design
Unlike Git, Oreon uses an incremental storage approach.
The latest repository state is maintained inside .oreon/latest, while each commit stores only the changes introduced in that commit. During restoration, Oreon reconstructs the requested state by starting from the latest snapshot and reversing the required commits.
This approach keeps commits compact while allowing efficient restoration of previous versions.
Notes
- Oreon tracks files, not empty directories.
- Empty folders are not versioned, similar to Git's behavior.
- Directories are recreated automatically whenever tracked files require them.
Example Workflow
oreon init
oreon commit -m "Initial commit"
# edit files
oreon status
oreon commit -m "Implemented feature"
oreon show
oreon restore
oreon createBranch experimental
oreon changeBranch experimental
Current Limitations
The following features are planned for future releases:
- File diff support
- Merge functionality
- Branch deletion
- Ignore file support (
.oreonignore) - Remote repositories
- Tags
Why Oreon?
Oreon was built as a learning project to explore how version control systems work internally. Rather than wrapping Git, it implements its own repository format, commit storage, restoration logic, and branching mechanism from the ground up.
Contributing
Contributions, suggestions, bug reports, and feature requests are welcome. Feel free to open an issue or submit a pull request.
License
MIT License.
Author
Pranay Sehgal
GitHub: https://github.com/PranaySehgal
Project details
Release history Release notifications | RSS feed
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 oreon-1.0.0.tar.gz.
File metadata
- Download URL: oreon-1.0.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d456c66cd9f8b15f3042be064a1e5344aa363d20f8a6ea54bc18d99df416befd
|
|
| MD5 |
324e5d1408041feca8060193f4fac62c
|
|
| BLAKE2b-256 |
58c1af46cf69677aae6ac59e36cb5cbdd8f00792a238845d6910ebf088bafbb3
|
File details
Details for the file oreon-1.0.0-py3-none-any.whl.
File metadata
- Download URL: oreon-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc3757ab06ab2c86c157d9439092021de4c25605c8ae2ff4129ea8ca49dbbdca
|
|
| MD5 |
74c48d019efda3810b2047c66e2c2c06
|
|
| BLAKE2b-256 |
ae98cbb1bdd00699db73c2ddc6f75a1e7b09fe174a91e6bbaf59ba95a0670ac4
|