Ids that match real git
Blobs are framed the way git frames them —
blob <length>\0<content> — then
hashed with SHA-1, so object_id("blobs", …)
equals what git hash-object gives you.
Trees and commits hash their serialized body directly. Change nothing
about the framing and every stack agrees on every id.
import silt
// git-canonical SHA-1 — matches `git hash-object`
let assert Ok(sha) =
silt.object_id("blobs", "{\"content\":\"hello\"}")
// -> "b6fc4c62…5db5a1b0"