)]}'
{
  "commit": "d75badf83bc3fc8e47413970874bac681eeb5bbe",
  "tree": "081e6d6ef91541664ae664acc0af7f8e7f943d01",
  "parents": [
    "2f8c3f6a5a6d6a3de205be709e1a598b9d4b0b3e",
    "83869e15fa9ef3b0ea2adbfe2fe68a309f95b856"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Apr 06 15:42:48 2026 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Apr 06 15:42:49 2026 -0700"
  },
  "message": "Merge branch \u0027ps/odb-generic-object-name-handling\u0027\n\nObject name handling (disambiguation and abbreviation) has been\nrefactored to be backend-generic, moving logic into the respective\nobject database backends.\n\n* ps/odb-generic-object-name-handling:\n  odb: introduce generic `odb_find_abbrev_len()`\n  object-file: move logic to compute packed abbreviation length\n  object-name: move logic to compute loose abbreviation length\n  object-name: simplify computing common prefixes\n  object-name: abbreviate loose object names without `disambiguate_state`\n  object-name: merge `update_candidates()` and `match_prefix()`\n  object-name: backend-generic `get_short_oid()`\n  object-name: backend-generic `repo_collect_ambiguous()`\n  object-name: extract function to parse object ID prefixes\n  object-name: move logic to iterate through packed prefixed objects\n  object-name: move logic to iterate through loose prefixed objects\n  odb: introduce `struct odb_for_each_object_options`\n  oidtree: extend iteration to allow for arbitrary return codes\n  oidtree: modernize the code a bit\n  object-file: fix sparse \u0027plain integer as NULL pointer\u0027 error\n",
  "tree_diff": []
}
