Expand description
A library for creating, reading, and manipulating ojo
repositories.
ojo
is a toy implementation of a version control system inspired by the same ideas as
pijul
. These ideas, and eventually the implementation of ojo
,
are documented in some blog posts
. This crate itself is not so
well documented, but doing so is one of my goals.
Modules§
- resolver
- This module implements some tools that can be used to create interactive tools for resolving non-linearly-ordered graggles into linearly-ordered files.
Structs§
- Chain
Graggle - A version of a
Graggle
that has been decomposed into “chains” (for example, for prettier rendering). - Changes
- A set of
Change
s. - Diff
- Represents a diff between two
File
s. - Edge
- This struct represents a directed edge in a graggle graph.
- File
- A
File
is a special case of aGraggle
, in which there is just a linear order. - Full
Graph - A wrapper around
Graggle
implementing the [graph::Graph
] trait. - Graggle
- A graggle is like a file, except that its lines are not necessarily in a linear order (rather, they form a directed graph).
- Live
Graph - A wrapper around
Graggle
implementing the [graph::Graph
] trait. - NodeId
- A globally unique ID for identifying a node.
- Patch
- A set of changes together with some metadata (author, description, etc.) and a unique id.
- PatchId
- A global identifier for a patch.
- Repo
- This is the main interface to a
ojo
repository. - Unidentified
Patch - Like a
Patch
, but without the unique id.
Enums§
- Change
- A single change.
- Edge
Kind - The different kinds of edges.
- Error
- Line
Diff - Patch
IdError