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 optionalSQLitebackends. - 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
XPathqueries 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 + RefStoreimplementations.