)]}'
{
  "commit": "a545103244a712fd6a96dd2020fe91c0c8f6fdce",
  "tree": "89589f27eecd38c60e27608e2ac087c049210cc3",
  "parents": [
    "05ce3ab2c6898c7694a5cc198f8b3fd931611578",
    "3e5e360888316ed1a44da69bf134bb6ec70aee1b"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Nov 24 15:46:41 2025 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Nov 24 15:46:41 2025 -0800"
  },
  "message": "Merge branch \u0027ps/object-source-loose\u0027\n\nA part of code paths that deals with loose objects has been cleaned\nup.\n\n* ps/object-source-loose:\n  object-file: refactor writing objects via a stream\n  object-file: rename `write_object_file()`\n  object-file: refactor freshening of objects\n  object-file: rename `has_loose_object()`\n  object-file: read objects via the loose object source\n  object-file: move loose object map into loose source\n  object-file: hide internals when we need to reprepare loose sources\n  object-file: move loose object cache into loose source\n  object-file: introduce `struct odb_source_loose`\n  object-file: move `fetch_if_missing`\n  odb: adjust naming to free object sources\n  odb: introduce `odb_source_new()`\n  odb: fix subtle logic to check whether an alternate is usable\n",
  "tree_diff": []
}
