Skip to main content

Crate clayers_repo

Crate clayers_repo 

Source
Expand description

A git-like, offline-first version control system for structural XML.

Operates on content-addressed Merkle DAGs of XML Infoset nodes rather than text files. XML documents are decomposed into their constituent nodes, each content-addressed by its Exclusive C14N hash, and stored in a Merkle DAG.

§Architecture

  • Object model (object): XML Infoset nodes + versioning objects, all content-addressed via SHA-256(ExclusiveC14N).
  • Storage (store): Async traits for object store and ref store, with in-memory and optional SQLite backends.
  • Import/Export (import, export): Bidirectional conversion between XML strings and the Merkle DAG.
  • Diff (diff): Structural tree diff exploiting Merkle hashes.
  • Conflict (conflict): Divergence elements for concurrent edits.
  • Repository (repo): Porcelain API composing all components.

Re-exports§

pub use diff::FileChange;
pub use error::Error;
pub use error::Result;
pub use object::Attribute;
pub use object::Author;
pub use object::CommitObject;
pub use object::CommentObject;
pub use object::DocumentObject;
pub use object::ElementObject;
pub use object::Object;
pub use object::PIObject;
pub use object::TagObject;
pub use object::TextObject;
pub use object::TreeEntry;
pub use object::TreeObject;
pub use object::REPO_NS;
pub use repo::Repo;
pub use query::QueryStore;
pub use query::QueryMode;
pub use query::QueryResult;
pub use query::DocumentQueryResult;
pub use query::NamespaceMap;
pub use query::resolve_revspec;
pub use store::ObjectStore;
pub use store::RefStore;
pub use store::Transaction;
pub use store::memory::MemoryStore;
pub use sync::FastForwardOnly;
pub use sync::Overwrite;
pub use sync::RefConflict;
pub use sync::Reject;

Modules§

conflict
Conflict element generation, detection, and listing.
diff
Structural tree diff operating on the Merkle DAG.
error
Error types for repository operations.
export
Export pipeline: content-addressed object DAG -> XML string.
graph
Commit graph traversal and LCA finding.
hash
Hashing functions using Exclusive and Inclusive C14N via clayers-xml.
import
Import pipeline: XML string -> content-addressed object DAG.
merge
Three-way merge framework with pluggable strategies.
object
Object model for the content-addressed Merkle DAG.
query
XPath queries on repository objects.
refs
Ref path helpers and HEAD resolution.
repo
Porcelain API for repository operations.
store
Storage traits for the object store, ref store, and remote operations.
sync
Pull/push synchronization between any two ObjectStore + RefStore implementations.