Geschichte (version control)
A version-control system that folds Git semantics into a queryable database — its own tagline is “Git, as a queryable database.” Written in Clojure (with ClojureScript, so it runs on both the JVM and Node.js), from the replikativ ecosystem for decentralized, queryable data. The version-control corner of developer-tooling gains a third member beside git and lore — and a lever neither of them pulls.
What it is
- Git as data. Repository objects, refs, history, and worktree state live in Datahike (a Datalog-queryable database) plus Konserve (content storage), so repo state is ordinary data you can run Datalog queries over — not just walk with plumbing commands.
- Real Git interop, no native Git. Reads and writes actual Git objects, packs, and the wire
protocols directly, without shelling out to a
gitbinary. - Workspaces. Multiple isolated worktrees that share branch names, with durable checkpoints.
- Content addressing, two ways. Text is stored as bounded line deltas; binary as content-defined chunks — the same chunking idea lore uses to keep large binaries cheap.
- Pre-1.0. The README warns on-disk and database formats may still change between releases; you may need to re-import or migrate repos as it stabilises.
The lever: queryability, not speed or asset size
The spoke’s VCS corner has been organized around storage and scale — git (content-addressed Merkle, the incumbent), lore (Rust, chunked storage for large binary assets). Geschichte keeps Git’s object model but changes what you can ask of the history: putting refs/commits/ worktree state in a Datalog store turns “search the history” from a walk into a query. That’s a different lever from the synthesis‘s speed-rewrite and large-asset threads — call it version-control as a database. It’s also the spoke’s first VCS built by wrapping, not replacing, Git’s on-disk formats: interop with real Git rather than a clean-break format like Lore’s.
Cross-links
Clojure ties it to jank (a Clojure dialect re-hosted on C++) — two Clojure-lineage tools in the spoke now, from different corners (a language runtime vs a VCS). Its content-defined chunking rhymes with lore‘s large-binary handling.
Tier
T1 — first-party replikativ repo (the project’s own README). freshness: volatile —
pre-1.0, formats still moving, claims are the project’s own and untested here.
Related
developer-tooling · git · lore · jank · replikativ · synthesis