)]}'
{
  "log": [
    {
      "commit": "dbf1ab7c921953295cc90b1dfd90bc920b6ad07a",
      "tree": "12ebc2926686b8f1b681db50ee75c68b37033739",
      "parents": [
        "006043c739a53cd75f817f72e7efa5eecb062b82",
        "39f918d5cf4f2543ed0c93778e8664654b76e354"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 12 23:37:10 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue May 12 23:37:10 2026 +0000"
      },
      "message": "Merge changes I4aeff18a,I9cefb1ed\n\n* changes:\n  Pack/PackMidx: mark as @Nullable methods that deserve it\n  PackMidx: Style fixes like unused throws\n"
    },
    {
      "commit": "006043c739a53cd75f817f72e7efa5eecb062b82",
      "tree": "5117e02576be1069d9b8a131610ea86eab96814e",
      "parents": [
        "e6789e5096587cbc036a1f6187a6bd6cc9c8aaf9",
        "990df013b5453c81b77e6caf035204840ee5468b"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 12 23:32:25 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue May 12 23:32:25 2026 +0000"
      },
      "message": "Merge \"Revert \"DfsPackCompactor: Accept DfsPackDescription as input\"\""
    },
    {
      "commit": "990df013b5453c81b77e6caf035204840ee5468b",
      "tree": "1b38669839436476f9e54a14644ef50f5f958bf5",
      "parents": [
        "7ee50b61a2284f216fb51fcb961722a013563630"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 12 22:43:16 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue May 12 22:43:16 2026 +0000"
      },
      "message": "Revert \"DfsPackCompactor: Accept DfsPackDescription as input\"\n\nThis reverts commit 7ee50b61a2284f216fb51fcb961722a013563630.\n\nReason for revert: This is not saving any memory. The references to the packs are alive until the actual writing.\n\nChange-Id: I7316d8a4487da3830df4154255f7cf7aecaa7df4\n"
    },
    {
      "commit": "39f918d5cf4f2543ed0c93778e8664654b76e354",
      "tree": "fa2804f46e1c94782dc9f48c6ca311c81670ea1f",
      "parents": [
        "a7ef2f5cc6bc83ee9a6eef61daeb2d0bcdfec540"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 20 12:25:51 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 12 15:35:28 2026 -0700"
      },
      "message": "Pack/PackMidx: mark as @Nullable methods that deserve it\n\nReported by analyzers in the PackMidx. Added the annotations also to\nthe superclass.\n\nChange-Id: I4aeff18a2376d6a490a817e18c3a632c6a6a6964\n"
    },
    {
      "commit": "a7ef2f5cc6bc83ee9a6eef61daeb2d0bcdfec540",
      "tree": "eb770b1686648aa70347408c3844cbab8c909eb6",
      "parents": [
        "e6789e5096587cbc036a1f6187a6bd6cc9c8aaf9"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 20 12:13:04 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 12 15:35:28 2026 -0700"
      },
      "message": "PackMidx: Style fixes like unused throws\n\nMinor style fixes reported by analyzers:\n\nRemove unnecessary override.\nRemove throws of exceptions that are not thrown.\nAvoid RuntimeException (using UncheckedIOException instead)\n\nChange-Id: I9cefb1edb696f6ac4cd1b22cec1cb45a6a6a6964\n"
    },
    {
      "commit": "e6789e5096587cbc036a1f6187a6bd6cc9c8aaf9",
      "tree": "c1538cabd2346e79d20bf3f05c76ffe95c5419eb",
      "parents": [
        "ebb620938605780e61835d7e2826993d8122f59e",
        "87b09ec388f056c8b4ed9708d0713808511c83ef"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue May 12 20:28:15 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue May 12 20:28:15 2026 +0000"
      },
      "message": "Merge changes I7293790f,I589c2aca\n\n* changes:\n  Update urllib3 to at least 2.7.0 to fix CVE-2026-44432\n  Update python used to deploy release to maven central to 3.14\n"
    },
    {
      "commit": "87b09ec388f056c8b4ed9708d0713808511c83ef",
      "tree": "24186e0d527310110953425cde9dd005e0e1c099",
      "parents": [
        "a32f71a9d2567df68a180d41c2c2c02a6409412d"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue May 12 10:01:53 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue May 12 10:01:53 2026 +0200"
      },
      "message": "Update urllib3 to at least 2.7.0 to fix CVE-2026-44432\n\nSee https://github.com/advisories/GHSA-mf9v-mfxr-j63j\n\nChange-Id: I7293790fb36fffe72de495a1ea8bba4e9af793b0\n"
    },
    {
      "commit": "a32f71a9d2567df68a180d41c2c2c02a6409412d",
      "tree": "5d1cefd67e3e80a0188909bb21e9079d92463f9e",
      "parents": [
        "7ee50b61a2284f216fb51fcb961722a013563630"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue May 12 09:50:30 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue May 12 09:50:30 2026 +0200"
      },
      "message": "Update python used to deploy release to maven central to 3.14\n\nChange-Id: I589c2aca206688219b268af51f4c2611dedb28ff\n"
    },
    {
      "commit": "ebb620938605780e61835d7e2826993d8122f59e",
      "tree": "dc0151bb5303c049c76b1533d1061f3bd9632eef",
      "parents": [
        "7ee50b61a2284f216fb51fcb961722a013563630",
        "c16e26688f5c577298b168732e2519976697448a"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:49:22 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:49:22 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027\n\n* stable-7.6:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: Iff1e4cc4f13b63d3fb3bc86dec0b69a1e49cd118\n"
    },
    {
      "commit": "c16e26688f5c577298b168732e2519976697448a",
      "tree": "5ba03fab862792d55256fb4e6ea94f0d78272207",
      "parents": [
        "76169bd56309a7e00fc0f9439a5948b033c1a0fb",
        "50e43d2c4c7525fc39f60fc6e0f90e4fae693165"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:46:05 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:46:05 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: I1a6a5ed82b0bba1c40a4a59b2760562cb519ec28\n"
    },
    {
      "commit": "50e43d2c4c7525fc39f60fc6e0f90e4fae693165",
      "tree": "350a7b0be94006d3321d7273e37a9042278d3d83",
      "parents": [
        "016abe17e53c2d171128c0b09d49319e468d6e00",
        "faa32cb22502e1f756130c3427e0e03458e5dfc1"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:44:28 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:44:28 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: If0390a74448357ab587d528fbc669f8652b8c084\n"
    },
    {
      "commit": "faa32cb22502e1f756130c3427e0e03458e5dfc1",
      "tree": "056b816fdaa800cb7b4cd3c080609e623bf9d5db",
      "parents": [
        "6efc805ee12f3c891a3d38b082eb08156c826cfa",
        "a2c9827ede4ed392dfc02a00ee8cc4d86b09771f"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:43:33 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:43:33 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.3\u0027 into stable-7.4\n\n* stable-7.3:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: Iea6e31d93cee0679e79bebcc8234688ea7f695f4\n"
    },
    {
      "commit": "a2c9827ede4ed392dfc02a00ee8cc4d86b09771f",
      "tree": "29c89a5ad58e1184a2b99ecf9cebedea18b0f7f2",
      "parents": [
        "d7d4a023cafb9820b0c668cb020e9015a3216b86",
        "9ded9a10df5d880fbdc54ebce95ef83b0e4c33a6"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:42:35 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:42:35 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.2\u0027 into stable-7.3\n\n* stable-7.2:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: Ic6ab3d3a2b5bf028e3dfa56f6573d96cefa84b4e\n"
    },
    {
      "commit": "9ded9a10df5d880fbdc54ebce95ef83b0e4c33a6",
      "tree": "5521a32c912a2ce7497ca6878e887b34bb590af6",
      "parents": [
        "cda05cf39593db89f4a410db56cca50d428bd21c",
        "6f113ea23e450f3f3126371b67baacba7833ae74"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:41:40 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:41:40 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.1\u0027 into stable-7.2\n\n* stable-7.1:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: I3fc65d7b3f6a379bf6eed93b796c4e855d36f043\n"
    },
    {
      "commit": "6f113ea23e450f3f3126371b67baacba7833ae74",
      "tree": "60018a336d29f732fd1fa0f072ef8c5d8fed1063",
      "parents": [
        "2d6dd4ffea9bee301da241a2d29709f6b64af067",
        "7ccc9cccd5f2fb4b106c50d7817ac31e79a40eec"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:40:35 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:40:35 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.0\u0027 into stable-7.1\n\n* stable-7.0:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: Iff8ad4ef00a389e0708d354c2f239392d64355d3\n"
    },
    {
      "commit": "7ccc9cccd5f2fb4b106c50d7817ac31e79a40eec",
      "tree": "1e20b29e4ad77d21ed86a4d002c7aaf5b27b3f37",
      "parents": [
        "edda0df0f68414169c5352d6d22e4a26f101b81c",
        "1ac5210cbe8aa5d5ca2fc19d4f7c1fa18a8bf59e"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:37:51 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 12 09:37:51 2026 +0200"
      },
      "message": "Merge branch \u0027stable-6.10\u0027 into stable-7.0\n\n* stable-6.10:\n  TestProtocolTest: Cover additional fetch edge cases\n  FetchProcess: Report lock failure when destination ref changes\n  Add regression test on non-forced fetch and local updates\n\nChange-Id: I0a249b2e8df66894646c669d945509cd306bfadd\n"
    },
    {
      "commit": "7ee50b61a2284f216fb51fcb961722a013563630",
      "tree": "9f69d390c48ba9b7b167de9939990523321ac3c5",
      "parents": [
        "e629e9e490b30c47ccbd4e0595ab7ace86595150"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon May 04 14:36:02 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 08 16:47:48 2026 -0700"
      },
      "message": "DfsPackCompactor: Accept DfsPackDescription as input\n\nDfsPackFile keeps a reference to its index and keeps it alive until\ncompact is done. With DfsPackDescriptions, we can create the\nDfsPackFile on demand and discard it as soon as we are done with\nit. This helps to reduce peak memory consumption when compacting lots\nof packs.\n\nAccept DfsPackDescriptions as input. Callers can use the compactor\nwith DfsPackFile/DfsReftables OR with DfsPackDescriptions, but not\nboth.\n\nChange-Id: I40ee21eaf080dab5458242fcaf43e2d16a6a6964\n"
    },
    {
      "commit": "e629e9e490b30c47ccbd4e0595ab7ace86595150",
      "tree": "1b38669839436476f9e54a14644ef50f5f958bf5",
      "parents": [
        "11c702b22c2220f7f2d6de95efc30f6c030cd3a7"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon May 04 14:36:02 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 08 16:47:38 2026 -0700"
      },
      "message": "DfsPackFileMidx tests: Compare byte[] for checksum\n\nWe cannot precalculate the checkum of the midx, because it includes\nthe file names and these change between tests. The test validates that\nthe first 4 bytes are not the header (MIDX), so at least we are not\nreading from the beginning of the buffer. It compares 4 bytes\nindependently and we run the risk of finding them by chance in the\nactual checksum.\n\nCompare the 4 bytes as array, so we fail only if the 4 of them match.\n\nChange-Id: Id26a7722bb564670db68dc3102b38f8b6a6a6964\n"
    },
    {
      "commit": "1ac5210cbe8aa5d5ca2fc19d4f7c1fa18a8bf59e",
      "tree": "732abcb39a3a94b4dbac6396ceca77b06413f257",
      "parents": [
        "189b33dcbfd39fcfb3a671dcb323d29418b86875"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun May 03 12:38:15 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 08 09:33:52 2026 +0000"
      },
      "message": "TestProtocolTest: Cover additional fetch edge cases\n\nAdd regression tests covering additional fetch update scenarios,\nincluding concurrent destination ref updates and non-fast-forward\nrejections.\n\nCover forced fetches where the destination ref is deleted or already\npoints to the fetched object, both of which should report LOCK_FAILURE\nbecause the ref no longer matches the expected old object ID.\n\nCover non-forced fetches where the concurrent update is still\nfast-forwardable, which should also report LOCK_FAILURE, and where the\ncurrent ref is unchanged but the incoming update is non-fast-forward,\nwhich should report REJECTED.\n\nBug: jgit-252\nChange-Id: I676f2dd5447fa44a525f96f7fce9aa5cf6760dbf\n"
    },
    {
      "commit": "11c702b22c2220f7f2d6de95efc30f6c030cd3a7",
      "tree": "29d928e956154c990af36806d9b7eb2538fe35c1",
      "parents": [
        "0a90d00b2be07d73ff16dd7d3a200bf13bdccb54",
        "89db89e6e28420aada8a10ce5d3d444cd0267a78"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed May 06 20:17:39 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed May 06 20:17:39 2026 +0000"
      },
      "message": "Merge \"MidxWriter: List instead of Collection and method references\""
    },
    {
      "commit": "0a90d00b2be07d73ff16dd7d3a200bf13bdccb54",
      "tree": "267bbfeb402b4a042e5eecca4319d41b09504722",
      "parents": [
        "a5b6bd57b5b6ca0e9059216508e57241b41c88cb"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue May 05 16:39:19 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed May 06 11:47:45 2026 -0700"
      },
      "message": "DfsPackCompacterTest: Add test for compacting only data in a pack\n\nThe compactor receives independently data (DfsPackFile) and reftables\n(DfsReftable) for compaction. In storage, both things can be in the\nsame physical pack, and that pack should only be deleted if ALL its\ncontents have been compacted.\n\nThe compactor do the right thing in toPrune(), but we didn\u0027t have a\ntest covering it. Add one.\n\nChange-Id: Id74c8f32b5f0bb625f7e8f04a986f4b86a6a6964\n"
    },
    {
      "commit": "189b33dcbfd39fcfb3a671dcb323d29418b86875",
      "tree": "3a9b5394de7a6e04a285ef6ece10c2f6ef24af8a",
      "parents": [
        "5b298ebe23794afcce3205925d3538e41d9afa86"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 05 14:50:31 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue May 05 14:50:31 2026 +0200"
      },
      "message": "FetchProcess: Report lock failure when destination ref changes\n\nSnapshot local refs before opening the fetch connection so\n`TrackingRefUpdate`s use the value populated when the fetch starts as\ntheir expected old object ID.\n\nBefore this change, local refs were loaded lazily while processing\n\"wants\". If another process changed or created the destination ref after\nthe fetch started but before that lazy read, JGit used the newer local\nvalue as the expected old object ID. The final ref update could then\nsucceed and overwrite the concurrent local change.\n\nLoad the local ref snapshot before the remote fetch connection is\nopened. Concurrent destination ref changes now make the expected old\nobject ID differ from the current ref value, causing the update to\nreport LOCK_FAILURE instead of clobbering the newer local ref.\n\nThe tests trigger the race condition by using TestProtocol.registerProto(...)\nwith a custom UploadPackFactory. The factory updates the local\ndestination ref immediately before returning the UploadPack, which\nplaces the concurrent local change after FetchProcess starts but\nbefore it finishes building the TrackingRefUpdate.\n\nBug: jgit-252\nChange-Id: Ib46363251862a7018c60bd4c36f003d267f354d5\n"
    },
    {
      "commit": "89db89e6e28420aada8a10ce5d3d444cd0267a78",
      "tree": "1d9f7e836a31b0b914b980561dd322f928bf71fb",
      "parents": [
        "a5b6bd57b5b6ca0e9059216508e57241b41c88cb"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 20 11:58:12 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon May 04 14:00:01 2026 -0700"
      },
      "message": "MidxWriter: List instead of Collection and method references\n\nFixing minor warnings on this file:\n\n* Variable type can use a more specific type to convey\nmore information to callers. (Use List instead of Collection)\n\n* Use method reference instead of lambda\n\nChange-Id: I21875deef9c8697d37795971d8e34f6a6a6a6964\n"
    },
    {
      "commit": "5b298ebe23794afcce3205925d3538e41d9afa86",
      "tree": "dc94efe407aa88b00c5ff4579ba0a046c05111a8",
      "parents": [
        "804e29be9384917b9e15c96f0f92520f66732316"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 01 18:07:33 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon May 04 13:40:43 2026 +0000"
      },
      "message": "Add regression test on non-forced fetch and local updates\n\nWhen a non-forced fetch is executed concurrently with a local\nref update, the operation should fail with a REJECTED reason\nif the fetched ref is not a fast-forward update of the locally\nupdated ref.\n\nThis is a preparation work for the fix of fetch concurrency\nwith local ref-updates, for ensuring the non-regression of existing\nnot-forced fetch operations.\n\nBug: jgit-252\nChange-Id: I2a9b444a04a06d5a034a940abb0603f50e23c45a\n"
    },
    {
      "commit": "a5b6bd57b5b6ca0e9059216508e57241b41c88cb",
      "tree": "2773bf7fce10f67c61eef50a6fd57f10658a6b56",
      "parents": [
        "6b6d7449f169b300b0b7476a2c43dd5e0d7c1a4d",
        "2b2c724a0a132262787543ac1bed9623b7563aaa"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 03 17:56:15 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 03 17:56:15 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Prepare 7.7.0-SNAPSHOT builds\n  JGit v7.7.0.202604291911-m2\n\nChange-Id: Ic07f7149e1bbc63b57b24709582fce3b8ca8331d\n"
    },
    {
      "commit": "2b2c724a0a132262787543ac1bed9623b7563aaa",
      "tree": "fffb8da6f031f4c14c3b5e7335a96ba15a123ad9",
      "parents": [
        "60c64e8c4493f20bbe81d37b05e494e9aaa81826"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 03 17:55:26 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 03 17:55:26 2026 +0200"
      },
      "message": "Prepare 7.7.0-SNAPSHOT builds\n\nChange-Id: I0fc78c6cc1bfc5215bb3734fb6ef3edb6dbe55a7\n"
    },
    {
      "commit": "6b6d7449f169b300b0b7476a2c43dd5e0d7c1a4d",
      "tree": "2773bf7fce10f67c61eef50a6fd57f10658a6b56",
      "parents": [
        "013607a9035fdb7c6e9905cdd0889e10ca884cac"
      ],
      "author": {
        "name": "Ric Harris",
        "email": "harris_ric@hotmail.com",
        "time": "Wed Apr 08 20:37:20 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 03 12:24:51 2026 +0200"
      },
      "message": "PullResult: Improve toString by implementing for children.\n\nAdd toString for FetchResult and RebaseResult which are relied on by\nPullResult. Also added toString to Status to aid logging/debugging.\n\nBug: jgit-256\nChange-Id: I35ff4918d59938490f429238948c43c5726947a1\n"
    },
    {
      "commit": "013607a9035fdb7c6e9905cdd0889e10ca884cac",
      "tree": "0f5d2b2e7c9eafde2f158dbc1611bd6eaf5d6810",
      "parents": [
        "6f8b6c57d056cca302218caacf463d363fa9caf7",
        "2ababeaca7bb38e69b8bd96354b7c927735959c4"
      ],
      "author": {
        "name": "Martin Fick",
        "email": "mfick@nvidia.com",
        "time": "Thu Apr 30 21:57:03 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 30 21:57:03 2026 +0000"
      },
      "message": "Merge \"pack-refs: Add fully-peeled flag\""
    },
    {
      "commit": "6f8b6c57d056cca302218caacf463d363fa9caf7",
      "tree": "30b23a54210d20462abf7d2f3b00fd094950e8e4",
      "parents": [
        "0b126c2e2636716b2d9fd17fcf58e7478d72bc53",
        "f573569a2601ad9d0453d956a75dfa33600aca24"
      ],
      "author": {
        "name": "Martin Fick",
        "email": "mfick@nvidia.com",
        "time": "Thu Apr 30 21:56:50 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 30 21:56:50 2026 +0000"
      },
      "message": "Merge \"pack-refs: Fix buggy way of marking peeled trait\""
    },
    {
      "commit": "2ababeaca7bb38e69b8bd96354b7c927735959c4",
      "tree": "9e8465107d7a9d1ee6cf1b283a5461c047634429",
      "parents": [
        "f573569a2601ad9d0453d956a75dfa33600aca24"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Jan 29 12:43:36 2026 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Apr 30 15:17:16 2026 -0500"
      },
      "message": "pack-refs: Add fully-peeled flag\n\npacked-refs are already fully peeled by jgit when written.\nBut that trait is not written to the file. Preserve fully\npeeled trait when it is already present so that cgit\ndoesn\u0027t do extra work.\n\nAdd coverage to verify header contents and peeled tag state.\n\nChange-Id: I6529dedefff07a7131f5d406c1adf813ac2b953a\n"
    },
    {
      "commit": "f573569a2601ad9d0453d956a75dfa33600aca24",
      "tree": "da359e95d227babb1283bbd0870e6958b35a8a9f",
      "parents": [
        "505ef1488bb31e300438424e8ca8845d1b3092ab"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 15:46:44 2026 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Apr 30 15:07:03 2026 -0500"
      },
      "message": "pack-refs: Fix buggy way of marking peeled trait\n\nOnly the first peeled ref was considered when marking the packed-refs\nfile as peeled. Correct it to include the peeled trait if it is a new\npacked-refs file or if that trait was previously specified.\n\nRefWriter class is marked deprecated and continue to have this buggy\nbehavior since it provides a cleaner upgrade path by not changing\nanything for existing users depending on it. Users should migrate to use\nnew PackedRefsWriter class which also optimizes to apply all the traits\nbefore writing.\n\nThe other upgrade options considered were:\n1. Update the writePackedRefs method to fix the bug and only add the\n   \"sorted\" trait. This prevents exposing the \"peeled\" trait to\n   users, though it may introduce performance penalties since future\n   reads can no longer assume refs/tags are peeled and may need to\n   check.\n2. Fix the writePackedRefs method so it ensures all refs/tags are\n   peeled. This adds a performance cost for the callers.\n\nIf there is a later agreement, we can implement them as follow up\nchanges.\n\nChange-Id: Ia4d5b4eb44f82ff3a422d3e871be19db3c231095\n"
    },
    {
      "commit": "0b126c2e2636716b2d9fd17fcf58e7478d72bc53",
      "tree": "72310ba84193628d8868f43f25d6cded1cc644bb",
      "parents": [
        "df83258118f7403fa295c86f876a1fdb4c4c4ccd",
        "505ef1488bb31e300438424e8ca8845d1b3092ab"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 19:59:05 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 30 19:59:05 2026 +0000"
      },
      "message": "Merge changes I70ea453e,Ie1ad33b5,If3a54610\n\n* changes:\n  pack-refs: Correctly define peeled trait\n  parse-packed-refs: Check to sort only when header is not present\n  pack-refs: Always add sorted trait\n"
    },
    {
      "commit": "df83258118f7403fa295c86f876a1fdb4c4c4ccd",
      "tree": "3e3dc7ba648a98fe40dcc6c939f26398b657ab81",
      "parents": [
        "5add9f593651171ed708595c1dbfed32f4c4f2ab",
        "76169bd56309a7e00fc0f9439a5948b033c1a0fb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:24:07 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:24:07 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027\n\n* stable-7.6:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: I1f82733115194bf78d7fe3ab128bfd522f2863d5\n"
    },
    {
      "commit": "76169bd56309a7e00fc0f9439a5948b033c1a0fb",
      "tree": "52244a13559a65c715af6f799926eb7828724582",
      "parents": [
        "585de8e312709303fcbf98aa460c18a3ae4c67fa",
        "016abe17e53c2d171128c0b09d49319e468d6e00"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:23:30 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:23:30 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: Ia6822f38dcc05f7f272efcf39153ad7964c0d76f\n"
    },
    {
      "commit": "016abe17e53c2d171128c0b09d49319e468d6e00",
      "tree": "f8264bc7aa4f44c1707023b64e9a95deb872db8a",
      "parents": [
        "0db19138143754cb91a11e6348497cc5b99a6008",
        "6efc805ee12f3c891a3d38b082eb08156c826cfa"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:22:51 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:22:51 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: I3c5ca5585a6002f9bc5fbb4092d6d886b4b1237c\n"
    },
    {
      "commit": "6efc805ee12f3c891a3d38b082eb08156c826cfa",
      "tree": "a84c37da380fa8e4d68233b95280e11696da2587",
      "parents": [
        "4189f39fbcf081d6925c6b58ea2c52a7539138ed",
        "d7d4a023cafb9820b0c668cb020e9015a3216b86"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:21:57 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:21:57 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.3\u0027 into stable-7.4\n\n* stable-7.3:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: Ia64973c045fd44ba4c80671cf1430d53c8d5a54d\n"
    },
    {
      "commit": "d7d4a023cafb9820b0c668cb020e9015a3216b86",
      "tree": "916d1321dca8c6e1e5583bff6b7b3f856b4ea4b0",
      "parents": [
        "85b454b811b23261979ccd55c331e1ad1406e693",
        "cda05cf39593db89f4a410db56cca50d428bd21c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:21:26 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:21:26 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.2\u0027 into stable-7.3\n\n* stable-7.2:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: Ie4ff8283525c1b8eefc0ac9152e03a59f027c8d8\n"
    },
    {
      "commit": "cda05cf39593db89f4a410db56cca50d428bd21c",
      "tree": "020b0a7205a0f58a9b070efc64eb3219f8380917",
      "parents": [
        "6b8d2a5b00895141323164cdd0ec1f94f9798cd5",
        "2d6dd4ffea9bee301da241a2d29709f6b64af067"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:13:21 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 13:13:21 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.1\u0027 into stable-7.2\n\n* stable-7.1:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: Ie858c2ae60ad4bbc459001806a534e14d264d823\n"
    },
    {
      "commit": "2d6dd4ffea9bee301da241a2d29709f6b64af067",
      "tree": "34808e46f014ed58d4b3915b74ecba7a9a81f4b3",
      "parents": [
        "052c4117cd3ad45388f09205d1fa5af29b1448c1",
        "edda0df0f68414169c5352d6d22e4a26f101b81c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 12:53:57 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 12:53:57 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.0\u0027 into stable-7.1\n\n* stable-7.0:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: I875138e0b393094945f71bff56e4d7b556e93443\n"
    },
    {
      "commit": "edda0df0f68414169c5352d6d22e4a26f101b81c",
      "tree": "7aa27d0c59da8319b0aa9cb4a55986d4038d97d8",
      "parents": [
        "4eb080250ae1bbded00a50b6e81a6c29bf25cd12",
        "804e29be9384917b9e15c96f0f92520f66732316"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 09:46:19 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 30 09:46:19 2026 +0200"
      },
      "message": "Merge branch \u0027stable-6.10\u0027 into stable-7.0\n\n* stable-6.10:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nChange-Id: I154567ebaed5eedcd9dde58dbcda5813a0a32c36\n"
    },
    {
      "commit": "5add9f593651171ed708595c1dbfed32f4c4f2ab",
      "tree": "3e3dc7ba648a98fe40dcc6c939f26398b657ab81",
      "parents": [
        "f23d73e2cf565f3fbafdabbb225b722ba9eacbd4",
        "a11c519848277527d6094e29fa3d5f3335e4e7fa"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 29 20:49:04 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Apr 29 20:49:04 2026 +0000"
      },
      "message": "Merge \"gitrepo: update git-repo URL in javadocs\""
    },
    {
      "commit": "a11c519848277527d6094e29fa3d5f3335e4e7fa",
      "tree": "047cae81f6a616a1b0b7ede7f3fd3aac09313800",
      "parents": [
        "a17c4aa421c99bbc248750635cf8a9a527081bfb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 29 02:43:38 2026 -0400"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 29 20:48:18 2026 +0000"
      },
      "message": "gitrepo: update git-repo URL in javadocs\n\nChange-Id: I5d2b06c27fbbd83f9d54bdb83e040a8212da02ed\n"
    },
    {
      "commit": "60c64e8c4493f20bbe81d37b05e494e9aaa81826",
      "tree": "af60c5e8a1eb835b03b8e1dd4a117461034aa83d",
      "parents": [
        "4c82d983d2837ff7263246f97911ef5f0e7faed2"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 29 21:12:01 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 29 21:12:01 2026 +0200"
      },
      "message": "JGit v7.7.0.202604291911-m2\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I3e9b1952410cee37d13680911ba49021388ec123\n"
    },
    {
      "commit": "4c82d983d2837ff7263246f97911ef5f0e7faed2",
      "tree": "fffb8da6f031f4c14c3b5e7335a96ba15a123ad9",
      "parents": [
        "8fe0aced6a4047f7ac4c2960e74dd665780bec40",
        "f23d73e2cf565f3fbafdabbb225b722ba9eacbd4"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 29 20:56:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 29 20:56:32 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.7\n\n* master:\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n  ReceivePack: Add missing @since tag for new API method\n  TreeWalkConnectivityChecker: Support non-commit objects in refs\n  ReceivePack: make getClientShallowCommits protected\n  DfsObjDatabase: Make createDfsPackFile public\n  DfsPackCompactor: add a pre-commit hook to plug midx calculation\n  Update bouncycastle to 1.84\n  [ssh] Reject host certificates if the certified key is revoked\n  Add new TreeWalkConnectivityChecker\n  Make the PackParser.needNewObjectIds method public\n  orbit: update org.apache.ant to 1.10.17.v20260410-1000\n  MidxMetadataReader: add private constructor and adjust method visibility\n  MidxWriter: Write to tmp files and use atomic rename to commit\n  Instrument ReceivePack to track time spent in pre-receive hooks\n  MidxWriter: Do not accept midx to build new midx\n  PackDirectory: Integrate Multi-Pack Index (MIDX) support\n  PackMidx: A Pack subclass that uses midx\n\nChange-Id: I5fd4c34673abaecf0db805cfd9383a4feb5028f9\n"
    },
    {
      "commit": "804e29be9384917b9e15c96f0f92520f66732316",
      "tree": "1c36873888da2e9ef0df35f73e170da41b21e98e",
      "parents": [
        "d0a5242062823dc8297b80e1876c1eb6a00fd164"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Apr 28 14:01:41 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 29 18:55:16 2026 +0000"
      },
      "message": "RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nWe observed that newly generated Gerrit auth tokens weren\u0027t visible on\nall pods in an HA deployment of k8s-gerrit.\n\nI debugged resolving loose user refs with core.trustStat \u003d after_open\nand found that we refresh the attributes of all the directories above a\nloose ref by opening an inputstream but we don\u0027t do this on the\nloose ref itself.  It looks like this could cause the issue we observed.\n\nIn the example I debugged it was the user ref refs/users/00/10000000 and\nI found that the attributes of the directories\n  refs/\n  refs/users/\n  refs/users/00\nwere refreshed but the loose ref itself\n  refs/users/00/10000000\nwas not refreshed.\n\nFix this by also opening the ref\u0027s file itself if refreshing its parent\ndirectories succeeded.\n\nChange-Id: I37aaca2a1f448ca9a1caa325a0c18952cc023121\n(cherry picked from commit f23d73e2cf565f3fbafdabbb225b722ba9eacbd4)\n"
    },
    {
      "commit": "f23d73e2cf565f3fbafdabbb225b722ba9eacbd4",
      "tree": "fffb8da6f031f4c14c3b5e7335a96ba15a123ad9",
      "parents": [
        "a17c4aa421c99bbc248750635cf8a9a527081bfb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Apr 28 14:01:41 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Apr 28 14:29:25 2026 +0200"
      },
      "message": "RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\n\nWe observed that newly generated Gerrit auth tokens weren\u0027t visible on\nall pods in an HA deployment of k8s-gerrit.\n\nI debugged resolving loose user refs with core.trustStat \u003d after_open\nand found that we refresh the attributes of all the directories above a\nloose ref by opening an inputstream but we don\u0027t do this on the\nloose ref itself.  It looks like this could cause the issue we observed.\n\nIn the example I debugged it was the user ref refs/users/00/10000000 and\nI found that the attributes of the directories\n  refs/\n  refs/users/\n  refs/users/00\nwere refreshed but the loose ref itself\n  refs/users/00/10000000\nwas not refreshed.\n\nFix this by also opening the ref\u0027s file itself if refreshing its parent\ndirectories succeeded.\n\nChange-Id: I37aaca2a1f448ca9a1caa325a0c18952cc023121\n"
    },
    {
      "commit": "505ef1488bb31e300438424e8ca8845d1b3092ab",
      "tree": "9c77219376034c4362eeb60ed481edae9a9716ca",
      "parents": [
        "9de1c59281380f512f36b800c5fc4f6fff85c00f"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 13:48:12 2026 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Apr 27 23:09:33 2026 +0000"
      },
      "message": "pack-refs: Correctly define peeled trait\n\ncgit defines the peeled trait accordingly:\n\n References under \"refs/tags/\", if they *can* be peeled, *are*\n peeled in this file. References outside of \"refs/tags/\" are\n probably not peeled even if they could have been, but if we find\n a peeled value for such a reference we will use it.\n\nCorrect the parsing to have missing refs/tags/ check to be defined\nas PeeledNonTag.\n\nChange-Id: I70ea453ecc89cebef488c64e64f1e70526a003b3\n"
    },
    {
      "commit": "a17c4aa421c99bbc248750635cf8a9a527081bfb",
      "tree": "ba470b0ae64c50cf1213a684f0f2f298553e8166",
      "parents": [
        "08212048ea16f25e7f748072a162a7ae77c21b87"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 23 08:31:13 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 23 08:31:13 2026 +0200"
      },
      "message": "ReceivePack: Add missing @since tag for new API method\n\nChange-Id: I3251799d8361666e000ea089798f8d8575b70cd7\n"
    },
    {
      "commit": "08212048ea16f25e7f748072a162a7ae77c21b87",
      "tree": "fbb4c099169e14ca1a578df01058c1197bf3c437",
      "parents": [
        "23bec76f5be8e774d274f6c93239990b2619d0bf"
      ],
      "author": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Wed Apr 22 05:17:35 2026 +0000"
      },
      "committer": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Wed Apr 22 05:30:17 2026 +0000"
      },
      "message": "TreeWalkConnectivityChecker: Support non-commit objects in refs\n\nRunning in shadow mode in production turned up the case of the reference\ndatabase containing references to annotated tags and other non-commit\nobjects. Fixed that and added tests.\n\nChange-Id: I7f1029e2512c96500658d9556d7c7d7c2753c817\n"
    },
    {
      "commit": "23bec76f5be8e774d274f6c93239990b2619d0bf",
      "tree": "09894aaa354e55a497162d7986e817042d4d2040",
      "parents": [
        "8ae361f895cfbea64f5a6490821297825ac91302"
      ],
      "author": {
        "name": "Laura Hamelin",
        "email": "haowl@google.com",
        "time": "Tue Apr 21 23:28:07 2026 +0000"
      },
      "committer": {
        "name": "Laura Hamelin",
        "email": "haowl@google.com",
        "time": "Tue Apr 21 23:29:15 2026 +0000"
      },
      "message": "ReceivePack: make getClientShallowCommits protected\n\nThis allows classes extending ReceivePack to check\nif there were any shallow commits in the push.\n\nChange-Id: Ia829a84ebe7d3d264a8d09d5274958814e752256\n"
    },
    {
      "commit": "8ae361f895cfbea64f5a6490821297825ac91302",
      "tree": "b43bab5444429d4215b4463383a7cbeaedf5f895",
      "parents": [
        "228463b0f5ddd2cf771cdd6dfe2f9fb8aff660d0",
        "c3c676c08e8d6a6d0413e2522bc120bfe05625bf"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 23:01:32 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Apr 21 23:01:32 2026 +0000"
      },
      "message": "Merge \"DfsObjDatabase: Make createDfsPackFile public\""
    },
    {
      "commit": "228463b0f5ddd2cf771cdd6dfe2f9fb8aff660d0",
      "tree": "3db31a5748cf8b6e48e060c9dbf1fd283e431855",
      "parents": [
        "99285ff6320506f2e430ac411462619da1b1655b",
        "ebf860ed6e100c360e98ce7fbc7dda6e8051f88b"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 23:00:56 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Apr 21 23:00:56 2026 +0000"
      },
      "message": "Merge \"DfsPackCompactor: add a pre-commit hook to plug midx calculation\""
    },
    {
      "commit": "c3c676c08e8d6a6d0413e2522bc120bfe05625bf",
      "tree": "9f5720a9bf6bb356d1fc1cd8921d20106f4535ba",
      "parents": [
        "ebf860ed6e100c360e98ce7fbc7dda6e8051f88b"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 15:26:24 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 15:31:16 2026 -0700"
      },
      "message": "DfsObjDatabase: Make createDfsPackFile public\n\nThe implementations of DfsPackCompactor.PreReceiveHook need this\nmethod to open the new DfsPackDescriptions.\n\nChange-Id: I228ac3d9b356d14ca12ee91b7be76b4e6a6a6964\n"
    },
    {
      "commit": "ebf860ed6e100c360e98ce7fbc7dda6e8051f88b",
      "tree": "e565f17f80d1c7ba0c2d0fef21170e149a68d120",
      "parents": [
        "49b0e405fa49656def8d6a8bf2f7101e3a7bfd2a"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 14:23:45 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Apr 21 15:31:16 2026 -0700"
      },
      "message": "DfsPackCompactor: add a pre-commit hook to plug midx calculation\n\nThe compactor commits its packs, then we calculate the midx and commit\nit. Doing this in two transactions is asking for trouble as e.g. packs\ncould be deleted by a GC while writing the midx. We want to commit\nmidx with the resulting compact packs.\n\nAdd a hook to DfsPackCompactor so we can plug extra functionality\nbefore committing packs, like calculating the midx.\n\nChange-Id: I471fff63d0b6184384322e2c7860ba7b6a6a6964\n"
    },
    {
      "commit": "99285ff6320506f2e430ac411462619da1b1655b",
      "tree": "cd43468e0af2e7eff5c02477503639e3e2cc4376",
      "parents": [
        "49b0e405fa49656def8d6a8bf2f7101e3a7bfd2a",
        "b7bd2124c043aee04c7b806d1a3d3ad91d131ca0"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Tue Apr 21 20:56:37 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Apr 21 20:56:37 2026 +0000"
      },
      "message": "Merge \"[ssh] Reject host certificates if the certified key is revoked\""
    },
    {
      "commit": "49b0e405fa49656def8d6a8bf2f7101e3a7bfd2a",
      "tree": "b7ffe0bf27f719b354dd205075966d054fc02b77",
      "parents": [
        "02b34dc857a7a80fcf26b6d0a37a9592c7da7586",
        "3770397396cccfade928dae12e3217e8e51c7d69"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 20 16:05:37 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon Apr 20 16:05:37 2026 +0000"
      },
      "message": "Merge \"Add new TreeWalkConnectivityChecker\""
    },
    {
      "commit": "02b34dc857a7a80fcf26b6d0a37a9592c7da7586",
      "tree": "4f7ca3506cd8a6e7aa6177386e4428b7e33b4c46",
      "parents": [
        "2fcd6f49a81cc3e90c9689c33e532528ac1c0be6"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 15 17:04:44 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 20 11:18:09 2026 +0200"
      },
      "message": "Update bouncycastle to 1.84\n\nalso update the minimum version in MANIFEST.MF files to ensure we use\nthe latest version to avoid issue jgit-249 reoccurs.\n\nChange-Id: Ice1238fd4632828b96bedae7c560eadd19563e76\n"
    },
    {
      "commit": "b7bd2124c043aee04c7b806d1a3d3ad91d131ca0",
      "tree": "7f1947f9ff84e2c77b763bcacf2ca41cfe79dfcd",
      "parents": [
        "2fcd6f49a81cc3e90c9689c33e532528ac1c0be6"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Sat Apr 18 17:51:54 2026 +0200"
      },
      "committer": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Sat Apr 18 17:55:58 2026 +0200"
      },
      "message": "[ssh] Reject host certificates if the certified key is revoked\n\nCertificates were already rejected if the CA key was not found or\nrevoked. But it\u0027s also possible that the certificate is completely\nvalid but the certified key itself is listed as revoked.\n\nChange-Id: Ib488d7eaffa760e991ff0c46f13dfd11a20831e6\n"
    },
    {
      "commit": "3770397396cccfade928dae12e3217e8e51c7d69",
      "tree": "f2d5dddf82491404faa75bd7983d060ed551ff28",
      "parents": [
        "2fcd6f49a81cc3e90c9689c33e532528ac1c0be6"
      ],
      "author": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Mon Apr 06 18:10:52 2026 +0000"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Apr 17 00:40:46 2026 +0200"
      },
      "message": "Add new TreeWalkConnectivityChecker\n\nIntroduce a new TreeWalk-based connectivity checker that avoids object\nallocations that occur when doing graph coloring via ObjectWalks.\n\nData analysis shows that the work done by FullConnectivityChecker varies\nbased on the relationship the new pack\u0027s parent commit(s) to current\nbranch tips.\n\n1) When a current branch tip is a direct parent, the object walk colors\nO(objects in the new pack) nodes\n\n2) When a current branch tip has a shared parent, the object walk\ncolors O(tree objects in checkout) nodes\n\n3) Otherwise, the object walk colors O(all objects in checkout) nodes\n\nLarge repositories like the Chromium monorepo cause ObjectWalk-based\ncheckers to take \u003e10s for cases 2 and 3. Initial benchmarking shows the\nTreeWalk-based checker achieves 60x performance improvement for case 3.\n\nNote that this checker requires that PackParser records the new objects\nin the pack. It will throw an IllegalState exception if\nPackParser.needNewObjectIds() returns false.\n\nChange-Id: I149d62f13691fa14d4a3a8e899311a6abd3adea0\n"
    },
    {
      "commit": "2fcd6f49a81cc3e90c9689c33e532528ac1c0be6",
      "tree": "1cdf3535b33a8adcf287ee0da79d8e58c1a4048e",
      "parents": [
        "f3059631ceeb863af1559121f98d175bf66b2919",
        "d89e45b2e08385354cf52c7c8db9c9d335d4b077"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Apr 16 12:09:44 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 16 12:09:44 2026 +0000"
      },
      "message": "Merge \"Make the PackParser.needNewObjectIds method public\""
    },
    {
      "commit": "d89e45b2e08385354cf52c7c8db9c9d335d4b077",
      "tree": "e10a8efc24e106a9b6d565d151186dee8ae244e5",
      "parents": [
        "9bcb91c0106bf96e1d9bdd04eb0ff4b8be612b13"
      ],
      "author": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Thu Apr 16 05:41:33 2026 +0000"
      },
      "committer": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Thu Apr 16 05:42:27 2026 +0000"
      },
      "message": "Make the PackParser.needNewObjectIds method public\n\nChange-Id: I320ffcf102c54226cef0b832325c67895be4dbf7\n"
    },
    {
      "commit": "f3059631ceeb863af1559121f98d175bf66b2919",
      "tree": "29d479ae8984e3a8c4d54352434b7b13ca9ba8af",
      "parents": [
        "ce36c6cbed0e882537118d75398d0b9becf703b0",
        "f9d5dcfb096f3b9853fea4bb1b403cc2566215cc"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 15 22:34:20 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Apr 15 22:34:20 2026 +0000"
      },
      "message": "Merge \"orbit: update org.apache.ant to 1.10.17.v20260410-1000\""
    },
    {
      "commit": "f9d5dcfb096f3b9853fea4bb1b403cc2566215cc",
      "tree": "9367ac8d47210cead18c2363520c9908f1286f84",
      "parents": [
        "db23defdcef425d9b0f8c84550d9ef0d480edf65"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 15 17:03:49 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 15 17:03:49 2026 +0200"
      },
      "message": "orbit: update org.apache.ant to 1.10.17.v20260410-1000\n\nChange-Id: Ie16e4305f30d1398c5dd9269d189303836cc8afa\n"
    },
    {
      "commit": "ce36c6cbed0e882537118d75398d0b9becf703b0",
      "tree": "049b657513689bd8cd4327dcfe459cfa7299f0b0",
      "parents": [
        "db23defdcef425d9b0f8c84550d9ef0d480edf65"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 15 06:36:18 2026 -0700"
      },
      "message": "MidxMetadataReader: add private constructor and adjust method visibility\n\nFixes suggested by code style analyzer.\n\na. Private constructor as this is a class only with static methods and we\ndo not want instances.\n\nb. Methods are not really public (as the class is not)\n\nChange-Id: I3a3d502b388cbc413acec827740f306b6a6a6964\n"
    },
    {
      "commit": "db23defdcef425d9b0f8c84550d9ef0d480edf65",
      "tree": "32849ceb4b85fa4682dedcc22f39e997e841ee2d",
      "parents": [
        "227b1d4d123a487131efccaf4cd099ad30c84dc8"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 13 14:23:40 2026 -0700"
      },
      "message": "MidxWriter: Write to tmp files and use atomic rename to commit\n\nWrite the midx to a tmp file and atomically rename it to the\ndestination file to commit the write. This is a common pattern used in\ngit to prevent half-written files in case of trouble. Make also sure\nto delete the previous bitmaps\n\nChange-Id: Ifcf76a6ece513032873d9e673f10dfea6a6a6964\n"
    },
    {
      "commit": "227b1d4d123a487131efccaf4cd099ad30c84dc8",
      "tree": "3a42fb41796b37e53a4cb2b665cfaefbff26db21",
      "parents": [
        "e1532306e21acb2ca6a118d1274b5dbfd313dbc6",
        "b137d44581b2b078d9069c755a56e0a7a7315854"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 13 17:10:18 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon Apr 13 17:10:18 2026 +0000"
      },
      "message": "Merge \"Instrument ReceivePack to track time spent in pre-receive hooks\""
    },
    {
      "commit": "e1532306e21acb2ca6a118d1274b5dbfd313dbc6",
      "tree": "eca6667ff11c97528e0e6c742483e9f565b56855",
      "parents": [
        "9bcb91c0106bf96e1d9bdd04eb0ff4b8be612b13",
        "98a6a43dc518da202c07cd2c35788e8a8c1d5458"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Apr 13 17:06:50 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon Apr 13 17:06:50 2026 +0000"
      },
      "message": "Merge changes I66a12119,I71bab916,I1bd21340\n\n* changes:\n  MidxWriter: Do not accept midx to build new midx\n  PackDirectory: Integrate Multi-Pack Index (MIDX) support\n  PackMidx: A Pack subclass that uses midx\n"
    },
    {
      "commit": "b137d44581b2b078d9069c755a56e0a7a7315854",
      "tree": "1cd67ebb5759c972f2db029f24618ae0bfa804d3",
      "parents": [
        "9bcb91c0106bf96e1d9bdd04eb0ff4b8be612b13"
      ],
      "author": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Sat Apr 11 00:24:27 2026 +0000"
      },
      "committer": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Sat Apr 11 00:24:52 2026 +0000"
      },
      "message": "Instrument ReceivePack to track time spent in pre-receive hooks\n\nChange-Id: I3dc8b4d7a4c24e9503319693a70eb3b8d35afd7b\n"
    },
    {
      "commit": "9de1c59281380f512f36b800c5fc4f6fff85c00f",
      "tree": "c45cb6936ae740063131a5dd8ef7c479a6a09ecb",
      "parents": [
        "26328ec4425ed07f456fe7fc3c2eee200e8f0472"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 13:42:24 2026 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 19:51:12 2026 +0000"
      },
      "message": "parse-packed-refs: Check to sort only when header is not present\n\nDon\u0027t unnecesarily check if we need to sort when the packed-refs\nis already written with sorted trait.\n\nOn a project with ~3.4million refs, pack-refs -all has shown\n100ms improvement with this change.\n\nChange-Id: Ie1ad33b5615c28e866b938c636e45e65a2ed2f59\n"
    },
    {
      "commit": "26328ec4425ed07f456fe7fc3c2eee200e8f0472",
      "tree": "0331d63241a2a7fa5954dc24d02b342911cb68b8",
      "parents": [
        "6b47c561714515a32db13410baaad52fddb1912d"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 13:32:18 2026 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Apr 08 13:35:29 2026 -0500"
      },
      "message": "pack-refs: Always add sorted trait\n\nRefs are always sorted in jgit (while reading the packed-refs\nor while adding new refs to it). Skip the peeled check for\nwriting sorted trait.\n\nChange-Id: If3a54610bc51700268bc296238d9bb8bea49f932\n"
    },
    {
      "commit": "9bcb91c0106bf96e1d9bdd04eb0ff4b8be612b13",
      "tree": "aa971664dbef38ac23151ba819111359b0cab2e9",
      "parents": [
        "6b47c561714515a32db13410baaad52fddb1912d",
        "8fe0aced6a4047f7ac4c2960e74dd665780bec40"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 08 10:06:26 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 08 10:06:26 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Prepare 7.7.0-SNAPSHOT builds\n  JGit v7.7.0.202604061937-m1\n\nChange-Id: Ia4e33a9a4dcc2c0c21c0a7dd1217f10171edbe7a\n"
    },
    {
      "commit": "8fe0aced6a4047f7ac4c2960e74dd665780bec40",
      "tree": "aa971664dbef38ac23151ba819111359b0cab2e9",
      "parents": [
        "a71c7e21efb1fb9f80b2183f114a2d0fc692cbcd"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 08 09:44:00 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 08 09:44:00 2026 +0200"
      },
      "message": "Prepare 7.7.0-SNAPSHOT builds\n\nChange-Id: I94aefd743e69168389500e29f4cd56000e65e07b\n"
    },
    {
      "commit": "a71c7e21efb1fb9f80b2183f114a2d0fc692cbcd",
      "tree": "6cc2d542f03b73966259270f033fc07e13576ddb",
      "parents": [
        "6b47c561714515a32db13410baaad52fddb1912d"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 21:36:49 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 21:36:49 2026 +0200"
      },
      "message": "JGit v7.7.0.202604061937-m1\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I146bddd4f67f6262fd8957a61b78425336b46e92\n"
    },
    {
      "commit": "6b47c561714515a32db13410baaad52fddb1912d",
      "tree": "aa971664dbef38ac23151ba819111359b0cab2e9",
      "parents": [
        "5f54bc05ac592173bbc3e6c38a05de7b94983f96"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:38:41 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:38:41 2026 +0200"
      },
      "message": "Update jetty to 12.1.8\n\nChange-Id: I063ada69b2071388151fecbe4c75bdc462c4e3b1\n"
    },
    {
      "commit": "5f54bc05ac592173bbc3e6c38a05de7b94983f96",
      "tree": "b35427fee4cbb5dd77ea8123799843b65988c98f",
      "parents": [
        "d8418048bce1f676dedead75edbd08faa9100bae"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:33:46 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:33:46 2026 +0200"
      },
      "message": "Update bytebuddy to 1.18.8\n\nChange-Id: I288796f76ffc43f530ee62eb4c3669d69ef060eb\n"
    },
    {
      "commit": "d8418048bce1f676dedead75edbd08faa9100bae",
      "tree": "9a4abecc9a1728aef063498e3e2578d92bd53bde",
      "parents": [
        "d54cb2f2b93d3b3ee47fa99955b5ff908949b890"
      ],
      "author": {
        "name": "Sergey Zakharov",
        "email": "zakharovsergey1000@gmail.com",
        "time": "Thu May 16 23:32:55 2024 +0400"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:26:50 2026 +0200"
      },
      "message": "push: Report fatal server errors during pack writing\n\nIf the push client has requested side-band support the server can\nsignal a fatal error parsing the pack using the error channel (3)\nand then hang up. This may cause the PackWriter to fail to write\ndata onto the network socket, which throws a misleading error back\nup to the application and the user.\n\nDuring a write failure poll the input to see if the side band system\ncan parse out an error message off channel 3. This should be fast as\nthere will either be an error present in the buffer, or the remote will\nalso have hung-up on the side band channel. In the case of a hang-up\njust rethrow the original IOException as it\u0027s a network error.\n\nEnable ignored PushConnectionTests this change is fixing.\n\nChange-Id: Ie6ca43b39f3ef5727aba9251019e587006144376\n"
    },
    {
      "commit": "d54cb2f2b93d3b3ee47fa99955b5ff908949b890",
      "tree": "b9caeeb4cd74a22707009dd594ab5a022ba390ba",
      "parents": [
        "3223a517467d028ab434db173933537005a8642d"
      ],
      "author": {
        "name": "Sergey Zakharov",
        "email": "zakharovsergey1000@gmail.com",
        "time": "Thu May 16 22:54:49 2024 +0400"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 15:25:59 2026 +0200"
      },
      "message": "Revert \"push: Report fatal server errors during pack writing\"\n\nThis reverts commit b57d060408bcc58b2afbce671b2e68a07e90d7d9.\nReverted because that change did not work as intended.\n\nIgnore the PushConnectionTest.limitCommandBytes() test until the new fix\nis added.\n\nChange-Id: I687fb692aa11f6b4e1edb1c564d9eda823c0cdc6\n"
    },
    {
      "commit": "3223a517467d028ab434db173933537005a8642d",
      "tree": "8c3686b564760344a57cae211dd3a6b456087c30",
      "parents": [
        "2cde93022256113ceee7a427b62e865dc4f0dc78"
      ],
      "author": {
        "name": "Sergey Zakharov",
        "email": "zakharovsergey1000@gmail.com",
        "time": "Mon Jul 22 13:25:08 2024 +0300"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Apr 06 12:09:06 2026 +0200"
      },
      "message": "PushConnectionTest: Introducing the limitPackSize() test\n\nThe limitPackSize() test verifies that the correct (expected)\nTooLargePackException is thrown if the\nReceivePack.setMaxPackSizeLimit(long limit) method is called\nbefore pushing.\n\nThe test is ignored to avoid failing the build. Will enable it in the\ncommit fixing the bug.\n\nChange-Id: I03bba8fce95a7641116912580b0505f7aebea034\n"
    },
    {
      "commit": "2cde93022256113ceee7a427b62e865dc4f0dc78",
      "tree": "2ba674d5900ebc41df0ec6ce5c64a6a403278ff6",
      "parents": [
        "12f78ad26464f02db68f5b928463ae71591f038a",
        "8b92307c8a8b61b1c22fe1b8ee447d5fd9a01e15"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Apr 02 06:30:11 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 02 06:30:11 2026 +0000"
      },
      "message": "Merge \"MidxMetadataReader: Helper to read only selected fields in the midx\""
    },
    {
      "commit": "12f78ad26464f02db68f5b928463ae71591f038a",
      "tree": "13222c034ddee6ae650854a8c4c87af2c2618e43",
      "parents": [
        "5683cfe787c830cab4ed18dc3b4a0fd5b207825c",
        "d7c138341c43a4c690d407ee8de21495abcc51d6"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Apr 02 06:29:58 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Apr 02 06:29:58 2026 +0000"
      },
      "message": "Merge \"WindowCursor/Pack: Move bitmap coverage calculation to the pack\""
    },
    {
      "commit": "98a6a43dc518da202c07cd2c35788e8a8c1d5458",
      "tree": "0f1fac3c76e0f1e95ad14102ac6fa9fd20ba439e",
      "parents": [
        "b60640724df00534a9a0c3e171a8ddb4c0ed6f9f"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Apr 02 08:56:25 2026 +0300"
      },
      "message": "MidxWriter: Do not accept midx to build new midx\n\nThe code writing bitmaps later does not understand midx yet and it\nwould use the wrong packids.\n\nUntil we fix bitmap building code, just avoid using midx as input to midx.\n\nChange-Id: I66a121192bb3736eff61141db3e519826a6a6964\n"
    },
    {
      "commit": "b60640724df00534a9a0c3e171a8ddb4c0ed6f9f",
      "tree": "2183c9f1e8b3dcfc4765d8727bec377b5bfcd6bc",
      "parents": [
        "3f44108ee81f511cac4d98809a46313a756ff1c7"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Apr 02 08:56:25 2026 +0300"
      },
      "message": "PackDirectory: Integrate Multi-Pack Index (MIDX) support\n\nEnable PackDirectory to discover and utilize the MIDX file in file-based\nrepositories. Similar to the DFS implementation, the MIDX is integrated\nas a virtual pack (PackMidx) that intercepts object lookups.\n\nWhen the MIDX configuration is enabled, PackDirectory will:\n- Locate the MIDX file in the well-known \u0027pack\u0027 directory.\n- Replace relevant packs in the pack list with the PackMidx instance.\n- Delegate lookups (hasObject, getOffset) to the MIDX while falling\n  back to standard packs for other operations.\n\nChange-Id: I71bab916057e6aa06f9b057a6860cec16a6a6964\n"
    },
    {
      "commit": "3f44108ee81f511cac4d98809a46313a756ff1c7",
      "tree": "7ed07040008cf0ea9330f41faefc637887885148",
      "parents": [
        "8b92307c8a8b61b1c22fe1b8ee447d5fd9a01e15"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Apr 02 08:56:25 2026 +0300"
      },
      "message": "PackMidx: A Pack subclass that uses midx\n\nAs we do in the DFS side, make the midx look like a pack. It can solve\nsome calls by itself (e.g. hasObject), the rest is forwarded to the\nright pack.\n\nMake a subclass of pack initialized with the midx. At the moment it\nrequires to parse/load the midx on creation to get the list of covered\npacks.\n\nChange-Id: I1bd21340eb853b2f2a895ecf31c19ef86a6a6964\n"
    },
    {
      "commit": "5683cfe787c830cab4ed18dc3b4a0fd5b207825c",
      "tree": "142f6655600e54916eb5d8081f6c06b7e9e02c38",
      "parents": [
        "8a0736bee324456ff222761f4e368ca5c0b23a73"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 01 12:47:53 2026 +0300"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 01 13:33:45 2026 +0300"
      },
      "message": "PackBitmapIndexRemapper: Throw exception with details in size mismatches\n\nWe are seeing IndexOutOfBoundsExceptions in this loop while using midx\nbitmaps. It hints that something is wrong between bitmap lengths and\nobject counts.\n\nReport the object count and the bitmap length in the exception. Maybe\nthe numbers can give us a clue on where is the problem.\n\nChange-Id: I3dfe9edcc1fbf1c6624b3a05ac32d0f16a6a6964\n"
    },
    {
      "commit": "8a0736bee324456ff222761f4e368ca5c0b23a73",
      "tree": "1bb129817c21a58ab636b2abb28396efa91b96a7",
      "parents": [
        "39b4d4e4d56fe345b6910eed86a3bd3cec1125e3",
        "d72c61b6cf718109376c0958bd0735f31de188b0"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Apr 01 09:30:14 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Apr 01 09:30:14 2026 +0000"
      },
      "message": "Merge \"[version.sh] Don\u0027t use the pager for the git diff command\""
    },
    {
      "commit": "39b4d4e4d56fe345b6910eed86a3bd3cec1125e3",
      "tree": "84399bac7d8d2f3b88fe98eaadc6ebf477ebe591",
      "parents": [
        "06d66eb9521758452254401a00b8427e55bb8175",
        "55890f303350e2e1ecb9ea08b9cd015c34d33186"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Tue Mar 31 20:59:52 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Mar 31 20:59:52 2026 +0000"
      },
      "message": "Merge \"Bazel: bump to 8.6.0 and switch to pure Bzlmod\""
    },
    {
      "commit": "55890f303350e2e1ecb9ea08b9cd015c34d33186",
      "tree": "d25c8e2ba6368e3f5a7aeb8e3dfa7b1bbe7ceaf2",
      "parents": [
        "7aaf909484a27496a625a6b718a04fda604a3dc1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Mar 30 23:15:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Mar 31 14:24:20 2026 +0200"
      },
      "message": "Bazel: bump to 8.6.0 and switch to pure Bzlmod\n\nUpgrade Bazel from 7.6.1 to 8.6.0 and complete the transition\naway from legacy WORKSPACE-based dependency resolution.\n\nBazel 8 disables WORKSPACE by default and expects external\ndependencies to be provided via Bzlmod. The previous configuration\nexplicitly re-enabled WORKSPACE via --enable_workspace, which\ncaused evaluation of legacy repository.\n\nThis change removes the legacy path and relies solely on Bzlmod: remove\n--enable_workspace from .bazelrc drop WORKSPACE file entirely\n(MODULE.bazel is now the repo root) update workspace_status.py to locate\nMODULE.bazel instead of WORKSPACE\n\nThe Bazel version bump requires regenerating MODULE.bazel.lock to keep\ndependency resolution consistent with Bazel 8.\n\nWhile upgrading, align module dependencies with the Bazel 8 ecosystem:\nupgrade rules_java to 8.16.1 add bazel_features (required by newer\nrules_java) add rules_go 0.51.0-rc2 (transitively required via\nrules_android)\n\nThe newer dependency graph introduces stricter Error Prone checks.\nFix some violations by removing legacy /* (non-Javadoc) comments since\nmodern IDEs automatically show javadoc of the supertype.\n\nChange-Id: I385ebce07759cb05e16d09a0109803e2d0999b28\n"
    },
    {
      "commit": "8b92307c8a8b61b1c22fe1b8ee447d5fd9a01e15",
      "tree": "57a2b5cd9c7e680850b70646619cf382b37dcffe",
      "parents": [
        "d7c138341c43a4c690d407ee8de21495abcc51d6"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 30 13:31:14 2026 +0300"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Mar 31 14:06:17 2026 +0300"
      },
      "message": "MidxMetadataReader: Helper to read only selected fields in the midx\n\nIn few cases we just need the list of packs covered by the midx, or\nits checksum, but not the whole midx.\n\nOffer a quick reader to get that data, skipping most of the midx\nreading.\n\nChange-Id: I67d442f59fafa731502e36a9fa1b471a6a6a6964\n"
    },
    {
      "commit": "d7c138341c43a4c690d407ee8de21495abcc51d6",
      "tree": "79f1be215432f7a7b22c6f1fdf6867d1b9c5cd71",
      "parents": [
        "06d66eb9521758452254401a00b8427e55bb8175"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Mar 31 14:06:17 2026 +0300"
      },
      "message": "WindowCursor/Pack: Move bitmap coverage calculation to the pack\n\nThe reader (WindowCursor) gets the bitmap index of each pack to decide\nif all objects in the pack are in the needed bitmap. This doesn\u0027t work\nwith midx, where the pack has other nested packs.\n\nPass the bitmap to the pack instead. Let it return a list of packs\nfully covered by the bitmap. This acts as before in regular packs, and\nlets midx return multiple packs.\n\nChange-Id: I572d9354707a185d1934662d324fad826a6a6964\n"
    },
    {
      "commit": "d72c61b6cf718109376c0958bd0735f31de188b0",
      "tree": "f3520e296e3fc014f33d0dacf464833f134725fa",
      "parents": [
        "c0d5111e99a9e91db000c70806f49100c72196a6"
      ],
      "author": {
        "name": "Federico Jeanne",
        "email": "Federico.Jeanne@vector.com",
        "time": "Mon Mar 30 16:10:57 2026 +0200"
      },
      "committer": {
        "name": "Federico Jeanne",
        "email": "Federico.Jeanne@vector.com",
        "time": "Mon Mar 30 16:10:57 2026 +0200"
      },
      "message": "[version.sh] Don\u0027t use the pager for the git diff command\n\nHuman interaction is bad for automation scripts.\n\nChange-Id: Ia3f5ea583060ebfc7fd24d35956f1f31139a3cec\n"
    },
    {
      "commit": "06d66eb9521758452254401a00b8427e55bb8175",
      "tree": "757efb13796cebba7dc9e43ee11bf39b8e93bf47",
      "parents": [
        "7aaf909484a27496a625a6b718a04fda604a3dc1"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Mar 09 10:27:14 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri Mar 27 15:12:00 2026 +0200"
      },
      "message": "PackBitmapIndexRemapper: Do not remap if the object order is the same\n\nIn midx bitmaps, the objects are ordered first by pack and then by\noffset. If we build a new midx adding a pack to a previous midx, the\nbitmaps are reusable as they are (the objects in the new pack are\nextra 0s in the old bitmaps).\n\nIf old and new positions are the same to the old objects, discard the\nmapping array and return directly the old bitmap.\n\nLink: https://review.gerrithub.io/id/I78b0dae5909adfb7ab5a0e774bb870096a6a6964\n"
    },
    {
      "commit": "7aaf909484a27496a625a6b718a04fda604a3dc1",
      "tree": "f603e54d0ee0e10e88f57034e1e0871fef599775",
      "parents": [
        "02dc228458f0eab448e1a9039ae34c29beb9f0de"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri Mar 27 10:53:53 2026 +0200"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri Mar 27 10:53:56 2026 +0200"
      },
      "message": "DfsMidxWriter: Do not accept midx as input to build midx\n\nWe can use a midx to build a new midx, but it breaks the bitmaps. When\nwe calculate the \"midx offsets\" to order objects in the bitmap, we\nassume each pack is a single pack (one packId).\n\nThrow an exception if the input for the midx is another midx, until we\ncalculate properly the midx offsets.\n\nLink: https://review.gerrithub.io/id/I325443dc3281003b29b4d8a1598b83316a6a6964\n"
    },
    {
      "commit": "02dc228458f0eab448e1a9039ae34c29beb9f0de",
      "tree": "e506720b1778df5ee01cf8019f36a77c820fa7f1",
      "parents": [
        "476d7376d7fcf3b182a859ebdf519cd400570318",
        "0b6d0373413656ca938b5f0000fe30e7a3265099"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri Mar 27 07:09:39 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Fri Mar 27 07:09:39 2026 +0000"
      },
      "message": "Merge \"MidxPackList: getAllPlainPacks returns object-lookup order\""
    },
    {
      "commit": "476d7376d7fcf3b182a859ebdf519cd400570318",
      "tree": "c124c88fc31ff6371d9a34c30ada4a221d9c8a8b",
      "parents": [
        "a16b144a22964f8a6f83bf0e06c9d92e949458bc"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 11:14:42 2026 +0200"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 14:20:55 2026 +0200"
      },
      "message": "javadoc: Mention midx order in the javadoc\n\nLink: https://review.gerrithub.io/id/I84b5f0163ca7725de248afcc26f8f9246a6a6964\n"
    },
    {
      "commit": "0b6d0373413656ca938b5f0000fe30e7a3265099",
      "tree": "dc9789e3efc5c50ceda3a6c4c081f24eb78f8f9e",
      "parents": [
        "a16b144a22964f8a6f83bf0e06c9d92e949458bc"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 11:14:42 2026 +0200"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 14:20:28 2026 +0200"
      },
      "message": "MidxPackList: getAllPlainPacks returns object-lookup order\n\nFor object lookup we want the most recent packs first, because we\nusually talk more about recent object. In midx, we want oldest packs\nfirst to choose the oldest copy of an object for duplicates.\n\nMidxPackList replaces a midx in the pack list with its covered packs,\nbut it keep them in midx order, producing a list that is in no useful\norder. e.g. [INSERT, midx(GC, COMPACT)] returns [INSERT, GC, COMPACT].\n\nIntroduced the covered packs in reverse order, so the list matches the\nobject lookup order. Then [INSERT, midx(GC, COMPACT)] becomes [INSERT,\nCOMPACT, GC].\n\nLink: https://review.gerrithub.io/id/I96458e5585b00d31ae6f1085412a2f5b6a6a6964\n"
    },
    {
      "commit": "a16b144a22964f8a6f83bf0e06c9d92e949458bc",
      "tree": "e38627176bdbea7759afa934e58974cb6ec30d51",
      "parents": [
        "8acb86a7ea52b551f919dcb1c5946753e052ddd6",
        "a55ad1a419f3291c7b81a99df9502297864a7fcd"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 12:19:26 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Mar 26 12:19:26 2026 +0000"
      },
      "message": "Merge \"MidxPackListTest: Use fake packs for easier test setup\""
    },
    {
      "commit": "a55ad1a419f3291c7b81a99df9502297864a7fcd",
      "tree": "6a493411d810fc00e1dd0ff5a8add75b4dbb14e2",
      "parents": [
        "0b618b064b9371b772421b30b46a2db9bfa5a3b2"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 11:21:48 2026 +0200"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Mar 26 13:06:31 2026 +0200"
      },
      "message": "MidxPackListTest: Use fake packs for easier test setup\n\nLink: https://review.gerrithub.io/id/I1dbb31067804cc428ddcac3cdf79c6506a6a6964\n"
    },
    {
      "commit": "8acb86a7ea52b551f919dcb1c5946753e052ddd6",
      "tree": "1d0c5c6f1ecd42632bbc53c9120aa36b5d4acdb8",
      "parents": [
        "5f55a84f39d7d71a959ad769dd84b2cb32a1e69b",
        "6f8293956230ab6bb6e0227c5c064b0149a15d9c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Mar 26 09:30:10 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Mar 26 09:30:10 2026 +0000"
      },
      "message": "Merge \"Add CLAUDE.md to gitignore file\""
    },
    {
      "commit": "5f55a84f39d7d71a959ad769dd84b2cb32a1e69b",
      "tree": "82d7f6af6c86c0840701f20745b412fad11f42e3",
      "parents": [
        "0b618b064b9371b772421b30b46a2db9bfa5a3b2"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Feb 17 20:17:42 2026 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 24 23:33:28 2026 +0000"
      },
      "message": "Slightly reword prunePackExpire docs\n\nChange-Id: I2bbe8f62ec8a512aff63e7a2d4488a6102e79f2f\n"
    },
    {
      "commit": "0b618b064b9371b772421b30b46a2db9bfa5a3b2",
      "tree": "6b72c6ecbc0ef7b33651feaae0b5062df3af33b3",
      "parents": [
        "c6fc84e573714f8963ba8c342b1d52067bea3268",
        "4f82a88d34234dc9c27f08ec665c9a830b1b3020"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Mar 24 22:50:44 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Mar 24 22:50:44 2026 +0000"
      },
      "message": "Merge \"MultiPackIndex: write midx bitmaps from cli tool\""
    }
  ],
  "next": "c6fc84e573714f8963ba8c342b1d52067bea3268"
}
