A git commit object.
Commits are represented as a message plus an ordered list of headers.
Preserving both the order and the verbatim content of headers is required
for SHA stability: two commits with the same logical content but different
header orderings are distinct git objects with distinct SHAs. This matters
especially for signed commits — tampering with the header order would
invalidate the gpgsig block.
Convenience accessors (tree/1, parents/1, author/1, committer/1,
gpgsig/1) extract well-known headers. Arbitrary headers (e.g. encoding,
mergetag, HG:rename) are preserved in the :headers list but have no
dedicated accessor.