)]}'
{
  "commit": "2154d88f3aef51dda4cd75216dc5749bdafc8852",
  "tree": "cb4699a7ff809fa27d6c49580084822f1442b851",
  "parents": [
    "40932d0a7e35fa31b1ac237ccc77a0a346ce887d"
  ],
  "author": {
    "name": "Justin Tobler",
    "email": "jltobler@gmail.com",
    "time": "Thu Aug 20 18:49:40 2026 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Aug 20 20:28:02 2026 -0700"
  },
  "message": "odb/transaction: add transaction interface to write packfiles\n\nIn git-receive-pack(1), the incoming packfile is written to the ODB via\n`unpack()`, which spawns git-index-pack(1) or git-unpack-objects(1)\ndirectly. With pluggable object databases, an alternative backend may\nneed to handle writing packfile data differently though.\n\nIntroduce `odb_transaction_write_pack()` as a generic interface to\nhandle writing a packfile to a transaction and use the logic from\n`unpack()` as the \"files\" backend implementation. Note that when storing\nthe objects as a packfile, git-index-pack(1) also writes a \".keep\"\nlockfile next to it to prevent a concurrent repack from removing the new\npack prior to reference updates being performed. The \"files\" transaction\nbackend is responsible for managing these \".keep\" files and removes them\npost-commit once the transaction is finalized.\n\nCall sites in git-receive-pack(1) are updated accordingly.\n\nSigned-off-by: Justin Tobler \u003cjltobler@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b36946678311fe56e1ba9afe1b41e87bca752f93",
      "old_mode": 33188,
      "old_path": "builtin/receive-pack.c",
      "new_id": "e6e54ba55f7a8c48a0d261dc22095cb16222e093",
      "new_mode": 33188,
      "new_path": "builtin/receive-pack.c"
    },
    {
      "type": "modify",
      "old_id": "db63587f6d756436727d9ab90faaf008dac96eba",
      "old_mode": 33188,
      "old_path": "object-file.c",
      "new_id": "265c5f7a3cc0bd184cc816e5077ddff1db11282b",
      "new_mode": 33188,
      "new_path": "object-file.c"
    },
    {
      "type": "modify",
      "old_id": "9e9a98277872d8ce73a5815566167f2f9e44a1a8",
      "old_mode": 33188,
      "old_path": "odb/transaction.c",
      "new_id": "c9144e6cd6cca3e9345924c8e12abb5943260998",
      "new_mode": 33188,
      "new_path": "odb/transaction.c"
    },
    {
      "type": "modify",
      "old_id": "6ed39b3d0e9fb171e543dbece93a0d15e1aa619b",
      "old_mode": 33188,
      "old_path": "odb/transaction.h",
      "new_id": "8cb06c11914a5e226de84fb36cd02432fb8c5325",
      "new_mode": 33188,
      "new_path": "odb/transaction.h"
    }
  ]
}
