)]}'
{
  "log": [
    {
      "commit": "94f057755b7941b321fd11fec1b2e3ca5313a4e0",
      "tree": "588b21de7ba1911df614a253a50c36e2899794a0",
      "parents": [
        "8ba07ec1118e059f19ff77ce1336794a116404b9"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Sun Apr 19 19:01:39 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Sun Apr 19 19:01:39 2026 -0700"
      },
      "message": "Git 2.54\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "8ba07ec1118e059f19ff77ce1336794a116404b9",
      "tree": "8b553ab431141fbe805b59f875c897d8fd7177a3",
      "parents": [
        "e8955061076952cc5eab0300424fc48b601fe12d",
        "5f53a3662a2aaebe36f8751807be728f41f65907"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Sun Apr 19 18:59:09 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Sun Apr 19 18:59:09 2026 -0700"
      },
      "message": "Merge tag \u0027l10n-2.54.0-v2\u0027 of https://github.com/git-l10n/git-po\n\nl10n-2.54.0-v2\n\n* tag \u0027l10n-2.54.0-v2\u0027 of https://github.com/git-l10n/git-po:\n  l10n: bg.po: Updated Bulgarian translation (6226t)\n  l10n: zh_TW: update translation for Git 2.54\n  l10n: Update Catalan Translation\n  l10n: ga.po: update for Git 2.54\n  l10n: fr: v2.54.0\n  l10n: tr: Update Turkish translations\n  l10n: sv.po: Update Swedish translation\n  l10n: sv.po: correct various translations\n  l10n: zh_CN: updated translation for 2.54\n  l10n: bg.po: Updated Bulgarian translation (6226t)\n  l10n: zh_CN: post-2.53 code review\n  l10n: document AI and PO helper in po/README\n  l10n: docs: add review instructions in AGENTS.md\n  l10n: docs: add translation instructions in AGENTS.md\n  l10n: docs: add update PO instructions in AGENTS.md\n  l10n: docs: add AGENTS.md with update POT instructions\n  l10n: add .gitattributes to simplify location filtering\n  l10n: fix \u0027zh_TW.po\u0027 \u0027Applying patch\u0027\n"
    },
    {
      "commit": "5f53a3662a2aaebe36f8751807be728f41f65907",
      "tree": "5393c5b699673d129be1f343fa96df9cf455d5d2",
      "parents": [
        "033775a96786fb45a39b4eebd4d8702fbd1dc4cb",
        "4a1b536279138a5032ea17e6013d4148d548d5b3"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Mon Apr 20 07:37:21 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Mon Apr 20 07:37:21 2026 +0800"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:alshopov/git-po\n\n* \u0027master\u0027 of github.com:alshopov/git-po:\n  l10n: bg.po: Updated Bulgarian translation (6226t)\n"
    },
    {
      "commit": "4a1b536279138a5032ea17e6013d4148d548d5b3",
      "tree": "4ff4602bbf13866ae708062bedc9c45b329eb9d8",
      "parents": [
        "d0ab4e83765b7c68a88c1d2e8acb58dac392cf99"
      ],
      "author": {
        "name": "Alexander Shopov",
        "email": "ash@kambanaria.org",
        "time": "Sun Apr 19 16:07:40 2026 +0200"
      },
      "committer": {
        "name": "Alexander Shopov",
        "email": "ash@kambanaria.org",
        "time": "Sun Apr 19 16:24:08 2026 +0200"
      },
      "message": "l10n: bg.po: Updated Bulgarian translation (6226t)\n\nImprovements prompted by AI-assisted review\n\nSigned-off-by: Alexander Shopov \u003cash@kambanaria.org\u003e\n"
    },
    {
      "commit": "033775a96786fb45a39b4eebd4d8702fbd1dc4cb",
      "tree": "07b7c80c68293bc2bc8903d326a0b91e8037dea4",
      "parents": [
        "d0ab4e83765b7c68a88c1d2e8acb58dac392cf99"
      ],
      "author": {
        "name": "Yi-Jyun Pan",
        "email": "pan93412@gmail.com",
        "time": "Sun Apr 19 21:52:38 2026 +0800"
      },
      "committer": {
        "name": "Yi-Jyun Pan",
        "email": "pan93412@gmail.com",
        "time": "Sun Apr 19 21:54:13 2026 +0800"
      },
      "message": "l10n: zh_TW: update translation for Git 2.54\n\nSigned-off-by: Yi-Jyun Pan \u003cpan93412@gmail.com\u003e\n"
    },
    {
      "commit": "d0ab4e83765b7c68a88c1d2e8acb58dac392cf99",
      "tree": "ec01edcc839cffa5c8e3205adc80c09dab0b715f",
      "parents": [
        "baff83b84a5e7f9ff93b36ff47e8d2f1b8236861",
        "6141e01a60518d590b2110b6aa3fc1a22c0dde18"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 18:41:17 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 18:41:17 2026 +0800"
      },
      "message": "Merge branch \u0027fr_v2.54.0\u0027 of github.com:jnavila/git\n\n* \u0027fr_v2.54.0\u0027 of github.com:jnavila/git:\n  l10n: fr: v2.54.0\n"
    },
    {
      "commit": "baff83b84a5e7f9ff93b36ff47e8d2f1b8236861",
      "tree": "1efa8874cb5f65a65dcc470052870b88b61f1f58",
      "parents": [
        "dfdf21eb4ec8804de74c4d8e8dc2d65b72e387d0",
        "93cdd23a2dba563778ad5c1b18f5c18ade7b15a0"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 18:26:22 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 18:26:22 2026 +0800"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:alshopov/git-po\n\n* \u0027master\u0027 of github.com:alshopov/git-po:\n  l10n: bg.po: Updated Bulgarian translation (6226t)\n"
    },
    {
      "commit": "dfdf21eb4ec8804de74c4d8e8dc2d65b72e387d0",
      "tree": "83dc8681a3982f7dcb08e23c6d5071cfa908c709",
      "parents": [
        "5eede15c4fb6836ea64d9eb54d2594ec254322a9"
      ],
      "author": {
        "name": "Mikel Forcada",
        "email": "mikel.forcada@gmail.com",
        "time": "Fri Apr 10 21:55:34 2026 +0200"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 18:24:02 2026 +0800"
      },
      "message": "l10n: Update Catalan Translation\n\nSigned-off-by: Mikel Forcada \u003cmikel.forcada@gmail.com\u003e\nSigned-off-by: Jiang Xin \u003cworldhello.net@gmail.com\u003e\n"
    },
    {
      "commit": "5eede15c4fb6836ea64d9eb54d2594ec254322a9",
      "tree": "bb1522d736ed9b299e33799d7c9b8839d4879259",
      "parents": [
        "20a3c510b301aef2b2c3c57ecfa67d68ed9af0f4"
      ],
      "author": {
        "name": "Aindriú Mac Giolla Eoin",
        "email": "aindriu80@gmail.com",
        "time": "Thu Apr 09 15:50:17 2026 +0100"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 17:26:40 2026 +0800"
      },
      "message": "l10n: ga.po: update for Git 2.54\n\nSigned-off-by: Aindriú Mac Giolla Eoin \u003caindriu80@gmail.com\u003e\n"
    },
    {
      "commit": "20a3c510b301aef2b2c3c57ecfa67d68ed9af0f4",
      "tree": "540999f39ea8e9dc3ba5b920b7d822c7d0f6e7b3",
      "parents": [
        "70637d719a492349caf72ae97f4966bfeeb2f569",
        "7cf6c72650a3d3da51ca4020372665e666636313"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 16:54:14 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 16:54:14 2026 +0800"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:nafmo/git-l10n-sv\n\n* \u0027master\u0027 of github.com:nafmo/git-l10n-sv:\n  l10n: sv.po: Update Swedish translation\n  l10n: sv.po: correct various translations\n"
    },
    {
      "commit": "70637d719a492349caf72ae97f4966bfeeb2f569",
      "tree": "03388405860fb2234e4f165e688e3ce9baf5b5eb",
      "parents": [
        "9cc97ccc6838f45a7a74fd3d2eeb31e2de3c3648",
        "65452e2fc03fcf4f0ec7cf701d951041388dc306"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 16:50:58 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 16:50:58 2026 +0800"
      },
      "message": "Merge branch \u0027apply-patch-reject\u0027 of github.com:A4-Tacks/git-po\n\n* \u0027apply-patch-reject\u0027 of github.com:A4-Tacks/git-po:\n  l10n: fix \u0027zh_TW.po\u0027 \u0027Applying patch\u0027\n"
    },
    {
      "commit": "9cc97ccc6838f45a7a74fd3d2eeb31e2de3c3648",
      "tree": "4ad8aa083280c7d439f45d584fc6661f83c5f8fd",
      "parents": [
        "02f5d97510c703313a991678c5f7abe3197d1073",
        "2d0a97577cf83cf5ae849ee40bbf0be0e3c8db9e"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 11:13:45 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 11:13:45 2026 +0800"
      },
      "message": "Merge branch \u0027tr-l10n\u0027 of github.com:bitigchi/git-po\n\n* \u0027tr-l10n\u0027 of github.com:bitigchi/git-po:\n  l10n: tr: Update Turkish translations\n"
    },
    {
      "commit": "02f5d97510c703313a991678c5f7abe3197d1073",
      "tree": "719f558148ced241c1deb4aaa81d821d6a947975",
      "parents": [
        "d14e8c828c220dff5d4c54ad192867a978ba2678",
        "2a39e8ee72833ac21a4dc45df0b119c24ecfee3d"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 11:01:51 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Sun Apr 19 11:01:51 2026 +0800"
      },
      "message": "Merge branch \u0027zh_CN-2.54\u0027 of github.com:jiangxin/git\n\n* \u0027zh_CN-2.54\u0027 of github.com:jiangxin/git:\n  l10n: zh_CN: updated translation for 2.54\n"
    },
    {
      "commit": "6141e01a60518d590b2110b6aa3fc1a22c0dde18",
      "tree": "141746fc25cae091e150a5eec06e11216fe93318",
      "parents": [
        "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc"
      ],
      "author": {
        "name": "Jean-Noël Avila",
        "email": "jn.avila@free.fr",
        "time": "Sat Apr 18 12:05:05 2026 +0800"
      },
      "committer": {
        "name": "Jean-Noël Avila",
        "email": "jn.avila@free.fr",
        "time": "Sat Apr 18 12:23:03 2026 +0800"
      },
      "message": "l10n: fr: v2.54.0\n\nSigned-off-by: Jean-Noël Avila \u003cjn.avila@free.fr\u003e\n"
    },
    {
      "commit": "e8955061076952cc5eab0300424fc48b601fe12d",
      "tree": "c51af48af95e5829dfc160cb8b697c3f611adc69",
      "parents": [
        "60e8015d233a2431e75dcb832dcd5be5368ae452"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:31 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:01 2026 -0700"
      },
      "message": "doc: fix grammar errors in submodule description\n\n6cc6d1b4c699 (Documentation: update add --force option + ignore\u003dall\nconfig, 2026-02-06) added text describing both the ignore\u003dnone and\nignore\u003dall behaviors.  The former had minor formatting and grammatical\nerrors, while the latter was a bit garbled.  I have tried to tweak the\nwording on the latter to make it read as I think was intended, and fixed\nthe minor grammatical issues with both as well.\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "60e8015d233a2431e75dcb832dcd5be5368ae452",
      "tree": "7e552a543594341345a976592057010bf773dfbb",
      "parents": [
        "31f23c958be7f727ece4ce0db8b7ddbf1dfb3f79"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:30 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:01 2026 -0700"
      },
      "message": "doc: fix singular/plural mismatch in git-rerere\n\nconflict -\u003e conflicts\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "31f23c958be7f727ece4ce0db8b7ddbf1dfb3f79",
      "tree": "57a3defcfcaf3a29b46d735f1253a3a14a539612",
      "parents": [
        "8ecf2a192acd73112341a7b03a3803635c4f49ae"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:29 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:01 2026 -0700"
      },
      "message": "doc: fix plural agreement in pack.preferBitmapTips\n\nhierarchies -\u003e hierarchy\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "8ecf2a192acd73112341a7b03a3803635c4f49ae",
      "tree": "41ad1d8951a955b4b934849e826f68b02220aa20",
      "parents": [
        "39901e77d4543bdc30d6967ea0d162886b7d0fb0"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:28 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:01 2026 -0700"
      },
      "message": "doc: fix self-referential config in sendemail.smtpSSLClientKey\n\na8215a205141 (send-email: add client certificate options, 2026-03-02)\nadded documentation for sendemail.smtpSSLClientKey that says it works\n\"in conjunction with `sendemail.smtpSSLClientKey`\" -- referring to\nitself.  It appears that `sendemail.smtpSSLClientCert` was the intended\nreference; fix it.\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "39901e77d4543bdc30d6967ea0d162886b7d0fb0",
      "tree": "6278211909a91fa907fba42c9f099519eb40bc71",
      "parents": [
        "96a659da8a211a2eb8246f225db3c50a15017e68"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:27 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:00 2026 -0700"
      },
      "message": "CodingGuidelines: fix subject-verb agreement\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "96a659da8a211a2eb8246f225db3c50a15017e68",
      "tree": "ab10b48bbcc932297704c4ebebce5baa639d3b12",
      "parents": [
        "e60b8306f1fe4bdce1ad66652563565b60b37c00"
      ],
      "author": {
        "name": "Elijah Newren",
        "email": "newren@gmail.com",
        "time": "Thu Apr 16 23:36:26 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 21:22:00 2026 -0700"
      },
      "message": "RelNotes/2.54.0: fix typos and grammar\n\nFix various issues in the release notes -- missing/wrong articles, typo,\nindentation, quote consistency, and wording improvement or corrections.\n\nOther than the indentation fix for \"The way combined list-object filter\noptions...\", this patch is much easier to view with --color-words.\n\nSigned-off-by: Elijah Newren \u003cnewren@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "2d0a97577cf83cf5ae849ee40bbf0be0e3c8db9e",
      "tree": "c120b873c05e37863e3eb665030cca220a563956",
      "parents": [
        "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc"
      ],
      "author": {
        "name": "Emir SARI",
        "email": "emir_sari@icloud.com",
        "time": "Sat Apr 04 22:09:05 2026 +0300"
      },
      "committer": {
        "name": "Emir SARI",
        "email": "emir_sari@icloud.com",
        "time": "Fri Apr 17 05:26:17 2026 +0300"
      },
      "message": "l10n: tr: Update Turkish translations\n\nSigned-off-by: Emir SARI \u003cemir_sari@icloud.com\u003e\n"
    },
    {
      "commit": "e60b8306f1fe4bdce1ad66652563565b60b37c00",
      "tree": "a216aef2410e952dd30316dd7b77253f13fbea2c",
      "parents": [
        "f65aba1e87db64413b6d1ed5ae5a45b5a84a0997",
        "a12382f99488b8cea82f59a310084e43ff84e99b"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 15:43:26 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 15:43:26 2026 -0700"
      },
      "message": "Merge branch \u0027jk/midx-write-v1-by-default\u0027\n\nAs writing version 2 MIDX files by default breaks older versions of\nGit and its reimplementations, use V2 only when necessary.\n\n* jk/midx-write-v1-by-default:\n  MIDX: revert the default version to v1\n"
    },
    {
      "commit": "a12382f99488b8cea82f59a310084e43ff84e99b",
      "tree": "8c9d93f79e4ea28c7b5c6bc677365ed6b8dc3b57",
      "parents": [
        "105a22cf692a08604bc294ec2c164528889837b0"
      ],
      "author": {
        "name": "Jeff King",
        "email": "peff@peff.net",
        "time": "Thu Apr 16 16:06:59 2026 -0400"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 16 13:45:53 2026 -0700"
      },
      "message": "MIDX: revert the default version to v1\n\nWe introduced midx version 2 in b2ec8e90c2 (midx: do not require packs\nto be sorted in lexicographic order, 2026-02-24) and now write it by\ndefault. The rationale was that older versions should ignore the v2 midx\nand fall back to using the packs (just like we do for other midx\nerrors). Unfortunately this is not the case, as we have a hard die()\nwhen we see an unknown midx version.\n\nAs a result, writing a midx with Git 2.54-rc2 puts the repository into a\nstate that is unusable with Git 2.53. And this midx write may happen\nbehind the scenes as part of normal operations, like fetch.\n\nLet\u0027s switch back to writing v1 by default to avoid regressing the case\nwhere multiple versions of Git are used on the same repository.\n\nThere is one gotcha, though: the v2 format is required for some new\nfeatures, like midx compaction, and running \"git multi-pack-index\ncompact\" will complain when asked to write a v1 index. The user must set\nmidx.version to \"2\" to make the feature work.\n\nSo instead of always using v1, we\u0027ll base the default on whether the\nrequested feature requires v2. That does mean that running midx\ncompaction will create a repository that can\u0027t be read by older versions\nof Git. But we never do that by default; only people experimenting with\nthe new feature will be affected.\n\nWe have to adjust the test expectation in t5319, since it will now\ngenerate v1 files. And our \"auto-select v2\" is covered by the tests in\nt5335, which continue to check that compaction works without having to\nset midx.version manually (and also explicitly check that asking for v1\nwith compaction reports the problem).\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "7cf6c72650a3d3da51ca4020372665e666636313",
      "tree": "21df36a02f3356288872115d071c886d47f826b5",
      "parents": [
        "362656a42599ec371b7d1c90e61a1d875ac9bc1e"
      ],
      "author": {
        "name": "Peter Krefting",
        "email": "peter@softwolves.pp.se",
        "time": "Thu Apr 16 12:30:54 2026 +0100"
      },
      "committer": {
        "name": "Peter Krefting",
        "email": "peter@softwolves.pp.se",
        "time": "Thu Apr 16 12:30:54 2026 +0100"
      },
      "message": "l10n: sv.po: Update Swedish translation\n\nSigned-off-by: Peter Krefting \u003cpeter@softwolves.pp.se\u003e\n"
    },
    {
      "commit": "362656a42599ec371b7d1c90e61a1d875ac9bc1e",
      "tree": "3fdd8180f65fcc45eff99c30d444e8cf2b20d24e",
      "parents": [
        "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc"
      ],
      "author": {
        "name": "Stefan Björnelund",
        "email": "stefan.bjornelund.gnome@gmail.com",
        "time": "Fri Feb 13 21:14:23 2026 +0100"
      },
      "committer": {
        "name": "Peter Krefting",
        "email": "peter@softwolves.pp.se",
        "time": "Thu Apr 16 12:24:58 2026 +0100"
      },
      "message": "l10n: sv.po: correct various translations\n\n- correct translation of pathspec msgs\n  Corrects cases where the “pathspec” is translated as if it was a\n  path\n- correct translation of refspec msgs\n  Corrects cases where the “refspec” were not consistently translated\n- correct translation of credential msgs\n  Corrects cases where the “credential” were not correctly translated\n\nSigned-off-by: Stefan Björnelund \u003cstefan.bjornelund.gnome@gmail.com\u003e\nModified-by: Peter Krefting \u003cpeter@softwolves.pp.se\u003e\n"
    },
    {
      "commit": "2a39e8ee72833ac21a4dc45df0b119c24ecfee3d",
      "tree": "719f558148ced241c1deb4aaa81d821d6a947975",
      "parents": [
        "d14e8c828c220dff5d4c54ad192867a978ba2678"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Tue Mar 31 10:17:35 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Thu Apr 16 11:37:57 2026 +0800"
      },
      "message": "l10n: zh_CN: updated translation for 2.54\n\nTranslate 198 previously fuzzy or untranslated messages, bringing the\ntotal number of translated messages to 6226.\n\nReviewed-by: 依云 \u003clilydjwg@gmail.com\u003e\nReviewed-by: Fangyi Zhou \u003cme@fangyi.io\u003e\nSigned-off-by: Jiang Xin \u003cworldhello.net@gmail.com\u003e\n"
    },
    {
      "commit": "f65aba1e87db64413b6d1ed5ae5a45b5a84a0997",
      "tree": "b7a0d5cdc9e4675247619d8185632be6e3bd44c6",
      "parents": [
        "9f223ef1c026d91c7ac68cc0211bde255dda6199"
      ],
      "author": {
        "name": "Johannes Schindelin",
        "email": "johannes.schindelin@gmx.de",
        "time": "Mon Apr 13 16:24:17 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 15 14:31:40 2026 -0700"
      },
      "message": "codeql: bump actions/cache from 4 to 5\n\nBumps [actions/cache](https://github.com/actions/cache) from 4 to 5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v5)\n\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n\nOriginally-authored-by: dependabot[bot] \u003csupport@github.com\u003e\nSigned-off-by: Johannes Schindelin \u003cjohannes.schindelin@gmx.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "93cdd23a2dba563778ad5c1b18f5c18ade7b15a0",
      "tree": "72def6a0b0e665678979e23e0715989d1e8243d1",
      "parents": [
        "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc"
      ],
      "author": {
        "name": "Alexander Shopov",
        "email": "ash@kambanaria.org",
        "time": "Tue Apr 07 09:32:08 2026 +0200"
      },
      "committer": {
        "name": "Alexander Shopov",
        "email": "ash@kambanaria.org",
        "time": "Wed Apr 15 21:50:49 2026 +0200"
      },
      "message": "l10n: bg.po: Updated Bulgarian translation (6226t)\n\nSigned-off-by: Alexander Shopov \u003cash@kambanaria.org\u003e\n"
    },
    {
      "commit": "9f223ef1c026d91c7ac68cc0211bde255dda6199",
      "tree": "c50ad7f4f9a129493f9a4697d8d2d0d569710880",
      "parents": [
        "9e8f4e9c04e3efa494e78b710e0c5f6cc77a0a5e"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 14 06:22:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 14 06:22:50 2026 -0700"
      },
      "message": "Git 2.54-rc2\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "9e8f4e9c04e3efa494e78b710e0c5f6cc77a0a5e",
      "tree": "a0dcf48c210bec7b12e3c713b2146adac8be5f19",
      "parents": [
        "7a5d03c93c71dd6bbf607f5d07eda665e3826282"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:45 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:58 2026 -0700"
      },
      "message": "Hopefully the final tweak before -rc2\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "7a5d03c93c71dd6bbf607f5d07eda665e3826282",
      "tree": "17b39bb2a1ea7988b1fbc5f1dcd08139466a2661",
      "parents": [
        "ec091e07d1bf34b72188ff30be91ff4e9e0417f4",
        "4bdb17e3a8767195cc0540a6336bfd22d4b6445a"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "message": "Merge branch \u0027jc/ci-github-actions-use-checkout-v5\u0027\n\nCI dependency updates.\n\n* jc/ci-github-actions-use-checkout-v5:\n  CI: bump actions/checkout from 4 to 5 for rust-analysis job\n"
    },
    {
      "commit": "ec091e07d1bf34b72188ff30be91ff4e9e0417f4",
      "tree": "b90e26b1396ff0be7e0b3b1b60ff10b5463cc86b",
      "parents": [
        "b2b627bd52a7186d615f4b42f900206e6822ee7d",
        "a65cbd87eaebe1bb7f69b41332dd85b72cdea440"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "message": "Merge branch \u0027jk/doc-markup-sub-list-indentation\u0027\n\nDoc mark-up update for entries in the glossary with bulleted lists.\n\n* jk/doc-markup-sub-list-indentation:\n  gitglossary: fix indentation of sub-lists\n"
    },
    {
      "commit": "b2b627bd52a7186d615f4b42f900206e6822ee7d",
      "tree": "0f217ec10c9fc862f4bc86c4d952624185f7ed3f",
      "parents": [
        "8c9303b1ffae5b745d1b0a1f98330cf7944d8db0",
        "e6b3f37b753b7691f6a57f45fe9fade2b7496d8d"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 13:54:57 2026 -0700"
      },
      "message": "Merge branch \u0027kh/doc-am-xref\u0027\n\nDoc update.\n\n* kh/doc-am-xref:\n  doc: am: correct to full --no-message-id\n  doc: am: revert Message-ID trailer claim\n"
    },
    {
      "commit": "a65cbd87eaebe1bb7f69b41332dd85b72cdea440",
      "tree": "74238b496931eb9687942fd3106d8ec22b18a3e6",
      "parents": [
        "67ad42147a7acc2af6074753ebd03d904476118f"
      ],
      "author": {
        "name": "Jeff King",
        "email": "peff@peff.net",
        "time": "Sat Apr 11 17:55:18 2026 -0400"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 11:50:06 2026 -0700"
      },
      "message": "gitglossary: fix indentation of sub-lists\n\nThe glossary entry is a list of terms and their definitions, so\nmulti-paragraph definitions need \"+\" continuation lines to indicate\nthat they are part of a single entry.\n\nWhen an entry contains a sub-list (say, a bulleted list), the final \"+\"\nmay become ambiguous: is it connecting the next paragraph to the final\nentry of the sub-list, or to the original list of definition paragraphs?\n\nAsciidoc generally connects it to the former, even when we mean the\nlatter, and you end up with the next paragraph indented incorrectly,\nlike this:\n\n  glob\n    ...defines glob...\n\n    Two consecutive asterisks (\"**\") in patterns matched\n    against full pathname may have special meaning:\n\n    - ...some special meaning of **...\n\n    - ...another special meaning of **...\n\n    - Other consecutive asterisks are considered invalid.\n\n      Glob magic is incompatible with literal magic.\n\nThat final \"Glob magic is incompatible\" paragraph is in the wrong spot.\nIt should be at the same level as \"Two consecutive asterisks\", as it is\nnot part of the final \"Other consecutive asterisks\" bullet point.\n\nThe same problem appears in several other spots in the glossary.\n\nUsually we\u0027d fix this by using \"--\" markers, which put the sub-list into\nits own block. But there\u0027s a catch: in some of these spots we are\nalready in an open block, and nesting open blocks is a problem. It seems\nto work for me using Asciidoc 10.2.1, but Asciidoctor 2.0.26 makes a\nmess of it (our intent to open a new block seems to close the old one).\n\nFortunately there\u0027s a work-around: when using a \"+\" list-continuation,\nthe number of empty lines above the continuation indicates which level\nof parent list to continue. So by adding an empty line after our\nunordered list (before the \"+\"), we should be able to continue the\ndefinition list item.\n\nBut asciidoc being asciidoc, of course that is not the end of the story.\nThat technique works fine for the \"glob\" and \"attr\" lists in this patch,\nbut under the \"refs\" item it works for only 1 of the 2 lists! I can\u0027t\nfigure out why, and this may be an asciidoctor bug. But we can work\naround it by using \"--\" open-block markers here, since we\u0027re not\nalready in an open block.\n\nSo using the extra blank line for the first two instances, and \"--\"\nmarkers for the second two, this patch produces identical output from\n\"doc-diff HEAD^ HEAD\" for both --asciidoctor and --asciidoc modes.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "4bdb17e3a8767195cc0540a6336bfd22d4b6445a",
      "tree": "fb0ba343720717756c2b7c0c4884a70f722ec4fe",
      "parents": [
        "67ad42147a7acc2af6074753ebd03d904476118f"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 11:24:44 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 11:35:31 2026 -0700"
      },
      "message": "CI: bump actions/checkout from 4 to 5 for rust-analysis job\n\nGitHub Actions started complaining about use of Node.js 20 and I was\nwondering why only one job uses actions/checkout@v4, while everybody\nelse already uses actions/checkout@v5.\n\nIt turns out that it is caused by a semantic mismerge between\ne75cd059 (ci: check formatting of our Rust code, 2025-10-15) that\nadded a new use of actions/checkout@v4 that happened very close to\nanother change 63541ed9 (build(deps): bump actions/checkout from 4\nto 5, 2025-10-16) that updated all uses of actions/checkout@v4 to\nuse vactions/checkout@v5.\n\nUpdate the leftover and the last use of actions/checkout@v4 to use\nactions/checkout@v5 to help ourselves to move away from Node.js 20.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "e6b3f37b753b7691f6a57f45fe9fade2b7496d8d",
      "tree": "25762b381ca80169f808db075e86fb67d6782a04",
      "parents": [
        "444e423f81087e71d396ba11c6734e66a40206cb"
      ],
      "author": {
        "name": "Kristoffer Haugsbakk",
        "email": "code@khaugsbakk.name",
        "time": "Sat Apr 11 22:20:10 2026 +0200"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 08:26:54 2026 -0700"
      },
      "message": "doc: am: correct to full --no-message-id\n\nSigned-off-by: Kristoffer Haugsbakk \u003ccode@khaugsbakk.name\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "444e423f81087e71d396ba11c6734e66a40206cb",
      "tree": "028f5f9a337b8d76673d595dac6b0882e56f9b7c",
      "parents": [
        "b10e0cb1f391a4466f8d7c4b2550a8b89fda3573"
      ],
      "author": {
        "name": "Kristoffer Haugsbakk",
        "email": "code@khaugsbakk.name",
        "time": "Sat Apr 11 22:15:50 2026 +0200"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 13 08:26:43 2026 -0700"
      },
      "message": "doc: am: revert Message-ID trailer claim\n\nI claimed in 3c18135b (doc: am: say that --message-id adds a trailer,\n2026-02-09) that `git am --message-id` adds a Git trailer. But that\nisn’t the case; for the case of a commit message with a subject, body,\nand no trailer block:\n\n    \u003csubject\u003e\n\n    \u003cparagrah\u003e\n\nIt just appends the line right after `paragraph`:\n\n    \u003csubject\u003e\n\n    \u003cparagraph\u003e\n    Message-ID: \u003cmessage-id_trailer.323@msgid.xyz\u003e\n\nIt does work for two other cases though, namely subject-only and with an\nexisting trailer block.\n\nThis is at best an inconsistency and arguably a bug, but we’re at the\ntrailing end of the release cycle now. So reverting the doc is safer\nthan making msg-id act as a trailer, for now.\n\nRevert this hunk from commit 3c18135b except the only useful\nchange (“Also use inline-verbatim for `Message-ID`”).\n\nSigned-off-by: Kristoffer Haugsbakk \u003ccode@khaugsbakk.name\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "8c9303b1ffae5b745d1b0a1f98330cf7944d8db0",
      "tree": "9e8b691859d552676322f470b06533225e2347e9",
      "parents": [
        "cd412a49627774a14b3e49237109a77bd3ea70c0",
        "bfedc73f86c3f820b51a16f6875b6235f9ccb76c"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 16:47:35 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 16:47:35 2026 -0700"
      },
      "message": "Merge branch \u0027jc/no-writev-does-not-work\u0027\n\nWe used writev() in limited code paths and supplied emulation for\nplatforms without working writev(), but the emulation was too\nfaithful to the spec to make the result useless to send even 64kB;\nrevert the topic and plan to restart the effort later.\n\n* jc/no-writev-does-not-work:\n  Revert \"compat/posix: introduce writev(3p) wrapper\"\n  Revert \"wrapper: introduce writev(3p) wrappers\"\n  Revert \"sideband: use writev(3p) to send pktlines\"\n  Revert \"cmake: use writev(3p) wrapper as needed\"\n"
    },
    {
      "commit": "cd412a49627774a14b3e49237109a77bd3ea70c0",
      "tree": "826d4b5c7c084961c830ccad25756211907154a8",
      "parents": [
        "8d0cfa0397b4f47ba93124a10b3c87a709115f50",
        "1dcfd677cea65ad65517d57e0659a23f25b53717"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 10:05:33 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 10:05:33 2026 -0700"
      },
      "message": "Merge branch \u0027ps/archive-prefix-doc\u0027\n\nDoc update.\n\n* ps/archive-prefix-doc:\n  archive: document --prefix handling of absolute and parent paths\n"
    },
    {
      "commit": "8d0cfa0397b4f47ba93124a10b3c87a709115f50",
      "tree": "45f0b52f98c88d896e6d831c8131868da23b9566",
      "parents": [
        "d3b7a9b63d00e80c3de48356198f9bbc5105d814",
        "e2f25d202ec80895693d66de83170c1140d9f049"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 10:05:32 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 10:05:32 2026 -0700"
      },
      "message": "Merge branch \u0027bc/ref-storage-default-doc-update\u0027\n\nDoc update.\n\n* bc/ref-storage-default-doc-update:\n  docs: correct information about reftable\n"
    },
    {
      "commit": "d3b7a9b63d00e80c3de48356198f9bbc5105d814",
      "tree": "6b69cddc9fca90ac23a793ec79c1a82d146e86c1",
      "parents": [
        "60f07c4f5c5f81c8a994d9e06b31a4a3a1679864"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 07:52:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Fri Apr 10 08:14:20 2026 -0700"
      },
      "message": "rust: we are way beyond 2.53\n\nEarlier we timelined that we\u0027d tune our build procedures to build\nwith Rust by default in Git 2.53, but we are already in prerelease\nfreeze for 2.54 now.  Update the BreakingChanges document to delay\nit until Git 2.55 (slated for the end of June 2026).\n\nNoticed-by: brian m. carlson \u003csandals@crustytoothpaste.net\u003e\nHelped-by: Derrick Stolee \u003cstolee@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "d14e8c828c220dff5d4c54ad192867a978ba2678",
      "tree": "97c68ce6dabe1e293525523d3cbf1785237bf72b",
      "parents": [
        "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Thu Feb 05 09:21:28 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Fri Apr 10 10:05:31 2026 +0800"
      },
      "message": "l10n: zh_CN: post-2.53 code review\n\nUpdate Simplified Chinese translation for post-2.53 code review.\n\nReviewed-by: 依云 \u003clilydjwg@gmail.com\u003e\nSigned-off-by: Jiang Xin \u003cworldhello.net@gmail.com\u003e\n"
    },
    {
      "commit": "bfedc73f86c3f820b51a16f6875b6235f9ccb76c",
      "tree": "52f9e0eb046fca300944fded9606bcec1b4ab1ff",
      "parents": [
        "60f07c4f5c5f81c8a994d9e06b31a4a3a1679864",
        "7798034171030be0909c56377a4e0e10e6d2df93"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 15:07:12 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 15:07:12 2026 -0700"
      },
      "message": "writev: retract the topic until we have a better emulation\n\nThe emulation layer we added for writev(3p) tries to be too faithful\nto the spec that on systems with SSIZE_MAX set to lower than 64kB to\nfit a single sideband packet would fail just like the real system\nwritev(), which makes our use of writev() for sideband messages\nunworkable.\n\nLet\u0027s revert them and reboot the effort after the release.  The\nreverted commits are:\n\n    $ git log -Swritev --oneline 8023abc632^..v2.52.0-rc1\n    89152af176 cmake: use writev(3p) wrapper as needed\n    26986f4cba sideband: use writev(3p) to send pktlines\n    1970fcef93 wrapper: introduce writev(3p) wrappers\n    3b9b2c2a29 compat/posix: introduce writev(3p) wrapper\n\n8023abc632 is the merge of ps/upload-pack-buffer-more-writes topic to\nthe mainline.\n\nHelped-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "7798034171030be0909c56377a4e0e10e6d2df93",
      "tree": "52f9e0eb046fca300944fded9606bcec1b4ab1ff",
      "parents": [
        "dc1b8b2cc8da78c592a54ee4ca3776a7f83cbd31"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:48:24 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:48:24 2026 -0700"
      },
      "message": "Revert \"compat/posix: introduce writev(3p) wrapper\"\n\nThis reverts commit 3b9b2c2a29a1d529ca9884fa0a6529f6e2496abe; let\u0027s\nnot use writev() for now.\n"
    },
    {
      "commit": "dc1b8b2cc8da78c592a54ee4ca3776a7f83cbd31",
      "tree": "dfab4cbde915c3a5ea93f95afdc87b1eab7935c3",
      "parents": [
        "74fbd8a571abe7b15de01956ba4599e500c31ac0"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:48:09 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:48:09 2026 -0700"
      },
      "message": "Revert \"wrapper: introduce writev(3p) wrappers\"\n\nThis reverts commit 1970fcef93adcc5a35f6468d00a5a634d5af2b3c; let\u0027s\nnot use writev() for now.\n"
    },
    {
      "commit": "74fbd8a571abe7b15de01956ba4599e500c31ac0",
      "tree": "f78e81ae02bced66bbc1a8fb2b2a8b2f185f60b1",
      "parents": [
        "9c30dddefdfe22329fdad84e80a4eca117df7bd7"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:47:51 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:47:51 2026 -0700"
      },
      "message": "Revert \"sideband: use writev(3p) to send pktlines\"\n\nThis reverts commit 26986f4cbaf38d84a82b0b35da211389ce49552c; let\u0027s\nnot use writev() for now.\n"
    },
    {
      "commit": "9c30dddefdfe22329fdad84e80a4eca117df7bd7",
      "tree": "eaee692126125e1f31fd0c8333d1d2a661e5d8d7",
      "parents": [
        "60f07c4f5c5f81c8a994d9e06b31a4a3a1679864"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:47:28 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 14:47:28 2026 -0700"
      },
      "message": "Revert \"cmake: use writev(3p) wrapper as needed\"\n\nThis reverts commit 89152af176ea94ea8f3249115b6e00827fbbeb70; let\u0027s\nnot use writev() for now.\n"
    },
    {
      "commit": "60f07c4f5c5f81c8a994d9e06b31a4a3a1679864",
      "tree": "45d68c78d1796ea72d6fdf24d337324257e48841",
      "parents": [
        "c343f9cdc25a8281d1e21ee083f1cd77f82cacd7"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:36 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "message": "A bit more for -rc2\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "c343f9cdc25a8281d1e21ee083f1cd77f82cacd7",
      "tree": "6f0e0bf6c06affbfa2d4d8c48d8d4ff587199415",
      "parents": [
        "8e04162c18f1cac476638b1d8cc69764a61210f5",
        "b0ba57daa86dfba0a6551613452d1cb2301266a2"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "message": "Merge branch \u0027ds/rev-list-maximal-only-optim\u0027\n\n\"git rev-list --maximal-only\" has been optimized by borrowing the\nlogic used by \"git show-branch --independent\", which computes the\nsame kind of information much more efficiently.\n\n* ds/rev-list-maximal-only-optim:\n  rev-list: use reduce_heads() for --maximal-only\n  p6011: add perf test for rev-list --maximal-only\n  t6600: test --maximal-only and --independent\n"
    },
    {
      "commit": "8e04162c18f1cac476638b1d8cc69764a61210f5",
      "tree": "2fead1d42f3bc7699372215a57eb579bb58e80d7",
      "parents": [
        "3eabc358a940e5ac2e0cb161957a51f3e2a5a3a0",
        "57177ad139c3d83116459c5a8ec323b8d2a050f4"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "message": "Merge branch \u0027kh/doc-config-list\u0027\n\n\"git config list\" is the official way to spell \"git config -l\" and\n\"git config --list\".  Use it to update the documentation.\n\n* kh/doc-config-list:\n  doc: gitcvs-migration: rephrase “man page”\n  doc: replace git config --list/-l with `list`\n"
    },
    {
      "commit": "3eabc358a940e5ac2e0cb161957a51f3e2a5a3a0",
      "tree": "46f800c359bcef80b85cf632190126b5b72fc0e8",
      "parents": [
        "b15384c06f77bc2d34d0d3623a8a58218313a561",
        "58589c20e555de187c8026ac721467919595543f"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Thu Apr 09 11:21:59 2026 -0700"
      },
      "message": "Merge branch \u0027jk/c23-const-preserving-fixes-more\u0027\n\nFurther work to adjust the codebase for C23 that changes functions\nlike strchr() that discarded constness when they return a pointer into\na const string to preserve constness.\n\n* jk/c23-const-preserving-fixes-more:\n  git-compat-util: fix CONST_OUTPARAM typo and indentation\n  refs/files-backend: drop const to fix strchr() warning\n  http: drop const to fix strstr() warning\n  range-diff: drop const to fix strstr() warnings\n  pkt-line: make packet_reader.line non-const\n  skip_prefix(): check const match between in and out params\n  pseudo-merge: fix disk reads from find_pseudo_merge()\n  find_last_dir_sep(): convert inline function to macro\n  run-command: explicitly cast away constness when assigning to void\n  pager: explicitly cast away strchr() constness\n  transport-helper: drop const to fix strchr() warnings\n  http: add const to fix strchr() warnings\n  convert: add const to fix strchr() warnings\n"
    },
    {
      "commit": "7668233ca4a2d008a4b4a53dcbf21e7bbc60b3fc",
      "tree": "abc366a4cba92ad680be2289eea1d3082b8a53ea",
      "parents": [
        "fc2a6741f71c71ddc7e1cc71c8f6289fcda2ff2d",
        "b15384c06f77bc2d34d0d3623a8a58218313a561"
      ],
      "author": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Thu Apr 09 13:48:26 2026 +0800"
      },
      "committer": {
        "name": "Jiang Xin",
        "email": "worldhello.net@gmail.com",
        "time": "Thu Apr 09 13:51:00 2026 +0800"
      },
      "message": "Merge branch \u0027master\u0027 of https://github.com/git/git\n\nUpstream adds 8 new translatable messages.\n\n* \u0027master\u0027 of https://github.com/git/git: (93 commits)\n  A bit more post -rc1\n  ...\n\nSigned-off-by: Jiang Xin \u003cworldhello.net@gmail.com\u003e\n"
    },
    {
      "commit": "1dcfd677cea65ad65517d57e0659a23f25b53717",
      "tree": "a3458971f33c3e38bf871b40ae03346db341befd",
      "parents": [
        "9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed"
      ],
      "author": {
        "name": "Pushkar Singh",
        "email": "pushkarkumarsingh1970@gmail.com",
        "time": "Wed Apr 08 16:00:06 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 11:13:52 2026 -0700"
      },
      "message": "archive: document --prefix handling of absolute and parent paths\n\nClarify that --prefix is used as given and is not normalized,\nand may include leading slashes or parent directory components.\n\nSigned-off-by: Pushkar Singh \u003cpushkarkumarsingh1970@gmail.com\u003e\nAcked-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "b15384c06f77bc2d34d0d3623a8a58218313a561",
      "tree": "d81de58e4e340f537172d189921f1a80672be53b",
      "parents": [
        "2226ffaacd93d3fe5554687a70d9190d72596f96"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 11:00:10 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 11:00:10 2026 -0700"
      },
      "message": "A bit more post -rc1\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "2226ffaacd93d3fe5554687a70d9190d72596f96",
      "tree": "04123d837b4c011876d420c0c6588426466b8238",
      "parents": [
        "26c27dd3db0e1386fe541ebd7aae001c722e5c10"
      ],
      "author": {
        "name": "Jeff King",
        "email": "peff@peff.net",
        "time": "Wed Apr 08 13:20:55 2026 -0400"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:54:32 2026 -0700"
      },
      "message": "run_processes_parallel(): fix order of sigpipe handling\n\nIn commit ec0becacc9 (run-command: add stdin callback for\nparallelization, 2026-01-28), we taught run_processes_parallel() to\nignore SIGPIPE, since we wouldn\u0027t want a write() to a broken pipe of one\nof the children to take down the whole process.\n\nBut there\u0027s a subtle ordering issue. After we ignore SIGPIPE, we call\npp_init(), which installs its own cleanup handler for multiple signals\nusing sigchain_push_common(), which includes SIGPIPE. So if we receive\nSIGPIPE while writing to a child, we\u0027ll trigger that handler first, pop\nit off the stack, and then re-raise (which is then ignored because of\nthe SIG_IGN we pushed first).\n\nBut what does that handler do? It tries to clean up all of the child\nprocesses, under the assumption that when we re-raise the signal we\u0027ll\nbe exiting the process!\n\nSo a hook that exits without reading all of its input will cause us to\nget SIGPIPE, which will put us in a signal handler that then tries to\nkill() that same child.\n\nThis seems to be mostly harmless on Linux. The process has already\nexited by this point, and though kill() does not complain (since the\nprocess has not been reaped with a wait() call), it does not affect the\nexit status of the process.\n\nHowever, this seems not to be true on all platforms. This case is\ntriggered by t5401.13, \"pre-receive hook that forgets to read its\ninput\". This test fails on NonStop since that hook was converted to the\nrun_processes_parallel() API.\n\nWe can fix it by reordering the code a bit. We should run pp_init()\nfirst, and then push our SIG_IGN onto the stack afterwards, so that it\nis truly ignored while feeding the sub-processes.\n\nNote that we also reorder the popping at the end of the function, too.\nThis is not technically necessary, as we are doing two pops either way,\nbut now the pops will correctly match their pushes.\n\nThis also fixes a related case that we can\u0027t test yet. If we did have\nmore than one process to run, then one child causing SIGPIPE would cause\nus to kill() all of the children (which might still actually be\nrunning). But the hook API is the only user of the new feed_pipe\nfeature, and it does not yet support parallel hook execution. So for now\nwe\u0027ll always execute the processes sequentially. Once parallel hook\nexecution exists, we\u0027ll be able to add a test which covers this.\n\nReported-by: Randall S. Becker \u003crsbecker@nexbridge.com\u003e\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "26c27dd3db0e1386fe541ebd7aae001c722e5c10",
      "tree": "522c42678b395b3a106b6ae744ed50ba2d9d51ed",
      "parents": [
        "fe4ab2e698d544a082862a14120efc6b49047382",
        "a8a773c28fa618be573be7bce05d37ac4d079a80"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:20:51 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:20:52 2026 -0700"
      },
      "message": "Merge branch \u0027jt/index-fd-wo-repo-regression-fix\u0027\n\nDuring Git 2.52 timeframe, we broke streaming computation of object\nhash outside a repository, which has been corrected.\n\n* jt/index-fd-wo-repo-regression-fix:\n"
    },
    {
      "commit": "fe4ab2e698d544a082862a14120efc6b49047382",
      "tree": "522c42678b395b3a106b6ae744ed50ba2d9d51ed",
      "parents": [
        "37a4780f2c30de9fe0bef533a266c6bca767a50f",
        "7d8727ff0b621a9729c2de6a3698063b7b3ba2d6"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:20:51 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:20:51 2026 -0700"
      },
      "message": "Merge branch \u0027jt/index-fd-wo-repo-regression-fix-maint\u0027\n\nDuring Git 2.52 timeframe, we broke streaming computation of object\nhash outside a repository, which has been corrected.\n\n* jt/index-fd-wo-repo-regression-fix-maint:\n  object-file: avoid ODB transaction when not writing objects\n"
    },
    {
      "commit": "37a4780f2c30de9fe0bef533a266c6bca767a50f",
      "tree": "601afbae0030003f3089e95b22dc466d64874d32",
      "parents": [
        "d8c553bbed21761a8af3fa40a20518e210e78a0d",
        "23d83f8ddbef9adcb87671358b473e55cf90c90b"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:18 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:18 2026 -0700"
      },
      "message": "Merge branch \u0027tc/replay-ref\u0027\n\nThe experimental `git replay` command learned the `--ref\u003d\u003cref\u003e` option\nto allow specifying which ref to update, overriding the default behavior.\n\n* tc/replay-ref:\n  replay: allow to specify a ref with option --ref\n  replay: use stuck form in documentation and help message\n  builtin/replay: mark options as not negatable\n"
    },
    {
      "commit": "d8c553bbed21761a8af3fa40a20518e210e78a0d",
      "tree": "96b22d1e2c25bbc8dd6564b27cf02ade0ee79831",
      "parents": [
        "4fee6ff3b23321b55073ca2d13c4e2aa6adaea65",
        "c0ce43376b178d876bce2073b81737ce49657def"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:18 2026 -0700"
      },
      "message": "Merge branch \u0027ng/add-files-to-cache-wo-rename\u0027\n\nadd_files_to_cache() used diff_files() to detect only the paths that\nare different between the index and the working tree and add them,\nwhich does not need rename detection, which interfered with unnecessary\nconflicts.\n\n* ng/add-files-to-cache-wo-rename:\n  read-cache: disable renames in add_files_to_cache\n"
    },
    {
      "commit": "4fee6ff3b23321b55073ca2d13c4e2aa6adaea65",
      "tree": "097114e50b0fea8c224986e29d070b99a7904370",
      "parents": [
        "0c0cbd8ab7c8e1884d6f0bdf1f36f5f9d4732553",
        "87e4eee3f94ec261a92a76d06261b227b00de461"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "message": "Merge branch \u0027ps/reftable-portability\u0027\n\nUpdate reftable library part with what is used in libgit2 to improve\nportability to different target codebases and platforms.\n\n* ps/reftable-portability:\n  reftable/system: add abstraction to mmap files\n  reftable/system: add abstraction to retrieve time in milliseconds\n  reftable/fsck: use REFTABLE_UNUSED instead of UNUSED\n  reftable/stack: provide fsync(3p) via system header\n  reftable: introduce \"reftable-system.h\" header\n"
    },
    {
      "commit": "0c0cbd8ab7c8e1884d6f0bdf1f36f5f9d4732553",
      "tree": "7da0c9b69d2be3cf3067dc600612e4e4fb366adc",
      "parents": [
        "9797fed6cea706f65de64396222545d545226e15",
        "882c8e351d700e1738e696dfbc6312617f394570"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "message": "Merge branch \u0027jd/cache-tree-trace-wo-the-repository\u0027\n\nCode cleanup.\n\n* jd/cache-tree-trace-wo-the-repository:\n  cache-tree: use index state repository in trace2 calls\n"
    },
    {
      "commit": "9797fed6cea706f65de64396222545d545226e15",
      "tree": "04ffa4091726ad86bf0d764a75487395e5859cf4",
      "parents": [
        "2e3028a58c1f1fbf08538443fc30a48ac4f6bacf",
        "109bcb7d1d2f0d2f0514beec15779190c0b89575"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:17 2026 -0700"
      },
      "message": "Merge branch \u0027ps/odb-cleanup\u0027\n\nVarious code clean-up around odb subsystem.\n\n* ps/odb-cleanup:\n  odb: drop unneeded headers and forward decls\n  odb: rename `odb_has_object()` flags\n  odb: use enum for `odb_write_object` flags\n  odb: rename `odb_write_object()` flags\n  treewide: use enum for `odb_for_each_object()` flags\n  CodingGuidelines: document our style for flags\n"
    },
    {
      "commit": "2e3028a58c1f1fbf08538443fc30a48ac4f6bacf",
      "tree": "4939ebda9d8d83f1161ad382f5179f5ae91f75a6",
      "parents": [
        "373d43e0829d91c61f35f46f6715a23adda7b35d",
        "42148dafdf74f8458e7a710dcb982c0be0e40566"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:15 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:19:15 2026 -0700"
      },
      "message": "Merge branch \u0027ss/t7004-unhide-git-failures\u0027\n\nTest clean-up.\n\n* ss/t7004-unhide-git-failures:\n  t7004: replace wc -l with modern test helpers\n"
    },
    {
      "commit": "373d43e0829d91c61f35f46f6715a23adda7b35d",
      "tree": "0ddb01c924404bb612c37ed94725d955873b6164",
      "parents": [
        "2b39a27d40682c09ac1c031f099ee602061597cd"
      ],
      "author": {
        "name": "Adrian Ratiu",
        "email": "adrian.ratiu@collabora.com",
        "time": "Wed Apr 08 19:11:48 2026 +0300"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 10:15:47 2026 -0700"
      },
      "message": "t1800: add \u0026\u0026-chains to test helper functions\n\nAdd the missing \u0026\u0026\u0027s so we properly propagate failures\nbetween commands in the hook helper functions.\n\nAlso add a missing mkdir -p arg (found by adding the \u0026\u0026).\n\nReported-by: SZEDER Gábor \u003cszeder.dev@gmail.com\u003e\nSigned-off-by: Adrian Ratiu \u003cadrian.ratiu@collabora.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "2b39a27d40682c09ac1c031f099ee602061597cd",
      "tree": "cf739443d50c5806eb44d2529af5a2b2b792dbf6",
      "parents": [
        "7c4e9e957a427d4c6a19265a528de0a161ff9b62"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 08:21:34 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 08:21:34 2026 -0700"
      },
      "message": "Git 2.54-rc1\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "e2f25d202ec80895693d66de83170c1140d9f049",
      "tree": "9b3bbea692e843e93325ec1dca76f17b75b00079",
      "parents": [
        "7c4e9e957a427d4c6a19265a528de0a161ff9b62"
      ],
      "author": {
        "name": "brian m. carlson",
        "email": "sandals@crustytoothpaste.net",
        "time": "Thu Apr 02 22:42:41 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Wed Apr 08 07:18:56 2026 -0700"
      },
      "message": "docs: correct information about reftable\n\nOur description of the reftable format is that it is experimental and\nsubject to change, but that is no longer true.  Remove this statement so\nas not to mislead users.\n\nIn addition, the documentation says that the files format is the\ndefault, but that is not true if breaking changes mode is on.  Correct\nthis information with a conditional.\n\nSigned-off-by: brian m. carlson \u003csandals@crustytoothpaste.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "a8a773c28fa618be573be7bce05d37ac4d079a80",
      "tree": "4f0a6ba3f5dd7cfe9915d9b4a1c4b02e5cec3de6",
      "parents": [
        "1adf5bca8c3cf778103548b9355777cf2d12efdd",
        "7d8727ff0b621a9729c2de6a3698063b7b3ba2d6"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 17:34:30 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 17:34:30 2026 -0700"
      },
      "message": "Merge branch \u0027jt/index-fd-wo-repo-regression-fix-maint\u0027 into HEAD\n\n* jt/index-fd-wo-repo-regression-fix-maint:\n  object-file: avoid ODB transaction when not writing objects\n"
    },
    {
      "commit": "7d8727ff0b621a9729c2de6a3698063b7b3ba2d6",
      "tree": "b794801e268ccad9483795ebac5153335c97bf92",
      "parents": [
        "9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed"
      ],
      "author": {
        "name": "Justin Tobler",
        "email": "jltobler@gmail.com",
        "time": "Tue Apr 07 15:17:30 2026 -0500"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 17:32:36 2026 -0700"
      },
      "message": "object-file: avoid ODB transaction when not writing objects\n\nIn ce1661f9da (odb: add transaction interface, 2025-09-16), existing\nODB transaction logic is adapted to create a transaction interface\nat the ODB layer. The intent here is for the ODB transaction\ninterface to eventually provide an object source agnostic means to\nmanage transactions.\n\nAn unintended consequence of this change though is that\n`object-file.c:index_fd()` may enter the ODB transaction path even\nwhen no object write is requested. In non-repository contexts, this\ncan result in a NULL dereference and segfault. One such case occurs\nwhen running git-diff(1) outside of a repository with\n\"core.bigFileThreshold\" forcing the streaming path in `index_fd()`:\n\n        $ echo foo \u003efoo\n        $ echo bar \u003ebar\n        $ git -c core.bigFileThreshold\u003d1 diff -- foo bar\n\nIn this scenario, the caller only needs to compute the object ID. Object\nhashing does not require an ODB, so starting a transaction is both\nunnecessary and invalid.\n\nFix the bug by avoiding the use of ODB transactions in `index_fd()` when\ncallers are only interested in computing the object hash.\n\nReported-by: Luca Stefani \u003cluca.stefani.ge1@gmail.com\u003e\nSigned-off-by: Justin Tobler \u003cjltobler@gmail.com\u003e\n[jc: adjusted to fd13909e (Merge branch \u0027jt/odb-transaction\u0027, 2025-10-02)]\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "7c4e9e957a427d4c6a19265a528de0a161ff9b62",
      "tree": "e63378e11dd421994c632f6fe24c5b0dddd8d69f",
      "parents": [
        "6c9fbf4fcd2d8ac0d8764a68bf81ea11f3794481"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:08 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:29 2026 -0700"
      },
      "message": "A bit more before -rc1\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "6c9fbf4fcd2d8ac0d8764a68bf81ea11f3794481",
      "tree": "753f91e87f12a9b47beffde21e65af8221091446",
      "parents": [
        "f1743ad69a492d1ca3773bfdddf7f5ffd278c19b",
        "26b9946dd756a2efc29f898e53327676a22adc3e"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:28 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:28 2026 -0700"
      },
      "message": "Merge branch \u0027rs/history-short-help-fix\u0027\n\nGlitches in \"git history -h\" have been corrected.\n\n* rs/history-short-help-fix:\n  history: fix short help for argument of --update-refs\n"
    },
    {
      "commit": "f1743ad69a492d1ca3773bfdddf7f5ffd278c19b",
      "tree": "222ad49ff701cc4f8753e854c8f37bb893763029",
      "parents": [
        "b66c97cc644ca3a3f42283cfc575fd9709f30835",
        "339eba65a7f8aa596199e04f45683c48a1562b9c"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:28 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:28 2026 -0700"
      },
      "message": "Merge branch \u0027th/backfill-auto-detect-sparseness-fix\u0027\n\n\"git backfill\" is capable of auto-detecting a sparsely checked out\nworking tree, which was broken.\n\n* th/backfill-auto-detect-sparseness-fix:\n  backfill: auto-detect sparse-checkout from config\n"
    },
    {
      "commit": "b66c97cc644ca3a3f42283cfc575fd9709f30835",
      "tree": "45138317f2294895438084ad661d19273c1462e2",
      "parents": [
        "f1edda9bfb70ce5eec41c68c51841faef551cb10",
        "8151f4fe7e4bf36f2656ae849a4ffaf386708178"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "message": "Merge branch \u0027ps/receive-pack-updateinstead-in-worktree\u0027\n\nThe check in \"receive-pack\" to prevent a checked out branch from\ngetting updated via updateInstead mechanism has been corrected.\n\n* ps/receive-pack-updateinstead-in-worktree:\n  receive-pack: use worktree HEAD for updateInstead\n  t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test\n  t5516: test updateInstead with worktree and unborn bare HEAD\n"
    },
    {
      "commit": "f1edda9bfb70ce5eec41c68c51841faef551cb10",
      "tree": "727b6faef0856456a6f138bd5e7ab54be3f7c273",
      "parents": [
        "1678b7de977043f31242d2029259797eee620236",
        "ddd7c7ab12a25850e96f550567ef06fb9bea0cc0"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "message": "Merge branch \u0027jt/fast-import-signed-modes\u0027\n\nHandling of signed commits and tags in fast-import has been made more\nconfigurable.\n\n* jt/fast-import-signed-modes:\n  fast-import: add \u0027abort-if-invalid\u0027 mode to \u0027--signed-tags\u003d\u003cmode\u003e\u0027\n  fast-import: add \u0027sign-if-invalid\u0027 mode to \u0027--signed-tags\u003d\u003cmode\u003e\u0027\n  fast-import: add \u0027strip-if-invalid\u0027 mode to \u0027--signed-tags\u003d\u003cmode\u003e\u0027\n  fast-import: add \u0027abort-if-invalid\u0027 mode to \u0027--signed-commits\u003d\u003cmode\u003e\u0027\n  fast-export: check for unsupported signing modes earlier\n"
    },
    {
      "commit": "1678b7de977043f31242d2029259797eee620236",
      "tree": "749d1f5c103743b03ab9862d34e104deae16f397",
      "parents": [
        "fb5516997ef3f882d8e53ce70ba6077533683621",
        "512536a09ea2964e93226f219898ee0a09d85a70"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:27 2026 -0700"
      },
      "message": "Merge branch \u0027mm/line-log-use-standard-diff-output\u0027\n\nThe way the \"git log -L\u003crange\u003e:\u003cfile\u003e\" feature is bolted onto the\nlog/diff machinery is being reworked a bit to make the feature\ncompatible with more diff options, like -S/G.\n\n* mm/line-log-use-standard-diff-output:\n  doc: note that -L supports patch formatting and pickaxe options\n  t4211: add tests for -L with standard diff options\n  line-log: route -L output through the standard diff pipeline\n  line-log: fix crash when combined with pickaxe options\n"
    },
    {
      "commit": "fb5516997ef3f882d8e53ce70ba6077533683621",
      "tree": "89ab8bb2deb72d08d25709c77af763c4ad12901e",
      "parents": [
        "7b6d0cd51b30e842ffb95d045385100b7c677886",
        "3cfe355ca74aae5cf90a4eca73a341732b0eb456"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "message": "Merge branch \u0027sp/add-patch-with-fewer-the-repository\u0027\n\nReduce dependency on `the_repository` in add-patch.c file.\n\n* sp/add-patch-with-fewer-the-repository:\n  add-patch: use repository instance from add_i_state instead of the_repository\n"
    },
    {
      "commit": "7b6d0cd51b30e842ffb95d045385100b7c677886",
      "tree": "a12833ed2f687f197324fdc07ffa3112a2be7ae2",
      "parents": [
        "59063fe8b415f150eecd38c63b0171a0e8449364",
        "6fea405bb92100a229c0ee83c98e062e271577cd"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "message": "Merge branch \u0027ps/fsck-wo-the-repository\u0027\n\nInternals of \"git fsck\" have been refactored to not depend on the\nglobal `the_repository` variable.\n\n* ps/fsck-wo-the-repository:\n  builtin/fsck: stop using `the_repository` in error reporting\n  builtin/fsck: stop using `the_repository` when marking objects\n  builtin/fsck: stop using `the_repository` when checking packed objects\n  builtin/fsck: stop using `the_repository` with loose objects\n  builtin/fsck: stop using `the_repository` when checking reflogs\n  builtin/fsck: stop using `the_repository` when checking refs\n  builtin/fsck: stop using `the_repository` when snapshotting refs\n  builtin/fsck: fix trivial dependence on `the_repository`\n  fsck: drop USE_THE_REPOSITORY\n  fsck: store repository in fsck options\n  fsck: initialize fsck options via a function\n  fetch-pack: move fsck options into function scope\n"
    },
    {
      "commit": "59063fe8b415f150eecd38c63b0171a0e8449364",
      "tree": "a7f32db8b70f45f457be2509c1a6d32e0809e232",
      "parents": [
        "55d867c547895b17af0093b339673c16e09a2042",
        "753ecf42053b8afa9afcc19726635cc5a080c1bb"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "message": "Merge branch \u0027yc/path-walk-fix-error-reporting\u0027\n\nThe value of a wrong pointer variable was referenced in an error\nmessage that reported that it shouldn\u0027t be NULL.\n\n* yc/path-walk-fix-error-reporting:\n  path-walk: fix NULL pointer dereference in error message\n"
    },
    {
      "commit": "55d867c547895b17af0093b339673c16e09a2042",
      "tree": "f5ac967a337acc42f8a046fb93147ddfde0062fd",
      "parents": [
        "d88c8ba70bbcbc45a31cf05034a8e0c6884fb3d3",
        "afdb4c665f664e04c0f68c930ad50e5b05be71e1"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:26 2026 -0700"
      },
      "message": "Merge branch \u0027jc/whitespace-incomplete-line\u0027\n\nFix whitespace correction for new-style empty context lines.\n\n* jc/whitespace-incomplete-line:\n  apply: fix new-style empty context line triggering incomplete-line check\n"
    },
    {
      "commit": "d88c8ba70bbcbc45a31cf05034a8e0c6884fb3d3",
      "tree": "db7f8cc1f8de8bf1e6a915561e072c4bbbec15a7",
      "parents": [
        "716b9db0d3e1662fe2b84582a8b84ee3ff9f867d",
        "04c9c5e8d2d99050d260149cad9dde1302a02ff4"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:25 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:25 2026 -0700"
      },
      "message": "Merge branch \u0027ps/commit-graph-overflow-fix\u0027\n\nFix a regression in writing the commit-graph where commits with dates\nexceeding 34 bits (beyond year 2514) could cause an underflow and\ncrash Git during the generation data overflow chunk writing.\n\n* ps/commit-graph-overflow-fix:\n  commit-graph: fix writing generations with dates exceeding 34 bits\n"
    },
    {
      "commit": "716b9db0d3e1662fe2b84582a8b84ee3ff9f867d",
      "tree": "0f1fe1406cdfbd9f3f7d9a786816a22dbcb8ff19",
      "parents": [
        "1adf5bca8c3cf778103548b9355777cf2d12efdd",
        "a7aca156779f6c40d454f04ed151d2f482396f0f"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:25 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Tue Apr 07 14:59:25 2026 -0700"
      },
      "message": "Merge branch \u0027jd/read-cache-trace-wo-the-repository\u0027\n\nA handful of inappropriate uses of the_repository have been\nrewritten to use the right repository structure instance in the\nread-cache.c codepath.\n\n* jd/read-cache-trace-wo-the-repository:\n  read-cache: use istate-\u003erepo for trace2 logging\n"
    },
    {
      "commit": "1adf5bca8c3cf778103548b9355777cf2d12efdd",
      "tree": "47bc6ccae8d40a960c86a68b1a3e32d91d2cd040",
      "parents": [
        "fbd0428cc3011e93a87d02314dc392b06d60877d"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:30 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:51 2026 -0700"
      },
      "message": "A handful before -rc1\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "fbd0428cc3011e93a87d02314dc392b06d60877d",
      "tree": "35f67248fffbb4eef520204c6923c6da16566fd0",
      "parents": [
        "87972f30017cc82ea9bab8e20e85bcf1fe84e1d2",
        "d385845d55e0e3a775fc47ac8d73a5ec41308db3"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:51 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:51 2026 -0700"
      },
      "message": "Merge branch \u0027jk/c23-const-preserving-fixes\u0027\n\nAdjust the codebase for C23 that changes functions like strchr()\nthat discarded constness when they return a pointer into a const\nstring to preserve constness.\n\n* jk/c23-const-preserving-fixes:\n  config: store allocated string in non-const pointer\n  rev-parse: avoid writing to const string for parent marks\n  revision: avoid writing to const string for parent marks\n  rev-parse: simplify dotdot parsing\n  revision: make handle_dotdot() interface less confusing\n"
    },
    {
      "commit": "87972f30017cc82ea9bab8e20e85bcf1fe84e1d2",
      "tree": "ad3428814b218490aa3dd5e85eb3f3f7f70a7c0d",
      "parents": [
        "a2dc76525117e69f19afb54fec298f3d9ef76499",
        "dd3693eb0859274d62feac8047e1d486b3beaf31"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:51 2026 -0700"
      },
      "message": "Merge branch \u0027aa/reap-transport-child-processes\u0027\n\nA few code paths that spawned child processes for network\nconnection weren\u0027t wait(2)ing for their children and letting \"init\"\nreap them instead; they have been tightened.\n\n* aa/reap-transport-child-processes:\n  transport-helper, connect: use clean_on_exit to reap children on abnormal exit\n"
    },
    {
      "commit": "a2dc76525117e69f19afb54fec298f3d9ef76499",
      "tree": "86c3405a883c1064b9fbdc5dfa5bf132420ed7ef",
      "parents": [
        "e44fbc2afa6970f08bdce307f0d52b880d4decaa",
        "3402850ee16f5a7a05d68cb29271a0e558659aaa"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "message": "Merge branch \u0027qb/doc-git-stash-push-optionality\u0027\n\nDoc update.\n\n* qb/doc-git-stash-push-optionality:\n  docs: fix \"git stash [push]\" documentation\n"
    },
    {
      "commit": "e44fbc2afa6970f08bdce307f0d52b880d4decaa",
      "tree": "48f9a8790befc5f54e54644d12716fcdf30ca2c2",
      "parents": [
        "039888f2fc0279a7860587ef0524fc112f8fcd9a",
        "0f0ce0762503cb8f58a3ce07052a639e36e07ed5"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "message": "Merge branch \u0027sp/doc-gitignore-oowt\u0027\n\nDoc update.\n\n* sp/doc-gitignore-oowt:\n  doc: gitignore: clarify pattern base for info/exclude and core.excludesFile\n"
    },
    {
      "commit": "039888f2fc0279a7860587ef0524fc112f8fcd9a",
      "tree": "08f18e62db34671b4270f834e970a0ae5639de93",
      "parents": [
        "0713d3b7f6f44ec686606494d4feb6416bb88cc1",
        "849988bc7499d11f127305a8f20a3a054eb0b0c0"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "message": "Merge branch \u0027th/t6101-unhide-git-failures\u0027\n\nTest cleanup.\n\n* th/t6101-unhide-git-failures:\n  t6101: avoid suppressing git\u0027s exit code\n"
    },
    {
      "commit": "0713d3b7f6f44ec686606494d4feb6416bb88cc1",
      "tree": "b46705898c7712e3a4cbb3b7faa7e4f1e9c63d85",
      "parents": [
        "da54784d1cc3f4fdd90622fb9e3ae34a9e771702",
        "d8e34f971b31ae6583e796626c7280732fca68e1"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:50 2026 -0700"
      },
      "message": "Merge branch \u0027za/t2000-modernise\u0027\n\nTest cleanup.\n\n* za/t2000-modernise:\n  t2000: modernise overall structure\n"
    },
    {
      "commit": "da54784d1cc3f4fdd90622fb9e3ae34a9e771702",
      "tree": "ed0b38fd736278b336fc8d6b6ade60d03b3db5cd",
      "parents": [
        "03311dca7f91f69e9e0c532fce1c1e3c0a9fa34d",
        "e8b79a96ebaa2113391d14bfcdabe239f6ff8611"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:49 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:49 2026 -0700"
      },
      "message": "Merge branch \u0027tc/replay-down-to-root\u0027\n\ngit replay now supports replaying down to the root commit.\n\n* tc/replay-down-to-root:\n  replay: support replaying down from root commit\n"
    },
    {
      "commit": "03311dca7f91f69e9e0c532fce1c1e3c0a9fa34d",
      "tree": "99942cb6e498bd5ff78b17ea65618125372e3876",
      "parents": [
        "d75badf83bc3fc8e47413970874bac681eeb5bbe",
        "9ad29df36d7c762677b5a4ecc6a6dc229c818b2a"
      ],
      "author": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:49 2026 -0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 15:42:49 2026 -0700"
      },
      "message": "Merge branch \u0027tb/stdin-packs-excluded-but-open\u0027\n\npack-objects\u0027s --stdin-packs\u003dfollow mode learns to handle\nexcluded-but-open packs.\n\n* tb/stdin-packs-excluded-but-open:\n  repack: mark non-MIDX packs above the split as excluded-open\n  pack-objects: support excluded-open packs with --stdin-packs\n  t7704: demonstrate failure with once-cruft objects above the geometric split\n  pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`\n  pack-objects: plug leak in `read_stdin_packs()`\n"
    },
    {
      "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"
    },
    {
      "commit": "b0ba57daa86dfba0a6551613452d1cb2301266a2",
      "tree": "9df6b16773cf2b259fc8426c5814db52a59fe34a",
      "parents": [
        "e8e5453ab8794cf29afe0a616d74319442b676bd"
      ],
      "author": {
        "name": "Derrick Stolee",
        "email": "stolee@gmail.com",
        "time": "Mon Apr 06 13:27:28 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 12:02:30 2026 -0700"
      },
      "message": "rev-list: use reduce_heads() for --maximal-only\n\nThe \u0027git rev-list --maximal-only\u0027 option filters the output to only\nindependent commits. A commit is independent if it is not reachable from\nother listed commits. Currently this is implemented by doing a full\nrevision walk and marking parents with CHILD_VISITED to skip non-maximal\ncommits.\n\nThe \u0027git merge-base --independent\u0027 command computes the same result\nusing reduce_heads(), which uses the more efficient remove_redundant()\nalgorithm. This is significantly faster because it avoids walking the\nentire commit graph.\n\nAdd a fast path in rev-list that detects when --maximal-only is the only\ninteresting option and all input commits are positive (no revision\nranges). In this case, use reduce_heads() directly instead of doing a\nfull revision walk.\n\nIn order to preserve the rest of the output filtering, this computation\nis done opportunistically in a new prepare_maximal_independent() method\nwhen possible. If successful, it populates revs-\u003ecommits with the list\nof independent commits and set revs-\u003eno_walk to prevent any other walk\nfrom occurring. This allows us to have any custom output be handled\nusing the existing output code hidden inside\ntraverse_commit_list_filtered(). A new test is added to demonstrate that\nthis output is preserved.\n\nThe fast path is only used when no other flags complicate the walk or\noutput format: no UNINTERESTING commits, no limiting options (max-count,\nage filters, path filters, grep filters), no output formatting beyond\nplain OIDs, and no object listing flags.\n\nRunning the p6011 performance test for my copy of git.git, I see the\nfollowing improvement with this change:\n\n  Test                                     HEAD~1  HEAD\n  ------------------------------------------------------------\n  6011.2: merge-base --independent          0.03   0.03 +0.0%\n  6011.3: rev-list --maximal-only           0.06   0.03 -50.0%\n  6011.4: rev-list --maximal-only --since   0.06   0.06 +0.0%\n\nAnd for a fresh clone of the Linux kernel repository, I see:\n\n  Test                                     HEAD~1  HEAD\n  ------------------------------------------------------------\n  6011.2: merge-base --independent          0.00   0.00 \u003d\n  6011.3: rev-list --maximal-only           0.70   0.00 -100.0%\n  6011.4: rev-list --maximal-only --since   0.70   0.70 +0.0%\n\nIn both cases, the performance is indeed matching the behavior of \u0027git\nmerge-base --independent\u0027, as expected.\n\nSigned-off-by: Derrick Stolee \u003cstolee@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "e8e5453ab8794cf29afe0a616d74319442b676bd",
      "tree": "b09152e1583945b54b303f4affafcb58d0233a85",
      "parents": [
        "295fb82264cc8be565a5da8259b103cbc6a41728"
      ],
      "author": {
        "name": "Derrick Stolee",
        "email": "stolee@gmail.com",
        "time": "Mon Apr 06 13:27:27 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 12:02:30 2026 -0700"
      },
      "message": "p6011: add perf test for rev-list --maximal-only\n\nAdd a performance test that compares \u0027git rev-list --maximal-only\u0027\nagainst \u0027git merge-base --independent\u0027. These two commands are asking\nessentially the same thing, but the rev-list implementation is more\ngeneric and hence slower. These performance tests will demonstrate that\nin the current state and also be used to show the equivalence in the\nfuture.\n\nWe also add a case with \u0027--since\u0027 to force the generic walk logic for\nrev-list even when we make that future change to use the merge-base\nalgorithm on a simple walk.\n\nWhen run on my copy of git.git, I see these results:\n\n  Test                                      HEAD\n  ----------------------------------------------\n  6011.2: merge-base --independent          0.03\n  6011.3: rev-list --maximal-only           0.06\n  6011.4: rev-list --maximal-only --since   0.06\n\nThese numbers are low, but the --independent calculation is interesting\ndue to having a lot of local branches that are actually independent.\n\nRunning the same test on a fresh clone of the Linux kernel repository\nshows a larger difference between the algorithms, especially because the\n--independent algorithm is extremely fast when there are no independent\nreferences selected:\n\n  Test                                      HEAD\n  ----------------------------------------------\n  6011.2: merge-base --independent          0.00\n  6011.3: rev-list --maximal-only           0.70\n  6011.4: rev-list --maximal-only --since   0.70\n\nSigned-off-by: Derrick Stolee \u003cstolee@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "295fb82264cc8be565a5da8259b103cbc6a41728",
      "tree": "1298042b697ca247029090df516d59c1c34cd988",
      "parents": [
        "2f8c3f6a5a6d6a3de205be709e1a598b9d4b0b3e"
      ],
      "author": {
        "name": "Derrick Stolee",
        "email": "stolee@gmail.com",
        "time": "Mon Apr 06 13:27:26 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 12:02:30 2026 -0700"
      },
      "message": "t6600: test --maximal-only and --independent\n\nAdd a test that verifies the \u0027git rev-list --maximal-only\u0027 option\nproduces the same set of commits as \u0027git merge-base --independent\u0027. This\nequivalence was noted when the feature was first created, but we are\nabout to update the implementation to use a common algorithm in this\ncase where the user intention is identical.\n\nSigned-off-by: Derrick Stolee \u003cstolee@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "26b9946dd756a2efc29f898e53327676a22adc3e",
      "tree": "5641b73ce18f8873e88c22238490350bbdf74f32",
      "parents": [
        "49e6a7cd63793459c397dd9e1d772c41f997067a"
      ],
      "author": {
        "name": "René Scharfe",
        "email": "l.s.r@web.de",
        "time": "Mon Apr 06 11:31:21 2026 +0200"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 10:17:36 2026 -0700"
      },
      "message": "history: fix short help for argument of --update-refs\n\n\"print\" is not a valid argument for --update-refs.  List both valid\nalternatives literally in the argh string, consistent with documentation\nand usage string.\n\nSigned-off-by: René Scharfe \u003cl.s.r@web.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "2f8c3f6a5a6d6a3de205be709e1a598b9d4b0b3e",
      "tree": "5d55506b3d5113624a8dd0a1fc4f1877d548dbe3",
      "parents": [
        "66dd13f3f72e8cad1327b6b134dec079936c4b07"
      ],
      "author": {
        "name": "Matthias Aßhauer",
        "email": "mha1993@live.de",
        "time": "Mon Apr 06 05:45:30 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 10:06:22 2026 -0700"
      },
      "message": "compat/winansi: drop pre-Vista workaround\n\n1edeb9a (Win32: warn if the console font doesn\u0027t support Unicode,\n2014-06-10) introduced both code to detect the current console font on\nWindows Vista and newer and a fallback for older systems to detect the\ndefault console font and issue a warning if that font doesn\u0027t support\nunicode.\n\nSince we haven\u0027t supported any Windows older than Vista in almost a\ndecade, we don\u0027t need to keep the workaround.\n\nSigned-off-by: Matthias Aßhauer \u003cmha1993@live.de\u003e\nSigned-off-by: Johannes Schindelin \u003cjohannes.schindelin@gmx.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "66dd13f3f72e8cad1327b6b134dec079936c4b07",
      "tree": "84bc8c11c528e40d1b01930b8baa2dfb3ee63a48",
      "parents": [
        "2855562ca6a9c6b0e7bc780b050c1e83c9fcfbd0"
      ],
      "author": {
        "name": "Matthias Aßhauer",
        "email": "mha1993@live.de",
        "time": "Mon Apr 06 05:45:29 2026 +0000"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 10:06:20 2026 -0700"
      },
      "message": "unify and bump _WIN32_WINNT definition to Windows 8.1\n\nGit for Windows doesn\u0027t support anything prior to Windows 8.1 since 2.47.0\nand Git followed along with commits like ce6ccba (mingw: drop Windows\n7-specific work-around, 2025-08-04).\n\nThere is no need to pretend to the compiler that we still support Windows\nVista, just to lock us out of easy access to newer APIs. There is also no\nneed to have conflicting and unused definitions claiming we support some\nversions of Windows XP or even Windows NT 4.0.\n\nBump all definitions of _WIN32_WINNT to a realistic value of Windows 8.1.\nThis will also simplify code for a followup commit that will improve cpu\ncore detection on multi-socket systems.\n\nSigned-off-by: Matthias Aßhauer \u003cmha1993@live.de\u003e\nSigned-off-by: Johannes Schindelin \u003cjohannes.schindelin@gmx.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "57177ad139c3d83116459c5a8ec323b8d2a050f4",
      "tree": "3c43ed9b51b354c2e4204baca6c84b262bdccd81",
      "parents": [
        "5bdb9883bda41024e3c47f1cddf69977d82fe3a9"
      ],
      "author": {
        "name": "Kristoffer Haugsbakk",
        "email": "code@khaugsbakk.name",
        "time": "Sun Apr 05 12:32:00 2026 +0200"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 09:57:07 2026 -0700"
      },
      "message": "doc: gitcvs-migration: rephrase “man page”\n\nLet’s change the phrasing around the `linkgit` while we’re visiting this\nfile (see previous commit[1]).\n\nWe use the section syntax to refer to man pages, so writing “man page”\nnext to it is a bit redundant. We can be more concise and just lean on\nthe preposition “in”.\n\nAnd in order to avoid this double “git”:\n\n    see `git config list` in git-config(1) ...\n\nWe can rephrase to the subcommand, which is a typical pattern (config or\noption followed by “in git-command(1)”).\n\n† 1: Which also discusses why we do not change a similar phrasing\n     in gittutorial(7)\n\nSigned-off-by: Kristoffer Haugsbakk \u003ccode@khaugsbakk.name\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "5bdb9883bda41024e3c47f1cddf69977d82fe3a9",
      "tree": "4637d1e0aa41b9aa822217ed86a5cff27ae66b39",
      "parents": [
        "2855562ca6a9c6b0e7bc780b050c1e83c9fcfbd0"
      ],
      "author": {
        "name": "Kristoffer Haugsbakk",
        "email": "code@khaugsbakk.name",
        "time": "Sun Apr 05 12:31:59 2026 +0200"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 09:57:07 2026 -0700"
      },
      "message": "doc: replace git config --list/-l with `list`\n\nReplace uses of `git config --list` (short or long) with the subcommand\n`list` since `--list` is deprecated.\n\nWe will change the “man page” phrasing in gitcvs-migration(7) in the\nnext commit, since we are already visiting that sentence. But note\nthat we leave the “man page” phrasing in the sentence that we touch in\ngittutorial(7) since it’s a tutorial and not a manual page. We can be\nmore wordy in a tutorial context.\n\nSigned-off-by: Kristoffer Haugsbakk \u003ccode@khaugsbakk.name\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "339eba65a7f8aa596199e04f45683c48a1562b9c",
      "tree": "e49d6bb563bfa6e255fd590daf5b2b47d9ab0e3f",
      "parents": [
        "e565f3755342caf1d21e22359eaf09ec11d8c0ae"
      ],
      "author": {
        "name": "Trieu Huynh",
        "email": "vikingtc4@gmail.com",
        "time": "Sat Apr 04 18:15:57 2026 +0700"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 09:26:08 2026 -0700"
      },
      "message": "backfill: auto-detect sparse-checkout from config\n\nCommit 85127bcdea (\"backfill: assume --sparse when sparse-checkout is\nenabled\") intended for \u0027git backfill\u0027 to consult the repository\nconfiguration when the user does not pass \u0027--sparse\u0027 or\n\u0027--no-sparse\u0027 on the command line. It added the sentinel check:\n\n    if (ctx-\u003esparse \u003c 0)\n        ctx-\u003esparse \u003d cfg-\u003eapply_sparse_checkout;\n\nHowever, the ctx-\u003esparse field is initialized to 0 instead of -1,\nso this guard never triggers. Consequently, the repository config\n(core.sparseCheckout) is never checked, and the command always\nperforms a full backfill even when sparse-checkout is enabled.\n\nFix this by initializing ctx-\u003esparse to -1, ensuring the existing\nfallback logic correctly reads the repository configuration when\nno explicit flags are provided.\n\nAdd a test to verify that \u0027git backfill\u0027 automatically respects\nsparse-checkout settings when no flags are passed.\n\nSigned-off-by: Trieu Huynh \u003cvikingtc4@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    },
    {
      "commit": "58589c20e555de187c8026ac721467919595543f",
      "tree": "40897826df2b739d4abeb7ba893c89e74630666a",
      "parents": [
        "f1b8a4d10888922eacaa9552d9925d3330ed5d8b"
      ],
      "author": {
        "name": "Jeff King",
        "email": "peff@peff.net",
        "time": "Sat Apr 04 01:42:11 2026 -0400"
      },
      "committer": {
        "name": "Junio C Hamano",
        "email": "gitster@pobox.com",
        "time": "Mon Apr 06 08:22:57 2026 -0700"
      },
      "message": "git-compat-util: fix CONST_OUTPARAM typo and indentation\n\nThere\u0027s a typo in the comment, making it hard to understand. And the\nmacro itself is indented with spaces rather than tab.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n"
    }
  ],
  "next": "fc2a6741f71c71ddc7e1cc71c8f6289fcda2ff2d"
}
