)]}'
{
  "commit": "06f63df8463a2c3e862bd99fe6eb5cec3ec28da2",
  "tree": "b2af52642df7ff1e602e1594624315424e4e3e48",
  "parents": [
    "53ff39320449d993443904c823b129d47c16d0a7",
    "ef4778bcba323ab38d442811f851af092760b6b5"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Jun 11 04:31:18 2026 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Jun 11 04:31:18 2026 -0700"
  },
  "message": "Merge branch \u0027ps/odb-source-loose\u0027\n\nThe loose object source has been refactored into a proper `struct\nodb_source`.\n\n* ps/odb-source-loose:\n  odb/source-loose: drop pointer to the \"files\" source\n  odb/source-loose: stub out remaining callbacks\n  odb/source-loose: wire up `write_object_stream()` callback\n  object-file: refactor writing objects to use loose source\n  odb/source-loose: wire up `write_object()` callback\n  loose: refactor object map to operate on `struct odb_source_loose`\n  odb/source-loose: wire up `freshen_object()` callback\n  odb/source-loose: drop `odb_source_loose_has_object()`\n  odb/source-loose: wire up `count_objects()` callback\n  odb/source-loose: wire up `find_abbrev_len()` callback\n  odb/source-loose: wire up `for_each_object()` callback\n  odb/source-loose: wire up `read_object_stream()` callback\n  odb/source-loose: wire up `read_object_info()` callback\n  odb/source-loose: wire up `close()` callback\n  odb/source-loose: wire up `reprepare()` callback\n  odb/source-loose: start converting to a proper `struct odb_source`\n  odb/source-loose: store pointer to \"files\" instead of generic source\n  odb/source-loose: move loose source into \"odb/\" subsystem\n",
  "tree_diff": []
}
