Version control for repositories that many people, agents, CI runners and
review bots read and write at the same time, written in Rust. See
docs/design.md for the model.
Status: early prototype. Nothing here is stable.
There are no commits or branches. The working copy is always on a revision
of the current change. Commands that only read it show your edits as a
draft, and those that build on the change, such as describe or new,
record them first.
origin init # a repository with the targets `policy` and `main`
origin describe "Add retries" # say what the current change is for
origin new "Parse the config" # finish it, and start the next change on top
origin status | diff | show [<change>]
origin log [<target>] # your changes, then the target's acceptances
origin evolog <change> # every revision of a change
origin edit <change> # switch the working copy to another change
origin abandon --reason "Too slow" # give a change up, keeping it for others to see
origin converge <change> # end a change's divergence
origin index rebuild # rebuild the record index from the store
origin annotate @ ci.test --pass --inputs src Cargo.toml # a statement about a revision
origin annotate @ review --pass -m "Looks good" # with details: -m, or --payload <file|->
origin annotate @ review --withdraw -m "Spoke too soon" # take your statement of a kind back
origin annotate --on <id> flaky --neutral -m "Timeout on CI" # a statement about a statement
origin statements [<rev>] # the statements about a revision, and those about them
origin promote [<rev>] # carry results over from revisions with the same inputsChanges are named by a unique prefix of their id, or @ for the working
copy's. A revision is @, a change (for its head), or a unique prefix of
the revision's id. Your name and node key live in $ORIGIN_CONFIG_DIR, or
else origin in $XDG_CONFIG_HOME or ~/.config: set user = "<name>"
in its config.toml if $USER isn't the name you want. See
the design for the model.
just # format, lint, test, and audit dependencies
just bench # micro-benchmarks
just bench-git # origin against git, with hyperfine (docs/benchmarks.md)rustup installs the toolchain rust-toolchain.toml pins. The minimum
supported Rust version is the rust-version in Cargo.toml.