Expand description
§panproto-vcs
Schematic version control for panproto.
This crate implements a git-like version control system for schema evolution. Schemas are content-addressed objects stored in a commit DAG, with branches, merge (via colimit/pushout), and data lifting through history.
§Architecture
- Object store:
hash,object,store,fs_store,mem_store - Refs + DAG:
refs,dag,blame,bisect - Staging + commit:
index,auto_mig,status - Merge + rewrite:
merge,rebase,cherry_pick,reset,stash - Orchestration:
repo(composes all of the above),gc
§Quick Start
use panproto_vcs::{MemStore, ObjectId, Object, Store, HeadState};
let mut store = MemStore::new();
assert_eq!(store.get_head().unwrap(), HeadState::Branch("main".into()));Re-exports§
pub use data_mig::StaleData;pub use data_mig::detect_staleness;pub use data_mig::migrate_backward;pub use data_mig::migrate_forward;pub use edit_mig::decode_edit_log;pub use edit_mig::encode_edit_log;pub use edit_mig::incremental_migrate;pub use error::VcsError;pub use expr::load_expr;pub use expr::store_expr;pub use fs_store::FsStore;pub use hash::ObjectId;pub use index::Index;pub use mem_store::MemStore;pub use object::CommitObject;pub use object::CommitObjectBuilder;pub use object::ComplementObject;pub use object::DataSetObject;pub use object::EditLogObject;pub use object::FileSchemaObject;pub use object::Object;pub use object::SchemaTreeEntry;pub use object::SchemaTreeObject;pub use object::TagObject;pub use repo::CommitOptions;pub use repo::Repository;pub use store::HeadState;pub use store::ReflogEntry;pub use store::Store;pub use tree::assemble_from_files;pub use tree::assemble_schema;pub use tree::build_schema_tree;pub use tree::build_tree_from_leaves;pub use tree::project_coproduct_protocol;pub use tree::resolve_commit_schema;pub use tree::walk_tree;
Modules§
- auto_
mig - Automatic migration derivation from schema diffs.
- bisect
- Binary search for the commit that introduced a breaking change.
- blame
- Schema element attribution: which commit introduced a vertex, edge, or constraint.
- cherry_
pick - Cherry-pick: apply a single commit’s migration to the current branch.
- dag
- DAG traversal algorithms.
- data_
mig - Data migration engine for the VCS.
- edit_
mig - Incremental migration via edit lenses.
- error
- Error types for the VCS engine.
- expr
- Content-addressed storage for expressions.
- fs_
store - Filesystem-backed store implementation.
- gat_
validate - GAT-level validation for migrations and schemas.
- gc
- Garbage collection: remove unreachable objects.
- hash
- Content-addressing via canonical serialization and blake3 hashing.
- index
- Staging area (index) for the next commit.
- mem_
store - In-memory store implementation for testing and WASM.
- merge
- Three-way schema merge with optional pushout verification.
- object
- Content-addressed objects stored in the VCS.
- rebase
- Rebase: replay commits onto a new base.
- refs
- Branch, tag, and HEAD operations.
- rename_
detect - Heuristic rename detection between schema versions.
- repo
- High-level repository orchestration (porcelain).
- reset
- Reset: move HEAD, unstage, or restore working state.
- stash
- Stash: save and restore working state.
- status
- Working state comparison (HEAD vs index vs working file).
- store
- Storage trait for the VCS object store and ref system.
- tree
- Merkle tree of per-file schemas.