)]}'
{
  "commit": "583e98cd091c78e22450a000c163d98ca4bc2b20",
  "tree": "724ce22644afe79296d169d3f1b70a0a338992c6",
  "parents": [
    "f2b7511422361667175a17236f09e0a24c278931",
    "0ba59c845312f5b098b4ab27ae2f60988954d7b5"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Oct 19 12:22:53 2026 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Oct 19 12:22:54 2026 -0700"
  },
  "message": "Merge branch \u0027ps/odb-files-alternates\u0027\n\nThe odb_source API has been refactored to make alternates an\nimplementation detail of the files backend instead of managing them\nat the core object database layer.\n\n* ps/odb-files-alternates:\n  odb/source: drop `read_alternates` callback\n  odb/source-files: move alternates into the backend\n  odb/source-files: extract reading alternates\n  odb/source: make `will_destroy` an implementation detail\n  tmp-objdir: replace primary source at creation time\n  tmp-objdir: manage quarantine as an object directory\n  tmp-objdir: absorb logic to set and restore primary sources\n  odb/source-files: add the ability to have multiple object dirs\n  odb: refactor `odb_find_source()` to yield dirs\n  odb: refactor `odb_for_each_alternate()` to yield dirs\n  odb/source-files: introduce `struct odb_files_dir`\n  commit-graph: stop depending on `struct odb_source`\n  commit-graph: require resolved packfile paths for `stdin_packs`\n",
  "tree_diff": []
}
