Git-native record storage. Each record lives under its own ref with typed fields stored as blobs in a tree.
git ledger create refs/issues --set title="Bug report" --set status=openWith an explicit ID:
git ledger create refs/issues my-id --set title="Named record"With a content-addressed ID (hashes stdin):
git ledger create refs/issues --content-hash --set title="Deduplicated record"With a custom commit message:
git ledger create refs/issues --set title="Bug" --set status=open -m "open issue: bug"git ledger read refs/issues/1Set a field:
git ledger update refs/issues/1 --set status=closedSet multiple fields at once:
git ledger update refs/issues/1 --set status=closed --set resolution=fixedDelete a field:
git ledger update refs/issues/1 --delete resolutionMix sets and deletes:
git ledger update refs/issues/1 --set status=wontfix --delete assigneegit ledger list refs/issuesgit ledger log refs/issues/1git ledger -C /path/to/repo list refs/issuesA ledger record is a Git ref (e.g. refs/issues/1).
Each field is a blob stored in the commit's tree under the field name.
create and update both advance the ref with a new commit, so the full field history is preserved in the commit log.
IDs are assigned sequentially by default (1, 2, 3, …).
Pass an explicit ID or --content-hash to override.