)]}'
{
  "commit": "5b0456361d23bf6ffe9539dd6f323a02c69c14b4",
  "tree": "d3e19e6f426688161e7bf391bd352b16ef15d434",
  "parents": [
    "3c00e11eabd0dbbd9e9c78e23acfe83f5f065e2f"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Wed Sep 30 19:44:20 2026 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Oct 01 06:38:14 2026 -0700"
  },
  "message": "merge-ll: report an error when reading external merge results fails\n\nIf we can\u0027t read an external merge driver\u0027s output, ll_ext_merge()\nleaves the result buffer as NULL but returns a status based only on the\ndriver\u0027s exit code. So a driver which exits successfully can cause us to\nreturn LL_MERGE_OK without a result.\n\nMost callers of ll_merge() check for a NULL buffer in addition to an\nerror return, so they\u0027re fine. But rerere\u0027s merge() checks only the\nreturn value, and may write out the (incorrect) empty result as the\nrecorded resolution.\n\nLet\u0027s return LL_MERGE_ERROR when read_mmfile() fails, regardless of the\ndriver\u0027s exit status, to make it clear that the returned value is not\nvalid.\n\nOur test is a little funny; the bad case happens when reading back the\nfile happens to fail. That can happen due to system errors, but of\ncourse we want it to be deterministic. We can make that happen by\nremoving the result file. But if we configure a driver that always does\nthat, we\u0027d never record a rerere result in the first place! So we\ninstead create a driver that \"breaks\" the read only when we instruct it\nto do so.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d82836bc5c67786a80656ae4f268d4c7c1ef4bd",
      "old_mode": 33188,
      "old_path": "merge-ll.c",
      "new_id": "3b5327e7df8c6863e535e898f586bb19ab6d57b0",
      "new_mode": 33188,
      "new_path": "merge-ll.c"
    },
    {
      "type": "modify",
      "old_id": "7bb601e117ec351e173de5c0074d0d319ba5d57a",
      "old_mode": 33261,
      "old_path": "t/t4200-rerere.sh",
      "new_id": "5be3f056f5e13eeee8dc30f93a3512f2817480a6",
      "new_mode": 33261,
      "new_path": "t/t4200-rerere.sh"
    }
  ]
}
