)]}'
{
  "commit": "f2bd88a308a2754e727cb462e03102307cdfe004",
  "tree": "649bf03eceb85bb383ab05424b66d9de4a0a1e32",
  "parents": [
    "05130c6c9eed9ff7450e9067d7215032eb914c10"
  ],
  "author": {
    "name": "Patrick Steinhardt",
    "email": "ps@pks.im",
    "time": "Mon Nov 03 08:42:06 2025 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Nov 03 12:18:47 2025 -0800"
  },
  "message": "object-file: refactor freshening of objects\n\nWhen writing an object that already exists in our object database we\nskip the write and instead only update mtimes of the object, either in\nits packed or loose object format. This logic is wholly contained in\n\"object-file.c\", but that file is really only concerned with loose\nobjects. So it does not really make sense that it also contains the\nlogic to freshen a packed object.\n\nIntroduce a new `odb_freshen_object()` function that sits on the object\ndatabase level and two functions `packfile_store_freshen_object()` and\n`odb_source_loose_freshen_object()`. Like this, the format-specific\nfunctions can be part of their respective subsystems, while the backend\nagnostic function to freshen an object sits at the object database\nlayer.\n\nNote that this change also moves the logic that iterates through object\nsources from the object source layer into the object database layer.\nThis change is intentional: object sources should ideally only have to\nworry about themselves, and coordination of different sources should be\nhandled on the object database level.\n\nSigned-off-by: Patrick Steinhardt \u003cps@pks.im\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79e7ab8d2e3d0e8c64246aa90aa272b954f35fb4",
      "old_mode": 33188,
      "old_path": "object-file.c",
      "new_id": "893c32adcddbbd34c250c98d24d842cfb2046fff",
      "new_mode": 33188,
      "new_path": "object-file.c"
    },
    {
      "type": "modify",
      "old_id": "065a44bb8a019e62a34bb4b92a0528cf161773ca",
      "old_mode": 33188,
      "old_path": "object-file.h",
      "new_id": "ee5b24cec66c340b94752cbdeaebb5cc476630e8",
      "new_mode": 33188,
      "new_path": "object-file.h"
    },
    {
      "type": "modify",
      "old_id": "4c0b4fdcd54ce18242b92871209df5097b2c49ce",
      "old_mode": 33188,
      "old_path": "odb.c",
      "new_id": "17734bdaffe8e64673726b615ff3dc98649cde76",
      "new_mode": 33188,
      "new_path": "odb.c"
    },
    {
      "type": "modify",
      "old_id": "f9a3137a34aa3b2756c85c28bbe91e8f98ba9657",
      "old_mode": 33188,
      "old_path": "odb.h",
      "new_id": "2653247e0cc871793ca44324312e8c93f9ba9a9d",
      "new_mode": 33188,
      "new_path": "odb.h"
    },
    {
      "type": "modify",
      "old_id": "1ae2b2fe1eda77a57f007f78726724bd26f6a743",
      "old_mode": 33188,
      "old_path": "packfile.c",
      "new_id": "40f733dd234900662dc23d5c48906690b0046d88",
      "new_mode": 33188,
      "new_path": "packfile.c"
    },
    {
      "type": "modify",
      "old_id": "c9d0b93446b5f569aadb12f48fce8ffc6aace59d",
      "old_mode": 33188,
      "old_path": "packfile.h",
      "new_id": "58fcc88e20224b18319168d4d6efdb6e2d6a3dff",
      "new_mode": 33188,
      "new_path": "packfile.h"
    }
  ]
}
