Skip to main content

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

ci pypi python

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

see docs/contributing.md

license

mit

~ written by a guy who discovered hashing yesterday

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

pyoxidize-0.2.0.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

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

pyoxidize-0.2.0-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

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

Hashes for pyoxidize-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e7f418efa4bafea0a70a219159bbbbd621f206e927f087865b7f79936494c8c8
MD5 9789a7fa69c3abada4d9bb28fbd66760
BLAKE2b-256 bcf14455a7f5f166030dbbe68dea74ebd94507de0b178eeb7ea383c070075204

See more details on using hashes here.

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

Hashes for pyoxidize-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d845d818bae666784fcacb313b3d690b5571b051cb6ea9be2fed1517361d463
MD5 0c343083cb1ab2054e064c3c23ca8a4e
BLAKE2b-256 ce870b56973824e3674162c67542c96ae1b5b2d260d3b18e9c00c305a37bad11

See more details on using hashes here.

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