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
Metadata
Release files for oreon 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| oreon-1.0.0.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oreon-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.9 kB
Release files / oreon-1.0.0.tar.gz
| Download URL | oreon-1.0.0.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d456c66cd9f8b15f3042be064a1e5344aa363d20f8a6ea54bc18d99df416befd
|
|
BLAKE2b-256 checksum How to use checksums |
58c1af46cf69677aae6ac59e36cb5cbdd8f00792a238845d6910ebf088bafbb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / oreon-1.0.0-py3-none-any.whl
| Download URL | oreon-1.0.0-py3-none-any.whl |
|---|---|
| Size | 12.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc3757ab06ab2c86c157d9439092021de4c25605c8ae2ff4129ea8ca49dbbdca
|
|
BLAKE2b-256 checksum How to use checksums |
ae98cbb1bdd00699db73c2ddc6f75a1e7b09fe174a91e6bbaf59ba95a0670ac4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|