OXYGENHUB

Home

Andy McCall edited this page · 1 revision

Oxygen

Oxygen (oxy) is a distributed version control system written in Rust. It keeps history as a set of changes rather than a chain of snapshots, treats conflicts as data, signs everything with post-quantum signatures, and can keep a repository on storage you choose, from your laptop to your own cloud bucket.

This wiki explains how Oxygen works, with a diagram wherever one helps. Start with Getting Started to use it, or Concepts to understand it.

flowchart LR
    You([You]) -->|oxy commit| WC[Working copy]
    WC --> Repo[(Local repository<br/>changes, states, op log)]
    Repo <-->|oxy push / pull| Hub[(OxygenHub<br/>or oxy serve)]
    Repo <-->|oxy push / pull| Bucket[(Your bucket<br/>S3, GCS, Azure)]
    Repo <-->|oxy git fetch / push| Git[(A Git remote)]
    Hub --> Flow[[OxygenFlow<br/>runs your pipelines]]

What makes it different

IdeaWhat it means for youRead more
History is a set of changesIndependent work never needs a merge commit or a rebaseChanges and Dependencies
Conflicts are dataA conflicted state can be committed, pushed and fixed laterConflicts
Two identifiers per changeA stable ID you type, and a hash that makes history tamper-evidentConcepts
Everything is undoableEvery command is recorded in an operation logWorking Copy and Operation Log
Everything is signedEd25519 and ML-DSA-65 together, checked against a policy in the repositoryIdentity and Signing
Storage you chooseA directory, a hub, or your own S3, GCS or Azure bucketStrata
Works with GitImport, export, fetch from and push to GitGit Interoperability

Pages

The full specification is docs/spec.md in the repository, and the task-by-task user guide is docs/guide.md.