Expand description
A sidecar log beside a project tree: every change to a path is an entry, the bytes it wrote are a content-addressed blob in the same store, and a snapshot is a signed checkpoint.
The way .git sits beside a working tree and etckeeper keeps /etc in
one, a Sidecar keeps a project’s history, but the history is an
authenticated log: a third party proves any change from the checkpoint
alone, nothing needs a working tree or a git binary, and retention is
compaction with proofs kept rather than a history rewrite. Over a
rfc9162_tiles::PackStore the whole sidecar is one file and its lock.
An entry is one JSON line, Change, and its lookup keys are
path=<path> and blob=<hex>, so a path’s history is a point lookup
and everything under a directory is a range over the sorted runs. A blob
is stored once per content hash at blob/<hex> before the entry that
names it is appended, so an entry never names a blob the store lacks.
Entries are at most the tile log’s entry length; file content goes in
the blob, not the entry.
Structs§
- Change
- One change to one path, as the log records it.
- Found
- A change with its log index and the proof the lookup returned.
- Sidecar
- The sidecar over a store.
- Synced
- What
Sidecar::sync_dirrecorded.
Enums§
- Op
- What a change did to its path.
Functions§
- sidecar_
keys - The lookup keys of a sidecar entry:
path=andblob=. An entry that is not a sidecar change has no keys.