)]}'
{
  "log": [
    {
      "commit": "3f41572c30c430fa61ffbe105d485bb45937437b",
      "tree": "32d9710a9dd67d80aaf14c564d119ff623b10dbc",
      "parents": [
        "a3a8b97857c36eaa2a8a71367f0dd434eed7d2bf",
        "0949523777090272f088efd412b7c375b7d274bc"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 25 01:37:02 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 25 01:37:02 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Prepare 7.7.2-SNAPSHOT builds\n  JGit v7.7.1.202607240634-r\n  Update org.apache.sshd to 2.19.0\n\nChange-Id: I720c56da97b41c71d09feffd2d183d4a45706cb9\n"
    },
    {
      "commit": "a3a8b97857c36eaa2a8a71367f0dd434eed7d2bf",
      "tree": "6fa5fa3fc6b8ca32f4c2795a0ea09e79c31d94cf",
      "parents": [
        "5fe179cee97b947a49228dd7170fc3b9c65a498c"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jul 23 21:17:48 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jul 24 10:32:33 2026 +0000"
      },
      "message": "Include time negotating in total time in UploadPack\n\nThe total time in UploadPack counter was not considering the time spent\nnegotating, often a crucial and lengthy part of any git operation.\n\nInclude time negotating in the total time for UploadPack calculation to\nmore accurately represent the actual total time spent in this operation.\n\nChange-Id: I88dee5b0ba01e0ac311cb11cb83a68ae1e8f2957\n"
    },
    {
      "commit": "0949523777090272f088efd412b7c375b7d274bc",
      "tree": "23564abbbcfc9d40f406802d1aa6caa3626a18b7",
      "parents": [
        "ec341eceb301110cda4cce7c3a9983b380b004bf"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jul 24 09:59:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jul 24 09:59:32 2026 +0200"
      },
      "message": "Prepare 7.7.2-SNAPSHOT builds\n\nChange-Id: I884e484c0f06fe9503c002ef3ba165b732184bd1\n"
    },
    {
      "commit": "ec341eceb301110cda4cce7c3a9983b380b004bf",
      "tree": "b4698f89efd046aa767e137a59a4d3dc8f2fb941",
      "parents": [
        "50b9cb2d0e19172e01ae29a28764a02c3c60e0e8"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jul 24 08:35:12 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jul 24 08:35:12 2026 +0200"
      },
      "message": "JGit v7.7.1.202607240634-r\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I3e38f30515288fb32a011c475afbb5311c8d7d5d\n"
    },
    {
      "commit": "50b9cb2d0e19172e01ae29a28764a02c3c60e0e8",
      "tree": "d2a7500322f896ba64aebdc509446d91323a286c",
      "parents": [
        "7bd99581a34798fd48534acb06d64eadd247aad6"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Jul 23 16:48:28 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Jul 23 16:48:28 2026 +0200"
      },
      "message": "Update org.apache.sshd to 2.19.0\n\nThis fixes CVE-2026-56624.\nSee https://lists.apache.org/thread/o4c2jml522j3z80gbryqzc2f1253ltp6\n\nWiden allowed version range to [2.19.0,3.0.0). This allows applications\nusing JGit to update org.apache.sshd to a newer version without us\nneeding to provide an update.\nSee https://github.com/eclipse-jgit/jgit/discussions/278\n\nChange-Id: Id51cd96c4a526227bfa18a0e603f60d6014cb2d9\n"
    },
    {
      "commit": "5fe179cee97b947a49228dd7170fc3b9c65a498c",
      "tree": "13487811bd95d8b069fde6df0e9293b17e015e02",
      "parents": [
        "ab51fe2bdb9d7f05287b686e75be7afc46d0c8f5"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Wed May 13 13:53:48 2026 +0200"
      },
      "committer": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Mon Jul 20 09:27:33 2026 +0000"
      },
      "message": "ResolveMerger: Retrieve Attributes lazily during Three-way merge\n\nInstead of eagerly retrieving the attributes of the current path for the\nthree trees (BASE, OURS, THEIRS), the attributes are now only retrieved\nlazily when needed.\n\nThis can significantly improve performance of the Cherry-Pick, Merge,\nApply Stash and Revert actions in repositories with large worktrees and\nmany attribute rules.\n\nBug: jgit-266\nChange-Id: I4698eee2ff36711267683a9925d1b1d268aac4a4\n"
    },
    {
      "commit": "ab51fe2bdb9d7f05287b686e75be7afc46d0c8f5",
      "tree": "c6c407439cdad5f9362cc77793e8880a259bab50",
      "parents": [
        "d2f310f19c8973e3d6ba8bf5d0524b53872d7482"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Mon May 11 13:54:00 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 20 10:33:37 2026 +0200"
      },
      "message": "RevWalk: Use an incremental topological sorting algorithm\n\nWhen RevSort TOPO is given, instead of the previous combination of\nPendingGenerator-\u003eRewriteGenerator-\u003eTopoSortGenerator, a specialized\nGenerator is now used, which (given a commit-graph file is present)\ndoesn\u0027t need to fully process the entire history first\n\nThe new TopoSortPendingGenerator uses a modified version of the\nthree-walk algorithm used by git and performs the tasks previously done\nby the Pending-, Rewrite- and TopoSortGenerator:\n - The RevFilter is applied in the explore Phase\n - Rewriting commits (only when rewriteParents is set) is performed\n   after exploring, but before calculating in-degree numbers\n - Commits are only sorted topologically up to the lowest generation\n   number seen up to that point\n\nChange-Id: I7e38a8f866bb8f46e455aedd82c3985c256841e0\n"
    },
    {
      "commit": "d2f310f19c8973e3d6ba8bf5d0524b53872d7482",
      "tree": "b8328063c453bc17cdc5e9c600c9043cda8cc397",
      "parents": [
        "ce5d067b94dd8af7ab41a8264fc78c02dd050108"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Mon May 11 15:34:21 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 20 08:02:18 2026 +0200"
      },
      "message": "RewriteGenerator: Extract rewriting logic to a separate component\n\nThis Change is in preparation for a three-walk topological sorting\nalgorithm, which will have its own commit history rewriting logic\n\nChange-Id: I6b07796759fe73728e87149c064285d1d894fe99\n"
    },
    {
      "commit": "ce5d067b94dd8af7ab41a8264fc78c02dd050108",
      "tree": "ba586f7bb0e2dc3e9d1a724fa7009b0d8290f392",
      "parents": [
        "3764cd5711679e328499656c760ebda40a42a1f0"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Sat Mar 21 15:37:49 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 20 08:02:17 2026 +0200"
      },
      "message": "RevCommit: Remove RevCommitCG and move Commit Graph info to RevCommit\n\n* The graphPosition and generation fields were moved to RevCommit and\nthe package-private RevCommitCG has been removed.\n* A new constructor allows creating RevCommit instances that know their\nposition in the commit graph.\n* RevCommit.parseCanonical() will now parse the data from the commit\ngraph, if the commit graph position is known.\n* RevCommit\u0027s implementations of getGeneration() and\ngetChangedPathFilter() now also no longer return default values, if the\nposition within the commit graph is known.\n\nThis way, sub-types of RevCommit and RevWalk must only override the\ncreateCommit(AnyObjectId, int) method instead and add a new constructor.\n\nExisting sub-types of RevCommit within jgit have been extended with the\nnew constructor. The respective RevWalk implementations within jgit have\nbeen adjusted to call these new constructors.\n\nBug: jgit-250\nChange-Id: I568df510784672c2c2b452b2030a916064ea173a\n"
    },
    {
      "commit": "3764cd5711679e328499656c760ebda40a42a1f0",
      "tree": "b3595dc3f688555b4e996c5b599bcfc9d450f0d4",
      "parents": [
        "e1696147ce23ef9e0d11d26c23efba7dc22c5782"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Sat Mar 21 15:35:42 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 20 08:02:17 2026 +0200"
      },
      "message": "RevWalk: Make createCommit(AnyObjectId, int) protected API\n\nThis allows sub-types of RevWalk to implement this method and create\ninstances of sub-types of RevCommit that know their position in the\nCommit Graph.\n\nMarked createCommit(AnyObjectId) as @nooverride\n\nExisting sub-types of RevWalk within jgit have been updated to override\nthe new method. Sub-types of RevWalk outside of jgit will only receive a\nwarning, that the createCommit(AnyObjectId) method is no longer intended\nto be overridden and that the new createCommit(AnyObjectId, int) method\nshould be overridden instead.\n\nBug: jgit-250\nChange-Id: I0a2115bfef7e73a299780a2c28ef5a01aa1d00e0\n"
    },
    {
      "commit": "e1696147ce23ef9e0d11d26c23efba7dc22c5782",
      "tree": "3c2c5e1dcae2c58fab7b74a3133ad1bfd468cb27",
      "parents": [
        "bf0f0ad1cc2ce422604383272a4a4b8b3947b465"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 15 00:53:08 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 15 16:28:15 2026 +0200"
      },
      "message": "Update bouncycastle to 1.85\n\nChange-Id: I63b032ff321ca9f4cffff9aeefcebab9ceacbaa2\n"
    },
    {
      "commit": "bf0f0ad1cc2ce422604383272a4a4b8b3947b465",
      "tree": "1a5bff6a6731b76451a5486d230853d2d2eeabc0",
      "parents": [
        "be6db1d4b0ca2cc52ad4853d07288474708de707"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:46:56 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:46:56 2026 +0200"
      },
      "message": "Switch to releases p2 repo for Eclipse IDE 2026-06 (4.40)\n\nChange-Id: I031c02d2be7dd56298a6480717f6cbd9c0ed8bfd\n"
    },
    {
      "commit": "be6db1d4b0ca2cc52ad4853d07288474708de707",
      "tree": "82a900c746378ab879c3e1e0f091d2576da83848",
      "parents": [
        "9a42ec437daf5f38c0419dce487eb0b5bbd26000"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:29:08 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:29:08 2026 +0200"
      },
      "message": "Add target platform 4.41 for Eclipse IDE 2026-09\n\nChange-Id: I19ada9d6f3d9e58bc7f3e5e54edc7e83fda8fa9c\n"
    },
    {
      "commit": "9a42ec437daf5f38c0419dce487eb0b5bbd26000",
      "tree": "63158e7f0afac9fc999b23245d85f4fd64dc1090",
      "parents": [
        "986dd12c130e7e2e01f281f4582908155b2be0b5"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:14:53 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:14:53 2026 +0200"
      },
      "message": "Update jetty to 12.1.11\n\nChange-Id: I508889e9a8bab673b1d358fe9fc42494c5958e2a\n"
    },
    {
      "commit": "986dd12c130e7e2e01f281f4582908155b2be0b5",
      "tree": "246f8218ceb845977d338332d9b4bb649c786b83",
      "parents": [
        "39988b4f78ad6227aea02119226e46863efe6775"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 01:37:14 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 02:13:23 2026 +0200"
      },
      "message": "Update org.apache.sshd to 2.19.0\n\nChange-Id: I79696eeb353117aa376986dfabdeb13822548686\n"
    },
    {
      "commit": "39988b4f78ad6227aea02119226e46863efe6775",
      "tree": "7ddcf137d7534020e7cc1eb9f89a8dd153e9ea1e",
      "parents": [
        "569182cad38fe38ef1939e842585e50894a662f0"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 01:35:50 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Jul 11 01:35:50 2026 +0200"
      },
      "message": "Update bytebuddy to 1.18.11\n\nChange-Id: I750d1865a5133cf168162432ff73a969c09807cd\n"
    },
    {
      "commit": "569182cad38fe38ef1939e842585e50894a662f0",
      "tree": "3447f5e444a3923d3f3fdf6a553f0593290b56cd",
      "parents": [
        "ad94638096391e6926e901d0b7a23b0caed7e323",
        "97c0b65efcf99fc2c60f8cea3c548bf0431e8146"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 11:14:22 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 11:14:22 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.8\u0027\n\n* stable-7.8:\n  Prepare 7.8.0-SNAPSHOT builds\n  JGit v7.8.0.202607072310-m1\n  Package org.apache.commons.commons-logging 1.4.0 into p2 repo\n  Prepare 7.8.0-SNAPSHOT builds\n  JGit v7.8.0.202607071357-m1\n\nChange-Id: I6bcbecf93761df4827177056c3dab247ff49ff57\n"
    },
    {
      "commit": "97c0b65efcf99fc2c60f8cea3c548bf0431e8146",
      "tree": "3447f5e444a3923d3f3fdf6a553f0593290b56cd",
      "parents": [
        "601d50dd1594f9749a5e6c35dc45fd251949ae06"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 11:13:34 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 11:13:34 2026 +0200"
      },
      "message": "Prepare 7.8.0-SNAPSHOT builds\n\nChange-Id: Ic80e67bd8283d00d38edcdad9f3c9897afc78995\n"
    },
    {
      "commit": "601d50dd1594f9749a5e6c35dc45fd251949ae06",
      "tree": "e4b941b62b785ee291d4356e4790f5ce240d3c4a",
      "parents": [
        "29e15e93ab86b7166dc07608bb6d794cd307cdc1"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:27:10 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:27:10 2026 +0200"
      },
      "message": "JGit v7.8.0.202607072310-m1\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: Ib5ffd94f7cc993870b7ab94456230f204c69bac4\n"
    },
    {
      "commit": "29e15e93ab86b7166dc07608bb6d794cd307cdc1",
      "tree": "3447f5e444a3923d3f3fdf6a553f0593290b56cd",
      "parents": [
        "01720b510607dae2d8e873349d0ebbaaf35460a0"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:08:25 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:26:57 2026 +0200"
      },
      "message": "Package org.apache.commons.commons-logging 1.4.0 into p2 repo\n\nChange-Id: I1d9aa60b24a584aabbab063d98e3be76a44cb8d4\n"
    },
    {
      "commit": "01720b510607dae2d8e873349d0ebbaaf35460a0",
      "tree": "de885c855899af2487516426ced159058ff2903b",
      "parents": [
        "481e3aca279e503d8de0f5ed532dba0d0bf990d2"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:26:42 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 08 01:26:57 2026 +0200"
      },
      "message": "Prepare 7.8.0-SNAPSHOT builds\n\nChange-Id: If95cb19d246de7314ebd2e948d2b4c981f43d144\n"
    },
    {
      "commit": "481e3aca279e503d8de0f5ed532dba0d0bf990d2",
      "tree": "17901a682ef7e843271b76f54728cb272946eb24",
      "parents": [
        "ad94638096391e6926e901d0b7a23b0caed7e323"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 15:57:57 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 15:57:57 2026 +0200"
      },
      "message": "JGit v7.8.0.202607071357-m1\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: Ic869797d084030879d63aa2e4c05c0e59f3e7ca4\n"
    },
    {
      "commit": "ad94638096391e6926e901d0b7a23b0caed7e323",
      "tree": "de885c855899af2487516426ced159058ff2903b",
      "parents": [
        "7ad4c19c70c3563f5e24419c4ce4c36522a2672b",
        "7bd99581a34798fd48534acb06d64eadd247aad6"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 15:03:55 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 15:03:55 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n\nChange-Id: I0c6c87182836776f9a9a7dc59022ff821bdeb1cf\n"
    },
    {
      "commit": "7bd99581a34798fd48534acb06d64eadd247aad6",
      "tree": "d9fc238547d34c2c81484e30ba9e52810e66091a",
      "parents": [
        "38da6c1f8f8bc2ec7a19f4115fcea7c94a5875fa",
        "6e3531f6d8c9a0255d13868ffcac80eba4d82adc"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 14:12:05 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 14:12:05 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n\nChange-Id: I6f468d09c250bccd0c4e1fe2386238870f6b4b54\n"
    },
    {
      "commit": "6e3531f6d8c9a0255d13868ffcac80eba4d82adc",
      "tree": "f70f9cf86dba0ea3c11a25457a47f862618ec525",
      "parents": [
        "1eb6ed01bf9b705c1a75dbeff08dd9d3dc86ba08",
        "94fe3e89f0e869643fba0e2a47cb3c6b7ea7b4d3"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:57:47 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:57:47 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n\nUse merge strategy --ours to resolve conflicts between stable-7.5 using\nWORKSPACE and stable-7.6 using MODULE.bazel.\n\nChange-Id: I5c8e617e8f084e1c0d8719585f7f1543ce0e71a4\n"
    },
    {
      "commit": "7ad4c19c70c3563f5e24419c4ce4c36522a2672b",
      "tree": "de885c855899af2487516426ced159058ff2903b",
      "parents": [
        "d28c1afc1e4564a24b6708fb6841933f37f8e872",
        "38da6c1f8f8bc2ec7a19f4115fcea7c94a5875fa"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:38:27 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:43:51 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n  PullCommandTest#testPullConflictDiff3: assert pull result\n\nChange-Id: I08ddde5c4ec4f09f423dd8443c62a40e751731c7\n"
    },
    {
      "commit": "38da6c1f8f8bc2ec7a19f4115fcea7c94a5875fa",
      "tree": "d9fc238547d34c2c81484e30ba9e52810e66091a",
      "parents": [
        "6cf18b7ea3d9a5abe19407c5d6a8e7a342678a43",
        "1eb6ed01bf9b705c1a75dbeff08dd9d3dc86ba08"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:04:05 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 13:23:58 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n  PullCommandTest#testPullConflictDiff3: assert pull result\n\nChange-Id: I6adcfbc8ac5d5fb6217fa70ed3c78fdb439faa9e\n"
    },
    {
      "commit": "1eb6ed01bf9b705c1a75dbeff08dd9d3dc86ba08",
      "tree": "f70f9cf86dba0ea3c11a25457a47f862618ec525",
      "parents": [
        "6dbcde7b2ff4c1a16a0df9c60d147161d7b52a9a"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 25 11:32:28 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:10:14 2026 +0200"
      },
      "message": "junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n\nThe EE8 servlet bridge ships a hand-maintained\norg.eclipse.jgit.junit.http.ee8 AppServer because the canonical\nAppServer cannot be rewritten into its EE8 form automatically: the Jetty\nsecurity API (Constraint.Builder + ContextHandler juggling) differs\nstructurally from the Jetty EE8 one (ServletConstraint +\nsetSecurityHandler), which a jakarta-\u003ejavax string rewrite cannot\nbridge. The overlay was a 461-line copy; only ~40 lines diverge.\n\nSplit the common code into an abstract AppServerBase and reduce both\nAppServers to the generation-specific part:\n\n  AppServerBase            common server/context/login wiring plus the\n                           protected abstract configureAuthentication()\n                           method; transform-safe (only the\n                           ServletContextHandler import renames ee10 -\u003e\n                           ee8).\n  AppServer (canonical)    EE10: Constraint.Builder + setHandler.\n  AppServer (ee8 overlay)  EE8: ServletConstraint + setSecurityHandler.\n                           461 -\u003e 103 lines.\n\nBoth toolchains pick AppServerBase up for free: the Bazel transform and\nthe Maven antrun copy both exclude only the file name AppServer.java, so\nAppServerBase.java flows through the jakarta-\u003ejavax / ee10-\u003eee8 rewrite\nwhile the hand-written EE8 AppServer.java stays the overlay. No BUILD or\npom changes. The class stays named AppServer in both worlds (separate\nclasspaths), so every \"new AppServer(...)\" site is untouched.\n\nMoving the shared username/password constants into AppServerBase turns\nthe AppServer.username uses in the HTTP tests into an indirect static\naccess, which JGit\u0027s ecj settings escalate to a compile error (caught by\nMaven, not by the Bazel javac build). Reference the declaring class\n(AppServerBase.username) instead of re-declaring the constants on both\nAppServers, which would reintroduce the duplication this change removes.\n\nAlternative considered: renaming the EE8 overlay to EE8AppServer.\nRejected because a distinct name forces rewriting every\n\"new AppServer(...)\" site in the transformed EE8 tests and couples the\ntransform to class names instead of imports.\n\nCopyright is carried over unchanged from the split file.\n\nChange-Id: I1d68bcc7d1d23668696ee91d8910f4940064bb37\n"
    },
    {
      "commit": "6dbcde7b2ff4c1a16a0df9c60d147161d7b52a9a",
      "tree": "d129cebcdb7c4dc7fe0257be90b5cce7b0d4a93b",
      "parents": [
        "1a9c7be11fced35e38e5576bd4d77aaaf01af244"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jun 19 14:26:26 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:10:14 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet test targets\n\nAdd EE8 variants of the HTTP and LFS servlet test suites and run them\nagainst the generated EE8 servlet bridge artifacts.\n\nGenerate EE8 test sources from the canonical Jakarta-based tests by\nrewriting servlet API references and Jetty EE10 test helper imports to\ntheir EE8 equivalents. Export canonical test source filegroups so the\ngenerated tests remain synchronized with the primary test suites.\n\nIntroduce EE8 Jetty test dependencies, generated junit-http helpers,\nand JUnit suite generation for the transformed sources. Restore\nAppServer from the servlet-4 branch because its API usage cannot be\nconverted mechanically.\n\nExtend generated-source verification to cover test sources and ensure\nthat no Jakarta or Jetty EE10 servlet references remain in generated\nEE8 outputs.\n\nTest Plan:\n  bazelisk test \\\n    //tools/jgit-ee8:generated_srcs_test \\\n    //org.eclipse.jgit.http.test.ee8/... \\\n    //org.eclipse.jgit.lfs.server.test.ee8/...\n\nChange-Id: Id3d9312f0a93d443d83054a81b9d868611e18b27\n"
    },
    {
      "commit": "1a9c7be11fced35e38e5576bd4d77aaaf01af244",
      "tree": "69b69b3779c9ef47abe0aec9a866147edbafb945",
      "parents": [
        "66f03055758e273677aa995c613f366a8b8c635f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 05:08:19 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:10:13 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet bridge targets\n\nAdd Bazel-only generated EE8 targets for the HTTP servlet and LFS\nserver modules. The generated jars keep the original JGit Java\npackages and rewrite only servlet API references from jakarta.servlet\nto javax.servlet.\n\nThe rewrite uses the shared servlet-flavour transform toolchain from\nbazlets (transform_srcjar + generated_srcs_test.sh under //tools). It\nis a plain sed package-prefix substitution; the universal servlet and\nJetty package mapping lives in bazlets and this consumer selects only\nthe direction (to_javax), so it carries no renames data and adds no\nMaven dependency (no Eclipse Transformer CLI).\n\nThis supports source consumers that still run on EE8 while JGit master\nuses Jakarta servlet APIs. Gerrit is the known downstream consumer in\nthat state today and consumes JGit from source through a git submodule.\nWith these targets, Gerrit can track JGit master without a dedicated\nservlet-4 maintenance branch.\n\nThe goal is to let the servlet-4 branch be retired for Gerrit\u0027s\nmaintenance purposes. That branch was not offered as a stable JGit\nrelease line. Keeping Gerrit on it makes JGit updates hard for Gerrit,\nincluding updates for important fixes and improvements, and forces\nrepeated merge work from master onto a parallel branch.\n\nKeep the maintenance surface small. The EE8 targets consume canonical\nsrcs filegroups backed by glob([\"src/**/*.java\"]), so new Java sources\nflow into the generated jars without per-file BUILD updates. Resources\nare also shared through canonical filegroups.\n\nThis Bazel change intentionally does not add Maven, Tycho/p2, or Maven\nCentral publication machinery. Maven support is added by the follow-up\nMaven commit; Tycho/p2 remains out of scope because the EE8 jars export\nthe same packages as their canonical Jakarta counterparts and are not\nco-installable with them.\n\nAlso avoid relocating Java packages to org.eclipse.jgit.*.ee8. Keeping\nthe same package names avoids source-consumer import churn, but means\nthe canonical Jakarta jars and generated EE8 jars must not share a\nclasspath.\n\nPossible follow-ups are duplicate-classpath enforcement for source\nconsumers and additional generated EE8 modules only when a consumer\nneeds them.\n\nVerify generated source layout, line counts, javax servlet rewriting,\nand the absence of package-renamed .ee8 sources.\n\nChange-Id: I897e4facbbae79349e8d1853ea4dab8d7087ba5b\n"
    },
    {
      "commit": "66f03055758e273677aa995c613f366a8b8c635f",
      "tree": "fcd7eca4ac26f8e1f5dd66e2f404cc816e4a768a",
      "parents": [
        "120a2ef4e497d22811be1c3444abafb4e5501372"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 09:21:29 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:10:13 2026 +0200"
      },
      "message": "Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n\n//lib:servlet-api exported the canonical Jakarta servlet API\n(jakarta.servlet:jakarta.servlet-api:6.1.0). The name did not\ndistinguish it from //lib:javax-servlet-api, which the EE8 bridge in\n//org.eclipse.jgit.http.server.ee8 and //org.eclipse.jgit.lfs.server.ee8\nuses to depend on javax.servlet:javax.servlet-api:4.0.1.\n\nRename the canonical target to //lib:jakarta-servlet-api so the API\nflavour is self-evident at consumer sites. Migrate the six in-tree\nconsumers (http.server, http.test, junit.http, lfs.server,\nlfs.server.test, pgm) in the same change. No compatibility alias is\nkept: JGit is consumed from source by Gerrit through a git submodule,\nwhich has its own //lib:* wrappers, and the EE8 bridge commit added\n//lib:javax-servlet-api without an alias for the same reason.\n\nChange-Id: I764b01d171d2c2dc55fecef89bf4b36ce1cb9c59\n"
    },
    {
      "commit": "120a2ef4e497d22811be1c3444abafb4e5501372",
      "tree": "ada9d5ce11d79a622e9d0451cbf5801abb6fed8b",
      "parents": [
        "79ba6b83bb0125d8f0b7613ca69a8dc3c387f39f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jun 24 17:05:08 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:10:13 2026 +0200"
      },
      "message": "Bazel: format build files with buildifier\n\nChange-Id: I7a654fe8f138c4e59687d65a3ada4bfee4e51173\n"
    },
    {
      "commit": "79ba6b83bb0125d8f0b7613ca69a8dc3c387f39f",
      "tree": "49b2184d947e61873d987d4fa80deb0976e5fee3",
      "parents": [
        "30a44f81134f4ba6afc6376fa8268e0a804ad092"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:08:33 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 11:08:33 2026 +0200"
      },
      "message": "PullCommandTest#testPullConflictDiff3: assert pull result\n\nto fix errorprone error \"UnusedVariable\"\n\n```\n$ bazelisk test //...\n...\n  Did you mean \u0027assertEquals(MergeStatus.CONFLICTING,\u0027 or\n\u0027assertEquals(/* expected\u003d */res.getMergeResult().getMergeStatus(),\u0027?\norg.eclipse.jgit.test/tst/org/eclipse/jgit/api/PullCommandTest.java:191:\nerror: [UnusedVariable] This assignment to the local variable \u0027res\u0027 is\nnever read.\n\t\tres \u003d target.pull().call();\n\t\t    ^\n    (see https://errorprone.info/bugpattern/UnusedVariable)\n```\n\nChange-Id: I92e53dbe383fc16e9ba1a2fefbe2cf304bf0d8ad\n"
    },
    {
      "commit": "d28c1afc1e4564a24b6708fb6841933f37f8e872",
      "tree": "537ed346d2852cda00de083b5bc5f8c15a18bafe",
      "parents": [
        "d29c264b2983782418b4c8357a6422750edfa15c",
        "2fa0e33478012b7eb41905b93f07fc2ed9ec97ea"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 07 08:40:26 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Jul 07 08:40:26 2026 +0000"
      },
      "message": "Merge \"Align Jetty environment with Servlet API 6.1\""
    },
    {
      "commit": "94fe3e89f0e869643fba0e2a47cb3c6b7ea7b4d3",
      "tree": "35f70c22393b1c1300ccfac69b6214fedc8d4bd0",
      "parents": [
        "9462e297a9222c006e8276c548a81042df212739",
        "c2188c2a078df7b4112ef7d95dc8f0e4d76083f2"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 06 16:02:06 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jul 06 16:22:40 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n\nUpdate SHA1 of Jetty ee8 artefacts since stable-7.5 uses a different\nJetty version than stable-7.4.\n\nChange-Id: Ia0f0a2b7aad09b9e61ed40b2f217690855a608e6\n"
    },
    {
      "commit": "d29c264b2983782418b4c8357a6422750edfa15c",
      "tree": "53f1dcbca54d1a4b468c5496da393075386bbadf",
      "parents": [
        "de6c8636cb0e5f12847dbedf6b76c872a273c52c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Jul 02 14:01:29 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Jul 02 14:03:14 2026 +0200"
      },
      "message": "Document where to find SBOMs for JGit releases\n\nBug: https://gitlab.eclipse.org/eclipsefdn/emo-team/emo/-/work_items/1218\nChange-Id: I6173f1f824ac6d507a06155f31d60da51a9ca7fa\n"
    },
    {
      "commit": "2fa0e33478012b7eb41905b93f07fc2ed9ec97ea",
      "tree": "115a492848352c9f138a14c6159ea7525603e7f9",
      "parents": [
        "de6c8636cb0e5f12847dbedf6b76c872a273c52c"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jul 01 07:31:09 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 01 11:45:25 2026 +0200"
      },
      "message": "Align Jetty environment with Servlet API 6.1\n\nServlet API 6.0 corresponds to Jetty EE10, while Servlet API\n6.1 corresponds to Jetty EE11. JGit already uses\njakarta.servlet-api 6.1.0, so update the Jetty servlet\ndependency, imports, OSGi metadata, and target-platform files\nfrom EE10 to EE11.\n\nUpdate the EE8 generated-source check to reject EE11 imports\nafter rewriting. The corresponding bazlets transform maps EE11\nJetty packages back to EE8 for the compatibility build.\n\nJetty EE11 reports a charset parameter for the plain-text HEAD\nresponse in the dumb HTTP test. Compare only the media type\nthere, since the test is not about charset selection.\n\nAppServerBase methods addContext and authBasic and HttpTestCase.toURIish\nchange signature since they now use ee11 ServletContextHandler. Hence\nmark them @since 7.8 and suppress the API errors caused by the removal\nof the old methods using ee10 ServletContextHandler.\n\nChange-Id: I78e9a72102002b12c204d52826a53b66c5eaf8f0\n"
    },
    {
      "commit": "de6c8636cb0e5f12847dbedf6b76c872a273c52c",
      "tree": "ce9d36e069330308f8659259a87a6b4dd3cff8a3",
      "parents": [
        "1e0c1cebcc8028a1693d613427201f1a7f6a1da5",
        "038353ea91fc4643c8e94215bdafccb8e34ea755"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jul 01 09:04:40 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Jul 01 09:04:40 2026 +0000"
      },
      "message": "Merge \"DirCacheEntry: Fix mightBeRacilyClean() time difference calculation\""
    },
    {
      "commit": "c2188c2a078df7b4112ef7d95dc8f0e4d76083f2",
      "tree": "da54153b473bd31dd6ce8971bb32ebc569eccbf2",
      "parents": [
        "fbf29d88ccc90cf98d89b9f74bf4533fe618eda6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 25 11:32:28 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 15:28:23 2026 +0200"
      },
      "message": "junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n\nThe EE8 servlet bridge ships a hand-maintained\norg.eclipse.jgit.junit.http.ee8 AppServer because the canonical\nAppServer cannot be rewritten into its EE8 form automatically: the Jetty\nsecurity API (Constraint.Builder + ContextHandler juggling) differs\nstructurally from the Jetty EE8 one (ServletConstraint +\nsetSecurityHandler), which a jakarta-\u003ejavax string rewrite cannot\nbridge. The overlay was a 461-line copy; only ~40 lines diverge.\n\nSplit the common code into an abstract AppServerBase and reduce both\nAppServers to the generation-specific part:\n\n  AppServerBase            common server/context/login wiring plus the\n                           protected abstract configureAuthentication()\n                           method; transform-safe (only the\n                           ServletContextHandler import renames ee10 -\u003e\n                           ee8).\n  AppServer (canonical)    EE10: Constraint.Builder + setHandler.\n  AppServer (ee8 overlay)  EE8: ServletConstraint + setSecurityHandler.\n                           461 -\u003e 103 lines.\n\nBoth toolchains pick AppServerBase up for free: the Bazel transform and\nthe Maven antrun copy both exclude only the file name AppServer.java, so\nAppServerBase.java flows through the jakarta-\u003ejavax / ee10-\u003eee8 rewrite\nwhile the hand-written EE8 AppServer.java stays the overlay. No BUILD or\npom changes. The class stays named AppServer in both worlds (separate\nclasspaths), so every \"new AppServer(...)\" site is untouched.\n\nMoving the shared username/password constants into AppServerBase turns\nthe AppServer.username uses in the HTTP tests into an indirect static\naccess, which JGit\u0027s ecj settings escalate to a compile error (caught by\nMaven, not by the Bazel javac build). Reference the declaring class\n(AppServerBase.username) instead of re-declaring the constants on both\nAppServers, which would reintroduce the duplication this change removes.\n\nAlternative considered: renaming the EE8 overlay to EE8AppServer.\nRejected because a distinct name forces rewriting every\n\"new AppServer(...)\" site in the transformed EE8 tests and couples the\ntransform to class names instead of imports.\n\nCopyright is carried over unchanged from the split file.\n\nChange-Id: I1d68bcc7d1d23668696ee91d8910f4940064bb37\n"
    },
    {
      "commit": "fbf29d88ccc90cf98d89b9f74bf4533fe618eda6",
      "tree": "2e2e8e148c96b255578df3610450657c00edc80d",
      "parents": [
        "6416c9f54558fcf7eac295f8a971bf404907dde1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jun 19 14:26:26 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 15:14:57 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet test targets\n\nAdd EE8 variants of the HTTP and LFS servlet test suites and run them\nagainst the generated EE8 servlet bridge artifacts.\n\nGenerate EE8 test sources from the canonical Jakarta-based tests by\nrewriting servlet API references and Jetty EE10 test helper imports to\ntheir EE8 equivalents. Export canonical test source filegroups so the\ngenerated tests remain synchronized with the primary test suites.\n\nIntroduce EE8 Jetty test dependencies, generated junit-http helpers,\nand JUnit suite generation for the transformed sources. Restore\nAppServer from the servlet-4 branch because its API usage cannot be\nconverted mechanically.\n\nExtend generated-source verification to cover test sources and ensure\nthat no Jakarta or Jetty EE10 servlet references remain in generated\nEE8 outputs.\n\nTest Plan:\n  bazelisk test \\\n    //tools/jgit-ee8:generated_srcs_test \\\n    //org.eclipse.jgit.http.test.ee8/... \\\n    //org.eclipse.jgit.lfs.server.test.ee8/...\n\nChange-Id: Id3d9312f0a93d443d83054a81b9d868611e18b27\n"
    },
    {
      "commit": "6416c9f54558fcf7eac295f8a971bf404907dde1",
      "tree": "9287de2af3b4da83e4f2c5a859e03bb02c9058ee",
      "parents": [
        "d14bd3b78f2a7982ff0b1de7ece6d2e4f679a23f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 05:08:19 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 15:05:25 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet bridge targets\n\nAdd Bazel-only generated EE8 targets for the HTTP servlet and LFS\nserver modules. The generated jars keep the original JGit Java\npackages and rewrite only servlet API references from jakarta.servlet\nto javax.servlet.\n\nThe rewrite uses the shared servlet-flavour transform toolchain from\nbazlets (transform_srcjar + generated_srcs_test.sh under //tools). It\nis a plain sed package-prefix substitution; the universal servlet and\nJetty package mapping lives in bazlets and this consumer selects only\nthe direction (to_javax), so it carries no renames data and adds no\nMaven dependency (no Eclipse Transformer CLI).\n\nThis supports source consumers that still run on EE8 while JGit master\nuses Jakarta servlet APIs. Gerrit is the known downstream consumer in\nthat state today and consumes JGit from source through a git submodule.\nWith these targets, Gerrit can track JGit master without a dedicated\nservlet-4 maintenance branch.\n\nThe goal is to let the servlet-4 branch be retired for Gerrit\u0027s\nmaintenance purposes. That branch was not offered as a stable JGit\nrelease line. Keeping Gerrit on it makes JGit updates hard for Gerrit,\nincluding updates for important fixes and improvements, and forces\nrepeated merge work from master onto a parallel branch.\n\nKeep the maintenance surface small. The EE8 targets consume canonical\nsrcs filegroups backed by glob([\"src/**/*.java\"]), so new Java sources\nflow into the generated jars without per-file BUILD updates. Resources\nare also shared through canonical filegroups.\n\nThis Bazel change intentionally does not add Maven, Tycho/p2, or Maven\nCentral publication machinery. Maven support is added by the follow-up\nMaven commit; Tycho/p2 remains out of scope because the EE8 jars export\nthe same packages as their canonical Jakarta counterparts and are not\nco-installable with them.\n\nAlso avoid relocating Java packages to org.eclipse.jgit.*.ee8. Keeping\nthe same package names avoids source-consumer import churn, but means\nthe canonical Jakarta jars and generated EE8 jars must not share a\nclasspath.\n\nPossible follow-ups are duplicate-classpath enforcement for source\nconsumers and additional generated EE8 modules only when a consumer\nneeds them.\n\nVerify generated source layout, line counts, javax servlet rewriting,\nand the absence of package-renamed .ee8 sources.\n\nStable-7.4 backport note: keep the cherry-picked BUILD/test targets\naligned with master, but wire their dependencies through WORKSPACE.\nAdd rules_shell, update bazlets, and expose javax-servlet-api through\nthe maven_jar repository used on this branch.\n\nChange-Id: I897e4facbbae79349e8d1853ea4dab8d7087ba5b\n"
    },
    {
      "commit": "d14bd3b78f2a7982ff0b1de7ece6d2e4f679a23f",
      "tree": "b72f052814a4dcf82ac9e3a9d9683eb1341f59f6",
      "parents": [
        "f07b8fbe89a5c822e71896b0cd57deb227e333fe"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 09:21:29 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 14:49:52 2026 +0200"
      },
      "message": "Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n\n//lib:servlet-api exported the canonical Jakarta servlet API\n(jakarta.servlet:jakarta.servlet-api:6.1.0). The name did not\ndistinguish it from //lib:javax-servlet-api, which the EE8 bridge in\n//org.eclipse.jgit.http.server.ee8 and //org.eclipse.jgit.lfs.server.ee8\nuses to depend on javax.servlet:javax.servlet-api:4.0.1.\n\nRename the canonical target to //lib:jakarta-servlet-api so the API\nflavour is self-evident at consumer sites. Migrate the six in-tree\nconsumers (http.server, http.test, junit.http, lfs.server,\nlfs.server.test, pgm) in the same change. No compatibility alias is\nkept: JGit is consumed from source by Gerrit through a git submodule,\nwhich has its own //lib:* wrappers, and the EE8 bridge commit added\n//lib:javax-servlet-api without an alias for the same reason.\n\nChange-Id: I764b01d171d2c2dc55fecef89bf4b36ce1cb9c59\n"
    },
    {
      "commit": "f07b8fbe89a5c822e71896b0cd57deb227e333fe",
      "tree": "d1b42f32cc196e0086b56084ddbd816d8cb4d930",
      "parents": [
        "f1082306d497793a7f4bdc09354fd6d55ef3f422"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jun 24 17:05:08 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 14:49:24 2026 +0200"
      },
      "message": "Bazel: format build files with buildifier\n\nChange-Id: I7a654fe8f138c4e59687d65a3ada4bfee4e51173\n"
    },
    {
      "commit": "1e0c1cebcc8028a1693d613427201f1a7f6a1da5",
      "tree": "bd29199b6b1e42d5c322c2a2c3655daa16754992",
      "parents": [
        "200be16661d3b9983bd34affd8e424daf5ad23d7"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 25 11:32:28 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 30 12:25:38 2026 +0000"
      },
      "message": "junit.http: Extract AppServerBase to dedupe the EE8 AppServer overlay\n\nThe EE8 servlet bridge ships a hand-maintained\norg.eclipse.jgit.junit.http.ee8 AppServer because the canonical\nAppServer cannot be rewritten into its EE8 form automatically: the Jetty\nsecurity API (Constraint.Builder + ContextHandler juggling) differs\nstructurally from the Jetty EE8 one (ServletConstraint +\nsetSecurityHandler), which a jakarta-\u003ejavax string rewrite cannot\nbridge. The overlay was a 461-line copy; only ~40 lines diverge.\n\nSplit the common code into an abstract AppServerBase and reduce both\nAppServers to the generation-specific part:\n\n  AppServerBase            common server/context/login wiring plus the\n                           protected abstract configureAuthentication()\n                           method; transform-safe (only the\n                           ServletContextHandler import renames ee10 -\u003e\n                           ee8).\n  AppServer (canonical)    EE10: Constraint.Builder + setHandler.\n  AppServer (ee8 overlay)  EE8: ServletConstraint + setSecurityHandler.\n                           461 -\u003e 103 lines.\n\nBoth toolchains pick AppServerBase up for free: the Bazel transform and\nthe Maven antrun copy both exclude only the file name AppServer.java, so\nAppServerBase.java flows through the jakarta-\u003ejavax / ee10-\u003eee8 rewrite\nwhile the hand-written EE8 AppServer.java stays the overlay. No BUILD or\npom changes. The class stays named AppServer in both worlds (separate\nclasspaths), so every \"new AppServer(...)\" site is untouched.\n\nMoving the shared username/password constants into AppServerBase turns\nthe AppServer.username uses in the HTTP tests into an indirect static\naccess, which JGit\u0027s ecj settings escalate to a compile error (caught by\nMaven, not by the Bazel javac build). Reference the declaring class\n(AppServerBase.username) instead of re-declaring the constants on both\nAppServers, which would reintroduce the duplication this change removes.\n\nAlternative considered: renaming the EE8 overlay to EE8AppServer.\nRejected because a distinct name forces rewriting every\n\"new AppServer(...)\" site in the transformed EE8 tests and couples the\ntransform to class names instead of imports.\n\nCopyright is carried over unchanged from the split file.\n\nChange-Id: I1d68bcc7d1d23668696ee91d8910f4940064bb37\n"
    },
    {
      "commit": "200be16661d3b9983bd34affd8e424daf5ad23d7",
      "tree": "7a31c2e2863791c7f770a7e7f10d50381ade317a",
      "parents": [
        "0f55a0f28e5e0c0507b75834f72f7c3b2340f1f3",
        "9b065e236f7f5ec9719cca48c0d963f37a47d2c6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Tue Jun 30 11:39:27 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Jun 30 11:39:27 2026 +0000"
      },
      "message": "Merge changes from topic \"ee8-servlet-bridge\"\n\n* changes:\n  Bazel: Add EE8 servlet test targets\n  Bazel: Add EE8 servlet bridge targets\n  Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n  Bazel: format build files with buildifier\n"
    },
    {
      "commit": "038353ea91fc4643c8e94215bdafccb8e34ea755",
      "tree": "f8bea5c2c25440d45345956af94cc4f08b8b2e44",
      "parents": [
        "d0ebb2a70e44ed7e19dd83834bc3b4143d044711"
      ],
      "author": {
        "name": "Mennig, Robin",
        "email": "Robin.Mennig@vector.com",
        "time": "Fri May 22 15:01:46 2026 +0200"
      },
      "committer": {
        "name": "Mennig, Robin",
        "email": "Robin.Mennig@vector.com",
        "time": "Tue Jun 30 09:23:18 2026 +0200"
      },
      "message": "DirCacheEntry: Fix mightBeRacilyClean() time difference calculation\n\nFixes error which caused \u0027racily clean\u0027 DirCacheEntry\u0027s to not be\nsmudged if the entry\u0027s cached modification time is\n((999,999,999 - the entry\u0027s cached nanoseconds-from-second value) + 1)\nor more nanoseconds later than the index\u0027s modification time.\n\nBug: jgit-267\nChange-Id: I09234558aa9158d91884d146e86f0518597629d0"
    },
    {
      "commit": "0f55a0f28e5e0c0507b75834f72f7c3b2340f1f3",
      "tree": "596dcf4c339ce2c2d4bcbab016f6a5bb040ffe6c",
      "parents": [
        "31459eb5b5cf41984b8c024b03b2814d3b25d3fa"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 29 11:50:59 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 29 11:52:41 2026 +0200"
      },
      "message": "Add NOTICE.md generated by the Legal Documentation generator\n\nCommitters can access the legal documentation generator here\nhttps://www.eclipse.org/projects/tools/documentation.php\n\nThis was requested in the June 2026 progress review of the JGit project\nlinked below.\n\nBug: https://gitlab.eclipse.org/eclipsefdn/emo-team/emo/-/work_items/1218\nChange-Id: I5ae96448580c99c481b7ef9a8c188c2201ad40b9\n"
    },
    {
      "commit": "9b065e236f7f5ec9719cca48c0d963f37a47d2c6",
      "tree": "252f44b945549f85fb757a856b045e1e5dadaeec",
      "parents": [
        "7bc7aaaa2b4c0b77df45df63f3eb7ad2a2b8c3f6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jun 19 14:26:26 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jun 27 13:04:01 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet test targets\n\nAdd EE8 variants of the HTTP and LFS servlet test suites and run them\nagainst the generated EE8 servlet bridge artifacts.\n\nGenerate EE8 test sources from the canonical Jakarta-based tests by\nrewriting servlet API references and Jetty EE10 test helper imports to\ntheir EE8 equivalents. Export canonical test source filegroups so the\ngenerated tests remain synchronized with the primary test suites.\n\nIntroduce EE8 Jetty test dependencies, generated junit-http helpers,\nand JUnit suite generation for the transformed sources. Restore\nAppServer from the servlet-4 branch because its API usage cannot be\nconverted mechanically.\n\nExtend generated-source verification to cover test sources and ensure\nthat no Jakarta or Jetty EE10 servlet references remain in generated\nEE8 outputs.\n\nTest Plan:\n  bazelisk test \\\n    //tools/jgit-ee8:generated_srcs_test \\\n    //org.eclipse.jgit.http.test.ee8/... \\\n    //org.eclipse.jgit.lfs.server.test.ee8/...\n\nChange-Id: Id3d9312f0a93d443d83054a81b9d868611e18b27\n"
    },
    {
      "commit": "7bc7aaaa2b4c0b77df45df63f3eb7ad2a2b8c3f6",
      "tree": "967fad6aaf03cbba3120ccd74bf473ffc03c91f0",
      "parents": [
        "1641a3f42d342c459fe5dc914f4eb0eeb543a214"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 05:08:19 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jun 27 13:03:58 2026 +0200"
      },
      "message": "Bazel: Add EE8 servlet bridge targets\n\nAdd Bazel-only generated EE8 targets for the HTTP servlet and LFS\nserver modules. The generated jars keep the original JGit Java\npackages and rewrite only servlet API references from jakarta.servlet\nto javax.servlet.\n\nThe rewrite uses the shared servlet-flavour transform toolchain from\nbazlets (transform_srcjar + generated_srcs_test.sh under //tools). It\nis a plain sed package-prefix substitution; the universal servlet and\nJetty package mapping lives in bazlets and this consumer selects only\nthe direction (to_javax), so it carries no renames data and adds no\nMaven dependency (no Eclipse Transformer CLI).\n\nThis supports source consumers that still run on EE8 while JGit master\nuses Jakarta servlet APIs. Gerrit is the known downstream consumer in\nthat state today and consumes JGit from source through a git submodule.\nWith these targets, Gerrit can track JGit master without a dedicated\nservlet-4 maintenance branch.\n\nThe goal is to let the servlet-4 branch be retired for Gerrit\u0027s\nmaintenance purposes. That branch was not offered as a stable JGit\nrelease line. Keeping Gerrit on it makes JGit updates hard for Gerrit,\nincluding updates for important fixes and improvements, and forces\nrepeated merge work from master onto a parallel branch.\n\nKeep the maintenance surface small. The EE8 targets consume canonical\nsrcs filegroups backed by glob([\"src/**/*.java\"]), so new Java sources\nflow into the generated jars without per-file BUILD updates. Resources\nare also shared through canonical filegroups.\n\nThis Bazel change intentionally does not add Maven, Tycho/p2, or Maven\nCentral publication machinery. Maven support is added by the follow-up\nMaven commit; Tycho/p2 remains out of scope because the EE8 jars export\nthe same packages as their canonical Jakarta counterparts and are not\nco-installable with them.\n\nAlso avoid relocating Java packages to org.eclipse.jgit.*.ee8. Keeping\nthe same package names avoids source-consumer import churn, but means\nthe canonical Jakarta jars and generated EE8 jars must not share a\nclasspath.\n\nPossible follow-ups are duplicate-classpath enforcement for source\nconsumers and additional generated EE8 modules only when a consumer\nneeds them.\n\nVerify generated source layout, line counts, javax servlet rewriting,\nand the absence of package-renamed .ee8 sources.\n\nChange-Id: I897e4facbbae79349e8d1853ea4dab8d7087ba5b\n"
    },
    {
      "commit": "1641a3f42d342c459fe5dc914f4eb0eeb543a214",
      "tree": "3370f1c3b045a9be66c2f6b0cbaff3ace4c1900e",
      "parents": [
        "71b8cede5b41c74e727515d72880c0277126f9a2"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 18 09:21:29 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jun 24 17:08:58 2026 +0200"
      },
      "message": "Bazel: Rename //lib:servlet-api to //lib:jakarta-servlet-api\n\n//lib:servlet-api exported the canonical Jakarta servlet API\n(jakarta.servlet:jakarta.servlet-api:6.1.0). The name did not\ndistinguish it from //lib:javax-servlet-api, which the EE8 bridge in\n//org.eclipse.jgit.http.server.ee8 and //org.eclipse.jgit.lfs.server.ee8\nuses to depend on javax.servlet:javax.servlet-api:4.0.1.\n\nRename the canonical target to //lib:jakarta-servlet-api so the API\nflavour is self-evident at consumer sites. Migrate the six in-tree\nconsumers (http.server, http.test, junit.http, lfs.server,\nlfs.server.test, pgm) in the same change. No compatibility alias is\nkept: JGit is consumed from source by Gerrit through a git submodule,\nwhich has its own //lib:* wrappers, and the EE8 bridge commit added\n//lib:javax-servlet-api without an alias for the same reason.\n\nChange-Id: I764b01d171d2c2dc55fecef89bf4b36ce1cb9c59\n"
    },
    {
      "commit": "71b8cede5b41c74e727515d72880c0277126f9a2",
      "tree": "197426ccd823888064a745970495b7fb8ec0512b",
      "parents": [
        "31459eb5b5cf41984b8c024b03b2814d3b25d3fa"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jun 24 17:05:08 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jun 24 17:05:08 2026 +0200"
      },
      "message": "Bazel: format build files with buildifier\n\nChange-Id: I7a654fe8f138c4e59687d65a3ada4bfee4e51173\n"
    },
    {
      "commit": "31459eb5b5cf41984b8c024b03b2814d3b25d3fa",
      "tree": "41847d040cb801bba7d4f0aa09a4f958968210b7",
      "parents": [
        "8fa8fc3a85a22828669a5bc14bcd3617810dc1bc"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 23 10:40:08 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 23 10:43:30 2026 +0200"
      },
      "message": "Update commons-logging to 1.4.0\n\nRelease notes:\nhttps://github.com/apache/commons-logging/blob/a685f33a4164813d908f43eac34c14f6b0dc4994/RELEASE-NOTES.txt\n\nChange-Id: I31635a8197226534c65396fa99b7e5a00daa8fdf\n"
    },
    {
      "commit": "8fa8fc3a85a22828669a5bc14bcd3617810dc1bc",
      "tree": "c26ebbbe85612b287ba3ad4b68185ee39bdc2150",
      "parents": [
        "0c4bb4039f11ab8de6d489e411c58d73af783b71",
        "6cf18b7ea3d9a5abe19407c5d6a8e7a342678a43"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Jun 17 13:35:49 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Jun 17 13:35:49 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Log loose ref deletion during ref cleanup\n\nChange-Id: I93980e0beae0f0ff383e4bac4d72556d4dccb796\n"
    },
    {
      "commit": "6cf18b7ea3d9a5abe19407c5d6a8e7a342678a43",
      "tree": "6c4d9b4292418bb0f94618c9f28822075c9f5587",
      "parents": [
        "11b7c35000f9de00182d5d29ff0da6fe8f82f827",
        "30a44f81134f4ba6afc6376fa8268e0a804ad092"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Jun 17 13:33:28 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Jun 17 13:33:28 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  Log loose ref deletion during ref cleanup\n\nChange-Id: I7cc8254ffa8f1f09265c544b3ead8cf3f4809bc5\n"
    },
    {
      "commit": "0c4bb4039f11ab8de6d489e411c58d73af783b71",
      "tree": "a73a06b54de3e91a1c9cfead87b092d16d0dcceb",
      "parents": [
        "b05364919ca50644bd39a398c8928b9e5a8ec20c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 15 23:31:06 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 15 23:31:06 2026 +0200"
      },
      "message": "Update jna to 5.19.1\n\nChange-Id: Ia27620bf4894b3112c62b8aa3bdec80aec1baea8\n"
    },
    {
      "commit": "30a44f81134f4ba6afc6376fa8268e0a804ad092",
      "tree": "d9c63eae981a509b8efb1d0ab54aa670d86bb0c7",
      "parents": [
        "84486f7e4840a4adea9aeacd69d8cd887898aaf9",
        "9462e297a9222c006e8276c548a81042df212739"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Mon Jun 15 09:12:49 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Mon Jun 15 09:12:49 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  Log loose ref deletion during ref cleanup\n\nChange-Id: I95e03400a75dec4afd2829abdb8532773d5e19bd\n"
    },
    {
      "commit": "9462e297a9222c006e8276c548a81042df212739",
      "tree": "067a96538959ddbc103effcf1377e2e02179032d",
      "parents": [
        "ee07d2be2d5b271169d344a0ff1237b2e64f5cac",
        "f1082306d497793a7f4bdc09354fd6d55ef3f422"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Mon Jun 15 09:10:56 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Mon Jun 15 09:10:56 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  Log loose ref deletion during ref cleanup\n\nChange-Id: Idc16a26243f26ba066623d36c124281b89f26568\n"
    },
    {
      "commit": "b05364919ca50644bd39a398c8928b9e5a8ec20c",
      "tree": "acfcd286ed6e7c0e3039b679fa0d48b16e7d4962",
      "parents": [
        "476c6a5c7926e061099c8eca31142da222ef80bd"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Jun 10 12:36:56 2026 +0300"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Jun 11 16:57:53 2026 +0300"
      },
      "message": "DfsObjDatabase: expose method to translate descriptions to PackList\n\nIn compact, we want to recalculate a list of packs and translate them\ninto DfsPackFile instances.\n\nExtract the code that translates descriptions into packs to a method\nand make it public. We expose the version without previous packList\nbecause it is the only one used in compact and then we do not need to\nmake NO_PACKS public.\n\nChange-Id: Ide71becf6910b6a9920c2c84aca1e1a96a6a6964\n"
    },
    {
      "commit": "476c6a5c7926e061099c8eca31142da222ef80bd",
      "tree": "1d9171d934ef80742fec0de20d6002e53c0ed22e",
      "parents": [
        "1c6d8987ce0cbed0d82b16ea564ef41e524e8bca"
      ],
      "author": {
        "name": "Vlad Arakelov",
        "email": "arakelov93@gmail.com",
        "time": "Fri May 29 20:39:58 2026 +0300"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Jun 10 13:52:53 2026 +0200"
      },
      "message": "Checkout: Reduce temp filename truncation from 200 to 50 chars\n\nCheckout writes new file content to a temporary file which is then\nrenamed atomically to the name of the file to be checked out to ensure\natomic updates. The name of the temporary file contains the truncated\nname of the file to be checked out to help investigating issues if e.g.\nsuch a temp file is left in the filesystem if the process crashed.\n\nNon-ascii filename of 200 chars could exceed the filesystem limit for\nfile name length, measured in bytes. Hence reduce truncation from 200 to\n50 chars. If the last char is a high surrogate truncate to 49 chars to\navoid creating an invalid file name.\n\nChange-Id: I90f29590d1875c9152272e6925e69a02d86427d5\n"
    },
    {
      "commit": "1c6d8987ce0cbed0d82b16ea564ef41e524e8bca",
      "tree": "7821c527003d7c793db039b9d985a7d23d1bb8af",
      "parents": [
        "60880a27d7a8725159e4e842266ab74643914e47"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 23:34:41 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 23:34:41 2026 +0200"
      },
      "message": "Update jetty to 12.1.10\n\nChange-Id: I3bc0c64c02082638ed8467cc83f4ada7e6216493\n"
    },
    {
      "commit": "60880a27d7a8725159e4e842266ab74643914e47",
      "tree": "db6d41362238992d727338fa7fe9056f626bd56d",
      "parents": [
        "5a995932e85c84a982dc61bcd58adff0b68de1d1"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 13:17:41 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 13:17:41 2026 +0200"
      },
      "message": "Update apache mina-sshd to 2.18.0\n\nChange-Id: Ib5b63e44c66bba41191a898fbf7ded04bdca5cd4\n"
    },
    {
      "commit": "5a995932e85c84a982dc61bcd58adff0b68de1d1",
      "tree": "e09029483b147e71cff35763b466a3127fe93b52",
      "parents": [
        "4d9cc4caa7078e878c140b178142292cddae326f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 10:54:44 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 10:54:44 2026 +0200"
      },
      "message": "Update jna to 5.19.0\n\nChange-Id: I14216d3a777da721cc8c7abe29cc2cf0148c1a4d\n"
    },
    {
      "commit": "4d9cc4caa7078e878c140b178142292cddae326f",
      "tree": "01566c2c26a677be1620f570b5f37a409d3a7f09",
      "parents": [
        "b41263c8dcb0ef44d7fc262bd85a7058ad4c064f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 10:53:16 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Jun 07 10:53:16 2026 +0200"
      },
      "message": "Update bytebuddy to 1.18.10\n\nChange-Id: Iedb7d15c74b8bc6953c011d7e604a50dd18c4be9\n"
    },
    {
      "commit": "b41263c8dcb0ef44d7fc262bd85a7058ad4c064f",
      "tree": "e85a8dcedf98da506dfbc35ca09bfa735e4a74b9",
      "parents": [
        "0ab6f6fc2388c5c7ff6d715f9628c5c7c3e00c9d",
        "2972195ae16b1ca6969073a0fb2098038b5fc4f7"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 23:32:01 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Jun 02 23:32:01 2026 +0000"
      },
      "message": "Merge changes I0dc49d46,I13e6ca09\n\n* changes:\n  Prepare 7.8.0-SNAPSHOT builds\n  Merge branch \u0027stable-7.7\u0027\n"
    },
    {
      "commit": "0ab6f6fc2388c5c7ff6d715f9628c5c7c3e00c9d",
      "tree": "6d8d4cc4f526a21d09022df386d55a13d85dc451",
      "parents": [
        "a6a41b9b615af287f4d7ec740c4597d6dead0075",
        "e05060ae85cb7a3694251e15f3f3d6a5442e179a"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Tue Jun 02 15:16:39 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Jun 02 15:16:39 2026 +0000"
      },
      "message": "Merge \"Bazel: Bump to 9.0.1\""
    },
    {
      "commit": "2972195ae16b1ca6969073a0fb2098038b5fc4f7",
      "tree": "45ba7347b9a4052f2b504a7a6ba8c1c5526c5620",
      "parents": [
        "de27c4618b288b493bedcf7ea42181d09c68eb3c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:22:33 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:23:42 2026 +0200"
      },
      "message": "Prepare 7.8.0-SNAPSHOT builds\n\nand bump jgit-last-release-version in pom.xml to 7.7.0.202606012155-r.\n\nChange-Id: I0dc49d46cc9659f0e356debacfa65ea1d475d7fd\n"
    },
    {
      "commit": "de27c4618b288b493bedcf7ea42181d09c68eb3c",
      "tree": "c3c0a568af56f6656a0716a0050b85c5f0781a28",
      "parents": [
        "a6a41b9b615af287f4d7ec740c4597d6dead0075",
        "11b7c35000f9de00182d5d29ff0da6fe8f82f827"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:21:50 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:21:50 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Prepare 7.7.1-SNAPSHOT builds\n  JGit v7.7.0.202606012155-r\n\nChange-Id: I13e6ca09de8dcf810356fe1e9d0be8b87a0075ae\n"
    },
    {
      "commit": "11b7c35000f9de00182d5d29ff0da6fe8f82f827",
      "tree": "c3c0a568af56f6656a0716a0050b85c5f0781a28",
      "parents": [
        "e15d6597f612ca4f3ad3abc19f5b112664b5ffcc"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:21:06 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jun 02 09:21:06 2026 +0200"
      },
      "message": "Prepare 7.7.1-SNAPSHOT builds\n\nChange-Id: I5a73e8af52bc9fc609f659c1ac85a60dcc4131dd\n"
    },
    {
      "commit": "e15d6597f612ca4f3ad3abc19f5b112664b5ffcc",
      "tree": "59c5844053b8806e5a415cf273672616f8a55904",
      "parents": [
        "16df20847bc100ed2303061307a3a022e67e6b70"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 01 23:56:16 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 01 23:56:16 2026 +0200"
      },
      "message": "JGit v7.7.0.202606012155-r\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I412a18a96f1217c5e1185bb0b6e2153a6424b990\n"
    },
    {
      "commit": "16df20847bc100ed2303061307a3a022e67e6b70",
      "tree": "72926e450495a821cb0b5c6ce78546845533007f",
      "parents": [
        "47a982af0475c8f0c6104d49ea8f499bd136f392",
        "a6a41b9b615af287f4d7ec740c4597d6dead0075"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 01 23:55:00 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Jun 01 23:55:00 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.7\n\n* master:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: Ifd10c4bbd32cdf6467638051e46a2a8e94d16258\n"
    },
    {
      "commit": "f1082306d497793a7f4bdc09354fd6d55ef3f422",
      "tree": "44a3027df04f422fecf36d4424797db0385a62ef",
      "parents": [
        "a14a4be392f848f36fcd13c0654cd814cf72000a",
        "b6ab654dbbdce5b5ae45c76835b2ca4b2d5794ce"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Jun 01 07:55:51 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon Jun 01 07:55:51 2026 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-7.3\u0027 into stable-7.4\" into stable-7.4"
    },
    {
      "commit": "a6a41b9b615af287f4d7ec740c4597d6dead0075",
      "tree": "72926e450495a821cb0b5c6ce78546845533007f",
      "parents": [
        "b302b8737d6e2976d9926be8b04338339dc1ea30",
        "84486f7e4840a4adea9aeacd69d8cd887898aaf9"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:30:04 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:30:04 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027\n\n* stable-7.6:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I4cec8207fa29a9217da99140cea1044a2dabde77\n"
    },
    {
      "commit": "84486f7e4840a4adea9aeacd69d8cd887898aaf9",
      "tree": "d04f87dcd75c8fbfaff5a0eb742ebdd7299e83e7",
      "parents": [
        "c16e26688f5c577298b168732e2519976697448a",
        "ee07d2be2d5b271169d344a0ff1237b2e64f5cac"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:37 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:37 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I7e177a2fb3c6273fc5b219a439d091731b8c7688\n"
    },
    {
      "commit": "ee07d2be2d5b271169d344a0ff1237b2e64f5cac",
      "tree": "1731e3e4b74c3df038e85574117d9fa96ae6d407",
      "parents": [
        "50e43d2c4c7525fc39f60fc6e0f90e4fae693165",
        "b6ab654dbbdce5b5ae45c76835b2ca4b2d5794ce"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:27 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:27 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: If01f38a6f24f18410521be763c36cd9574e95ce6\n"
    },
    {
      "commit": "b6ab654dbbdce5b5ae45c76835b2ca4b2d5794ce",
      "tree": "d4b20ce976fb706f955e1f498d69ad2c8a1093b0",
      "parents": [
        "faa32cb22502e1f756130c3427e0e03458e5dfc1",
        "305fbeec412bea5f62d0f3fafc8d445aee82de0a"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:05 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:29:05 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.3\u0027 into stable-7.4\n\n* stable-7.3:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I0c05be9dd6100eebeff42b0169c1978fe898b18f\n"
    },
    {
      "commit": "305fbeec412bea5f62d0f3fafc8d445aee82de0a",
      "tree": "d89dfb40f228c13de104328c2989fb80781ec2b6",
      "parents": [
        "a2c9827ede4ed392dfc02a00ee8cc4d86b09771f",
        "dd1d7b07d5b466916a04e9ff2f71ae9a05047d96"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:28:53 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:28:53 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.2\u0027 into stable-7.3\n\n* stable-7.2:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I448a6c3738f23d2ab682d963f87c85ede26472dc\n"
    },
    {
      "commit": "dd1d7b07d5b466916a04e9ff2f71ae9a05047d96",
      "tree": "8ed94d118e5792e3d2bce96b74f97fa694031915",
      "parents": [
        "9ded9a10df5d880fbdc54ebce95ef83b0e4c33a6",
        "49b2a100b438ac32860fec7d5a7a67a432681793"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:28:34 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:28:34 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.1\u0027 into stable-7.2\n\n* stable-7.1:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I5967885dbea7e43d00affbb514b0023eb4d0c50b\n"
    },
    {
      "commit": "49b2a100b438ac32860fec7d5a7a67a432681793",
      "tree": "3d19f561f3d6b8a0cb88c9b9b7d3006701f3191d",
      "parents": [
        "6f113ea23e450f3f3126371b67baacba7833ae74",
        "957ef2813d091fef32b0e9aa62dd2bea22a9cff5"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:21:35 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:21:35 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.0\u0027 into stable-7.1\n\n* stable-7.0:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: I2674d989478e415d2bfc7da7517b06bdc3053c14\n"
    },
    {
      "commit": "957ef2813d091fef32b0e9aa62dd2bea22a9cff5",
      "tree": "ed26f3b7e5d5a1bf5689782d8916b0a83a468550",
      "parents": [
        "7ccc9cccd5f2fb4b106c50d7817ac31e79a40eec",
        "f2c3bdde6437a3f4ce661f70a38cd4ea0c2f7def"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:19:57 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri May 29 11:19:57 2026 +0200"
      },
      "message": "Merge branch \u0027stable-6.10\u0027 into stable-7.0\n\n* stable-6.10:\n  Document JGit receive command size options\n  Document receive.autogc configuration option\n  Introduce fetch.autogc to disable concurrent GC upon fetches\n\nChange-Id: Ic1229e13247688d5976c93eeadcc13fcc6384bbb\n"
    },
    {
      "commit": "a14a4be392f848f36fcd13c0654cd814cf72000a",
      "tree": "c129813a063280a4204197642926938ef97ca0dc",
      "parents": [
        "faa32cb22502e1f756130c3427e0e03458e5dfc1"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Thu May 28 13:14:36 2026 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Fri May 29 10:37:09 2026 +0200"
      },
      "message": "Log loose ref deletion during ref cleanup\n\nAdd log messages when loose refs are deleted while deleting refs or\npacking refs.\n\nThese messages make it easier to investigate unexpected loose ref\ndeletions by recording which loose ref file was removed and from which\ncleanup path the deletion originated.\n\nChange-Id: I8a114404200934189bc1098757b1ce854b4e59ee\n"
    },
    {
      "commit": "b302b8737d6e2976d9926be8b04338339dc1ea30",
      "tree": "a20ff75dade0d4e8a4ad5a0b4def6dda61e855d6",
      "parents": [
        "8feffbabdf801c1603da5354e7d6202940329933",
        "47a982af0475c8f0c6104d49ea8f499bd136f392"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 28 21:07:13 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 28 21:07:13 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.202605262231-rc1\n\nChange-Id: I7b4ee149b4320979da9122db68e06b8b2411b431\n"
    },
    {
      "commit": "47a982af0475c8f0c6104d49ea8f499bd136f392",
      "tree": "a20ff75dade0d4e8a4ad5a0b4def6dda61e855d6",
      "parents": [
        "babb1df890117323fe5d6858d9b4812c723d4a26"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 28 21:06:11 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 28 21:06:11 2026 +0200"
      },
      "message": "Prepare 7.7.0-SNAPSHOT builds\n\nChange-Id: I5468bf25c89ed0e7529f119375dbaeb4ab6945e8\n"
    },
    {
      "commit": "babb1df890117323fe5d6858d9b4812c723d4a26",
      "tree": "7452a534729c6deb40eb0474f7f252f81b913eac",
      "parents": [
        "28925adaeae8b2615bff6c8f3565f9b445e52d79"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 27 00:31:54 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 27 00:31:54 2026 +0200"
      },
      "message": "JGit v7.7.0.202605262231-rc1\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I39b992778c00bc13887b55ba543aa14b5ad0e1fd\n"
    },
    {
      "commit": "28925adaeae8b2615bff6c8f3565f9b445e52d79",
      "tree": "a20ff75dade0d4e8a4ad5a0b4def6dda61e855d6",
      "parents": [
        "27a893ba60722b44d3f6161d65ab6041e1bb1ab9",
        "8feffbabdf801c1603da5354e7d6202940329933"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 27 00:30:45 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 27 00:30:45 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.7\n\n* master:\n  ReceivePack: Add option to retain PackParser\u0027s object IDs\n  ReceivePack: reject creation of one level refs such as refs/main\n  Implement SystemReader.isAndroid()\n\nChange-Id: I42a8c42b7ba02db4b449a744387826dbfc01cf2b\n"
    },
    {
      "commit": "8feffbabdf801c1603da5354e7d6202940329933",
      "tree": "a20ff75dade0d4e8a4ad5a0b4def6dda61e855d6",
      "parents": [
        "eeb8685890cab16ca0e6fb58be5740ae058fe8cc"
      ],
      "author": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Wed May 20 23:12:40 2026 +0000"
      },
      "committer": {
        "name": "Terry Parker",
        "email": "tparker@google.com",
        "time": "Mon May 25 21:37:32 2026 +0000"
      },
      "message": "ReceivePack: Add option to retain PackParser\u0027s object IDs\n\nWe need more control over inputs to the ConnectivityChecker, so\nadd public getter/setter for retaining parsed object IDs.\n\nIt would be cleaner if we could use ConnectivityCheckInfo to\nmanage checker-related config, but currently that object is only\ncreated immediately before running the checker, which is after\nthe PackParser has run.\n\nFor now this change should let us redeploy TreeWalkConnectivityChecker\nand get some data.\n\nChange-Id: I9ae0e2b16f0caa8e67a1b57b58c3984e2fa8775f\n"
    },
    {
      "commit": "eeb8685890cab16ca0e6fb58be5740ae058fe8cc",
      "tree": "16afe6e165c53623dd6bbb593ca39d78fa9bf0af",
      "parents": [
        "908a6a5848342883575fcdec5e917048de2a53e5"
      ],
      "author": {
        "name": "Antoine Musso",
        "email": "hashar@free.fr",
        "time": "Tue May 30 18:27:15 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon May 25 20:46:21 2026 +0200"
      },
      "message": "ReceivePack: reject creation of one level refs such as refs/main\n\nCgit describes valid reference names in the `git-check-ref-format(1)`\nmanual page which lists the constraints. Excluding the `refs/` prefix,\nthe name must contain at least one slash to enforce a category such as\n`heads/`, `tags/`.\n\nOn Gerrit, jGit accepts a user pushing to `refs/main` but when\nreplicating the reference using ssh and cgit, receive-pack on the remote\nrejects it with:\n\n Error: Failed replicate of refs/main to X, reason: funny refname\n\nIt is a special case in cgit `builtin/receive-pack.c`:\n\n--------8\u003c-----------8\u003c-----------8\u003c-----------8\u003c-----------8\u003c-----------\nstatic const char *update(struct command *cmd, struct shallow_info *si)\n{\n...\n        /* only refs/... are allowed */\n        if (!starts_with(name, \"refs/\") || check_refname_format(name +\n5, 0)) {\n                rp_error(\"refusing to create funny ref \u0027%s\u0027 remotely\",\nname);\n                return \"funny refname\";\n        }\n--------8\u003c-----------8\u003c-----------8\u003c-----------8\u003c-----------8\u003c-----------\n\nSo that if the part coming after `refs/` has a single component\n(`master`) it is rejected.\n\nBug: 582000\nChange-Id: Ica2bdc58e81459f08cfe42c2961a3c06622c30df\n"
    },
    {
      "commit": "f2c3bdde6437a3f4ce661f70a38cd4ea0c2f7def",
      "tree": "d9a51b14d6b2e8fca4a8b95704a8cbee6ea78bc8",
      "parents": [
        "9786d733db4ed7ff50197120b20d08300382a2e6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun May 24 14:23:59 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon May 25 11:49:43 2026 +0000"
      },
      "message": "Document JGit receive command size options\n\nDocument receive.maxCommandBytes and receive.maxCommandDiscardBytes,\nwhich limit the receive-pack command block and the amount of command\ndata discarded after the limit is exceeded.\n\nThese options are JGit-specific and do not correspond to native Git\nconfiguration options.\n\nChange-Id: I4e5c0586960b13acb814ff3e6a9e17153fd25ede\n"
    },
    {
      "commit": "9786d733db4ed7ff50197120b20d08300382a2e6",
      "tree": "8067653e7f478f24fc3ff0c61ed2d81cc088c908",
      "parents": [
        "41c2f03b2fc5c2d12a53f94893e6c7d336863cb1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun May 24 10:23:04 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon May 25 11:46:45 2026 +0000"
      },
      "message": "Document receive.autogc configuration option\n\nThe introduction for receive.autogc in I68a2a051b3 missed the\ndocumentation update.\n\nChange-Id: Ic47a31fd3f00ed60cbf77caccf4fcfcb75c6c5d7\n"
    },
    {
      "commit": "41c2f03b2fc5c2d12a53f94893e6c7d336863cb1",
      "tree": "60d628efac893a0cd9531502836e78a3c89d46de",
      "parents": [
        "1ac5210cbe8aa5d5ca2fc19d4f7c1fa18a8bf59e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat May 23 18:46:45 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun May 24 08:45:29 2026 +0000"
      },
      "message": "Introduce fetch.autogc to disable concurrent GC upon fetches\n\nThe introduction of the auto-gc mechanism in I68a2a051 did introduce a\nconditional execution after receive-pack but unconditional after a fetch\noperation.\n\nThere are concurrency issues when using the pull-replication plugin with\nGerrit, based on the execution of fetch operations on a server, when the\nfetch operation executed as part of a replication task triggers\nuncontrolled repository garbage collection.\n\nThe execution of the gc action can cause unexpected system overload and\nunwanted refs repacking.\n\nChange-Id: Ie6f17fc239131d669c0b898dbe5ed80a822c60d9\n"
    },
    {
      "commit": "908a6a5848342883575fcdec5e917048de2a53e5",
      "tree": "c2e005a29e84fad974b98fc768b7528ef0e9f90a",
      "parents": [
        "7216518f7ea6299e925e7885c11c9120528442b3"
      ],
      "author": {
        "name": "Victor Andreasson",
        "email": "victor.andreasson@fripost.org",
        "time": "Sat May 16 00:22:17 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun May 24 01:47:54 2026 +0200"
      },
      "message": "Implement SystemReader.isAndroid()\n\ninstead of catching a NoClassDefFoundError in GC.getPID().\n\nThis is done to get GC.getPID() to work on Android, where\nProcessHandle.pid() is not supported.\n\nChange-Id: Ia70affff96a682eb275dde1e5d14dccabf8db593\n"
    },
    {
      "commit": "7216518f7ea6299e925e7885c11c9120528442b3",
      "tree": "81012f89690f716f0e73c61b4a4baa49c1b82292",
      "parents": [
        "d0ebb2a70e44ed7e19dd83834bc3b4143d044711",
        "27a893ba60722b44d3f6161d65ab6041e1bb1ab9"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 21 09:24:36 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 21 09:24:36 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.202605201743-m3\n\nChange-Id: Ie30aee8dbcf46a17863bc74b2985562ab9ab70e1\n"
    },
    {
      "commit": "27a893ba60722b44d3f6161d65ab6041e1bb1ab9",
      "tree": "81012f89690f716f0e73c61b4a4baa49c1b82292",
      "parents": [
        "7a4ddccdcc3e638cc07774fca1537c9ffb64f70b"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 21 09:23:28 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu May 21 09:23:28 2026 +0200"
      },
      "message": "Prepare 7.7.0-SNAPSHOT builds\n\nChange-Id: Ic7f91f412a51e547885dad2164f787544c059b6e\n"
    },
    {
      "commit": "7a4ddccdcc3e638cc07774fca1537c9ffb64f70b",
      "tree": "a1cd082e8baae11ee98c58c9453aee3e7fb3954b",
      "parents": [
        "ed01b6abb512b58930f5adf017b85d9dcff29168"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 20 19:43:35 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 20 19:43:35 2026 +0200"
      },
      "message": "JGit v7.7.0.202605201743-m3\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I27fd4788cfd63943c1c2a6fd30d261359120dcd1\n"
    },
    {
      "commit": "ed01b6abb512b58930f5adf017b85d9dcff29168",
      "tree": "81012f89690f716f0e73c61b4a4baa49c1b82292",
      "parents": [
        "2b2c724a0a132262787543ac1bed9623b7563aaa",
        "d0ebb2a70e44ed7e19dd83834bc3b4143d044711"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 20 19:42:24 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 20 19:42:24 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.7\n\n* master:\n  TemporaryBuffer.LocalFile: use Files.newInputStream()\n  Update docs for logAllRefUpdates\n  DfsPackDescription: New method getTotalFileSize()\n  MidxPackList: Add a builder to edit the pack list\n  Update slf4j to 2.0.18\n  Update Jetty to 12.1.9\n  Update commons-io to 2.22.0\n  Update commons-codec to 1.22.0\n  Update gson to 2.14.0\n  Revert \"DfsPackCompactor: Accept DfsPackDescription as input\"\n  Pack/PackMidx: mark as @Nullable methods that deserve it\n  PackMidx: Style fixes like unused throws\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  DfsPackCompactor: Accept DfsPackDescription as input\n  DfsPackFileMidx tests: Compare byte[] for checksum\n  TestProtocolTest: Cover additional fetch edge cases\n  DfsPackCompacterTest: Add test for compacting only data in a pack\n  FetchProcess: Report lock failure when destination ref changes\n  MidxWriter: List instead of Collection and method references\n  Add regression test on non-forced fetch and local updates\n  PullResult: Improve toString by implementing for children.\n  pack-refs: Add fully-peeled flag\n  pack-refs: Fix buggy way of marking peeled trait\n  gitrepo: update git-repo URL in javadocs\n  RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\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\nChange-Id: I0d0016d59d6aa5a5c62704d2cef8f95a445345e3\n"
    },
    {
      "commit": "d0ebb2a70e44ed7e19dd83834bc3b4143d044711",
      "tree": "81012f89690f716f0e73c61b4a4baa49c1b82292",
      "parents": [
        "cac40fc37d673e6c60d05b6715ed7655608be50d"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Sun May 17 20:59:00 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed May 20 00:36:14 2026 +0200"
      },
      "message": "TemporaryBuffer.LocalFile: use Files.newInputStream()\n\nOn Unix, FileInputStream.skip() uses lseek under the hood and allows\nskipping beyond EOF, which makes WorkingTreeIterator.computeLength() go\ninto an endless loop.\n\nFiles.newInputStream() returns a sun.nio.ch.ChannelInputStream, which\nfor files does not skip beyond EOF, avoiding this endless loop.\n\nAt the point WorkingTreeIterator.computeLength() is called, the input\nstream is either a CR/LF-processing stream, which extend InputStream,\nwhich actually uses reads to implement skipping and thus doesn\u0027t skip\nbeyond EOF, or a BlockInputStream, which also does not skip beyond the\ncontent length, or a stream obtained from TemporaryBuffer.LocalFile.\n\nBug: jgit-261\nChange-Id: I2e1bfe04c308220a1c2d819e6414a6ff7b2f9c34\n"
    },
    {
      "commit": "cac40fc37d673e6c60d05b6715ed7655608be50d",
      "tree": "62ddfb176eefb13076ad6e25b4a9bdd015074fc3",
      "parents": [
        "e45c38b76a8a074f1c582da96511d036ae1e7e2d",
        "f5a9c691ae00b6c02cbf98803c08d4ada769da43"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon May 18 13:31:11 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon May 18 13:31:11 2026 +0000"
      },
      "message": "Merge \"Update docs for logAllRefUpdates\""
    },
    {
      "commit": "f5a9c691ae00b6c02cbf98803c08d4ada769da43",
      "tree": "358f26a762d321c29a903259d06222d25791ed1e",
      "parents": [
        "dbf1ab7c921953295cc90b1dfd90bc920b6ad07a"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu May 14 14:13:55 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon May 18 12:53:42 2026 +0000"
      },
      "message": "Update docs for logAllRefUpdates\n\nCurrently it looks like logAllRefUpdates is a boolean value that can be\neither enabled or not, while in reality there is a third possible value\nof \"always\" that is required to log the vast majority of the ref\nupdates.\n\nDocument this third option and make it clearer what\u0027s actually being\nlogged when setting it to true.\n\nChange-Id: I01a7700a05cbbd10cc9eeae9350f2671def4d813\n"
    },
    {
      "commit": "e45c38b76a8a074f1c582da96511d036ae1e7e2d",
      "tree": "65d122593d8c6f92356878b0a36fb62c89eb121c",
      "parents": [
        "2d5cf323888efcdc455998388e592be0a8efca3d",
        "6e6c7a95945cc5dfe4f6c4668d7e4332641f35da"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 15 18:55:13 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Fri May 15 18:55:13 2026 +0000"
      },
      "message": "Merge \"MidxPackList: Add a builder to edit the pack list\""
    },
    {
      "commit": "2d5cf323888efcdc455998388e592be0a8efca3d",
      "tree": "65ceb7a96c38b84cf1b01d207732f8551a1819e0",
      "parents": [
        "fc96d944082cbf5867d9e91180ea925e0bf429d5"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 15 11:02:36 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 15 11:04:46 2026 -0700"
      },
      "message": "DfsPackDescription: New method getTotalFileSize()\n\nIn code setting up the compact, we need to iterate over the extensions\nand adding their sizes. DfsPackDescription itself is a better place\nfor this functionality.\n\nAdd a getTotalFileSize() method returning the accumulated size of all\nextensions in the pack.\n\nChange-Id: Ief378305122ef2e74367ff44d187ee256a6a6964\n"
    },
    {
      "commit": "6e6c7a95945cc5dfe4f6c4668d7e4332641f35da",
      "tree": "99f03b539f9dc770f602e9421ef6fc50a1554be6",
      "parents": [
        "dbf1ab7c921953295cc90b1dfd90bc920b6ad07a"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Apr 22 11:44:47 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Fri May 15 09:15:27 2026 -0700"
      },
      "message": "MidxPackList: Add a builder to edit the pack list\n\nIn the compactor we have the existing list of packs, plus the new\npacks to add/remove. We need to combine all three to preview the new\npack list and calculate what to put in the midx.\n\nCreate a builder to add/remove packs. It takes care to take away from\nthe list invalid midxs, to keep the updated list valid.\n\nChange-Id: Ied89ecceca4b2921d4bef39516af0e7d6a6a6964\n"
    }
  ],
  "next": "fc96d944082cbf5867d9e91180ea925e0bf429d5"
}
