a version control system with semantic awareness built-in undo and interactive shell
Project description
oxidize
a version control system built from scratch with semantic awareness built-in undo and an interactive shell
what it does
tracks file snapshots using content-addressable storage (sha-256) a commit dag and a staging index but unlike git it also understands your codes structure
# install
pip install oxidize
# or with extras
pip install "oxidize[semantic]"
pip install "oxidize[notebook]"
pip install "oxidize[dev]"
# usage
oxidize init
oxidize add file.py
oxidize status
oxidize commit -m "first commit"
oxidize log
# or use oxi as a shorter alias for everything
oxi init
oxi add file.py
oxi status
oxi commit -m "first commit"
oxi log
# interactive shell (no args launches the repl)
oxi
both oxidize and oxi accept the same subcommands
features
- content-addressable object store -- sha-256 zlib-compressed deduplicated
- recursive tree objects -- proper nested directory tracking
- interactive repl -- oxi launches a shell with tab completion live status bar command history
- secret scanning -- detects api keys tokens and credentials before commit
- structured data merge -- json/yaml/toml merge at the key level not text lines
- notebook-aware versioning -- cell-level diffs for ipynb files auto-strip outputs
- ai agent provenance -- track which agent/tool wrote what code
- built-in undo -- every operation is safely reversible
- semantic diffs (experimental) -- ast-aware diffs that understand function renames
how it works
every file you add gets hashed using sha-256 and stored as a blob inside .oxidize/objects/
a commit is just
- a snapshot of the file tree (with proper subtrees for nested dirs)
- metadata (author timestamp agent provenance)
- a pointer to the previous commit
files -> blobs -> tree -> commit -> commit -> commit
^
head
structure
oxidize/
objects/ blob tree commit types and serialization
storage/ content-addressable object store
index/ staging area
core/ repo context refs config
diff/ myers diff engine
merge/ structured data merge (json/yaml/toml)
notebook/ ipynb cell-level support
semantic/ ast-aware diffs via tree-sitter
security/ secret scanning
provenance/ ai agent tracking
undo/ operation journal and reversal
cli/ click commands and prompt_toolkit repl
contributing
license
mit
~ written by a guy who discovered hashing yesterday
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 pyoxidize-0.2.0.tar.gz.
File metadata
- Download URL: pyoxidize-0.2.0.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7f418efa4bafea0a70a219159bbbbd621f206e927f087865b7f79936494c8c8
|
|
| MD5 |
9789a7fa69c3abada4d9bb28fbd66760
|
|
| BLAKE2b-256 |
bcf14455a7f5f166030dbbe68dea74ebd94507de0b178eeb7ea383c070075204
|
File details
Details for the file pyoxidize-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pyoxidize-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d845d818bae666784fcacb313b3d690b5571b051cb6ea9be2fed1517361d463
|
|
| MD5 |
0c343083cb1ab2054e064c3c23ca8a4e
|
|
| BLAKE2b-256 |
ce870b56973824e3674162c67542c96ae1b5b2d260d3b18e9c00c305a37bad11
|