)]}'
{
  "commit": "810f8b203303f27543537d3ceadc90b065ed9c8f",
  "tree": "f63706afbd3fbcd4585d53a7e1c05049ac984297",
  "parents": [
    "a6c1e16b480a797a61a47616772e7254f7759053"
  ],
  "author": {
    "name": "Patrick Steinhardt",
    "email": "ps@pks.im",
    "time": "Fri Jul 17 11:32:17 2026 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Jul 18 19:03:49 2026 -0700"
  },
  "message": "object-file: move logic to write loose objects\n\nThe logic to write loose objects is split up across \"object-file.c\" and\n\"odb/source-loose.c\". This split is somewhat weird, but it is the result\nof two things:\n\n  - `force_object_loose()` used to reach into internals of how exactly\n    we write objects.\n\n  - The logic of writing objects is intertwined with potentially\n    starting a transaction.\n\nWe have refactored `force_object_loose()` over preceding commits to work\nvia generic interfaces now, so this reason doesn\u0027t exist anymore. But\nthe second reason still does, as our management of \"files\" transactions\nand their ad-hoc creation is still very messy. This area definitely\nrequires further work, and that work is indeed ongoing.\n\nThat being said, we can already move the writing logic into the \"loose\"\nbackend rather easily. All we have to do is to expose two functions that\nrelate to the transactions.\n\nExpose these two functions and move the writing logic into the \"loose\"\nbackend accordingly so that it becomes more self-contained. Note that\nthis requires us to drop a reference to `the_repository` in favor of\nusing the source\u0027s repository in `start_loose_object_common()`.\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": "b867d8d9de10af90ca8d6d2e2f88bd74629aea80",
      "old_mode": 33188,
      "old_path": "object-file.c",
      "new_id": "bdc97d7943af25b7d1f890910124a68b32565037",
      "new_mode": 33188,
      "new_path": "object-file.c"
    },
    {
      "type": "modify",
      "old_id": "31781a9c5308d8517e4cbee22c2bb20a8c559c80",
      "old_mode": 33188,
      "old_path": "object-file.h",
      "new_id": "805f2cfa289661e9a73c6bb6ad4e0a3a038e9a19",
      "new_mode": 33188,
      "new_path": "object-file.h"
    },
    {
      "type": "modify",
      "old_id": "520a30157cf0d6499ccc46da039e8d8f2561784e",
      "old_mode": 33188,
      "old_path": "odb/source-loose.c",
      "new_id": "ef0e9192777c4aee673b0e9330e5cff4ea61263c",
      "new_mode": 33188,
      "new_path": "odb/source-loose.c"
    }
  ]
}
