)]}'
{
  "log": [
    {
      "commit": "c47a2ebb9d4a5bb6c357afbe279384523619bef0",
      "tree": "e1800154c122f1090bc85ab76e5dbafe7a755770",
      "parents": [
        "3acbc874bcdfed8d0133de098841034f7e3db6f7",
        "4dd74a8f99b5e6ce8da99472d2b2bbbb38853c05"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 22 18:18:37 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Oct 22 18:18:37 2026 +0000"
      },
      "message": "Merge \"DirCacheEntry: Do not treat gitlink entries as smudged\""
    },
    {
      "commit": "3acbc874bcdfed8d0133de098841034f7e3db6f7",
      "tree": "657c0fdd97ea54fc12d5203936b979d3bb6c9be6",
      "parents": [
        "5452fc2eaee6517b0085316f346a95d463cfce0e"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 21 16:39:45 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 21 16:46:41 2026 +0200"
      },
      "message": "Update dependencies of download_release.py script\n\nThis fixes\n- https://github.com/eclipse-jgit/jgit/security/dependabot/7\n- https://github.com/eclipse-jgit/jgit/security/dependabot/13\n- https://github.com/eclipse-jgit/jgit/security/dependabot/14\n- https://github.com/eclipse-jgit/jgit/security/dependabot/15\n- https://github.com/eclipse-jgit/jgit/security/dependabot/16\n- https://github.com/eclipse-jgit/jgit/security/dependabot/17\n- https://github.com/eclipse-jgit/jgit/security/dependabot/18\n\nChange-Id: I3fe139c28b9eadbb5ad76e746ea5c13609bfa626\n"
    },
    {
      "commit": "5452fc2eaee6517b0085316f346a95d463cfce0e",
      "tree": "520fb18eaeb1ada2aa96897b8a4962f847d7c3f3",
      "parents": [
        "e0eec44be372cc29c22bfd5afbb6f9b38cc8827b",
        "b98e10becfbc53e1ad05f1b8b40be03d75cd16af"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 21 14:26:18 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Oct 21 14:26:18 2026 +0000"
      },
      "message": "Merge changes Iea3898c7,I2da78341,I656fb7c5\n\n* changes:\n  Use Java 25 to generate SBOM\n  Require Java 25 in packaging build\n  Remove target platforms and Orbit definitions older than 4.41\n"
    },
    {
      "commit": "4dd74a8f99b5e6ce8da99472d2b2bbbb38853c05",
      "tree": "f736598d7c2e9e5f072c6a01cf423d0a6965a84d",
      "parents": [
        "e0eec44be372cc29c22bfd5afbb6f9b38cc8827b"
      ],
      "author": {
        "name": "Enrico Mrass",
        "email": "emrass@google.com",
        "time": "Thu Oct 15 16:39:12 2026 +0000"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Tue Oct 20 15:54:42 2026 -0700"
      },
      "message": "DirCacheEntry: Do not treat gitlink entries as smudged\n\nDirCacheEntry.isSmudged() returns true whenever getLength() \u003d\u003d 0 and the\nobject ID is not Constants.EMPTY_BLOB_ID.\n\nHowever, a submodule gitlink entry (FileMode.GITLINK, mode 160000)\nrepresents a commit reference rather than a blob: its length in the\nindex is always 0 and its object ID is the submodule commit SHA (never\nEMPTY_BLOB_ID). Consequently, isSmudged() returns true for every\ngitlink entry, causing DirCache.writeTo() to run updateSmudgedEntries()\nand scan the working tree on every index write when submodules are\npresent.\n\nExclude FileMode.GITLINK entries in DirCacheEntry.isSmudged().\n\nGoogle-Bug-Id: b/573880998\nChange-Id: I9b415a7852b63f57388099800000000000000002\nSigned-off-by: Enrico Mrass \u003cemrass@google.com\u003e\n"
    },
    {
      "commit": "b98e10becfbc53e1ad05f1b8b40be03d75cd16af",
      "tree": "177da2649fa4f59b9b114def8221478a876d08fa",
      "parents": [
        "dc8972e6be2ee4bad920b794259f4ffec19a8bb5"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 11:04:16 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 11:04:55 2026 +0200"
      },
      "message": "Use Java 25 to generate SBOM\n\nChange-Id: Iea3898c76df78a9fc79ffe8b1501cb7bda54f180\n"
    },
    {
      "commit": "dc8972e6be2ee4bad920b794259f4ffec19a8bb5",
      "tree": "f943c051566dfd239d43a189d6d39da1cfa464a1",
      "parents": [
        "eae171d71a68629f57261f4214b34a203dc5d002"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 11:03:55 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 11:04:55 2026 +0200"
      },
      "message": "Require Java 25 in packaging build\n\nChange-Id: I2da783410a1703d455a1148633000d8179b18b04\n"
    },
    {
      "commit": "eae171d71a68629f57261f4214b34a203dc5d002",
      "tree": "158ddf9794c95d259d549223664fc88eea821421",
      "parents": [
        "f401b8719632b49ab0f66ba2af0dced43cebda5c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 10:10:12 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Oct 20 10:10:12 2026 +0200"
      },
      "message": "Remove target platforms and Orbit definitions older than 4.41\n\nand set the default to 4.41.\n\nJGit baseline becomes Eclipse 2026-09 (4.41.0) with this; EPPs before\nthat shipped with a Java 21 JRE. Eclipse itself has a BREE of Java 25 as\nof 2026-12.\n\nChange-Id: I656fb7c5edb2128e8904de80f66ae53403eb13bc\n"
    },
    {
      "commit": "e0eec44be372cc29c22bfd5afbb6f9b38cc8827b",
      "tree": "74666b7ce5c55b69f9d5856255e041539396adcd",
      "parents": [
        "f401b8719632b49ab0f66ba2af0dced43cebda5c"
      ],
      "author": {
        "name": "Enrico Mrass",
        "email": "emrass@google.com",
        "time": "Mon Oct 19 14:16:14 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Mon Oct 19 14:50:37 2026 -0700"
      },
      "message": "WorkingTreeIterator: Accept executable .gitignore/.gitattributes\n\nJGit was throwing an exception when .gitignore was a directory. To\nprotect against that, we limited .gitignore/.gitattributes to be a\nregular file [1]. This is correct, but break backwards compatibility, as\nwe have been accepting executable files before\n\nAccept regular or executable files for\n.gitignore/.gitattributes. Symlinks are not accepted by c-git and we\ndo not want to try parsing directories.\n\n[1] 7e18952f148d62e7ca379dafa9384d8d6fa038b4\n\nChange-Id: Idfa8e1a1c92987289868d719bfeff3d96a6a6964\n"
    },
    {
      "commit": "f401b8719632b49ab0f66ba2af0dced43cebda5c",
      "tree": "c00335a79f470bc945a6011c7e9776383de2f716",
      "parents": [
        "7e18952f148d62e7ca379dafa9384d8d6fa038b4"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Fri Oct 16 10:22:27 2026 -0700"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Oct 19 20:42:40 2026 +0000"
      },
      "message": "RevWalkCommitGraphTest: cover combinations of parseHeader/retainBody/commitGraph\n\nIn a RevCommit refactoring we lost an important optimization that saved\ndisk access and we didn\u0027t detect that before going into production.\n\nAdd test covering different combination of calls for headers/body when\nretainBody is enabled/disabled and commitGraph available or not.\n\nChange-Id: I5583ed33d765eb28c682b4cffbcf9e416a6a6964\n"
    },
    {
      "commit": "7e18952f148d62e7ca379dafa9384d8d6fa038b4",
      "tree": "602b8296721d1dbad5c1c2811b2ab494800305cc",
      "parents": [
        "38c4f8ccb51037f2652f10e3d5e5d1a614cd93b6"
      ],
      "author": {
        "name": "Enrico Mrass",
        "email": "emrass@google.com",
        "time": "Thu Oct 15 16:38:26 2026 +0000"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Fri Oct 16 14:58:56 2026 -0700"
      },
      "message": "WorkingTreeIterator: Do not treat .gitignore/.gitattributes directories as files\n\nIf a repository contains a directory named .gitignore or .gitattributes\n(for example .gitignore/.gitignore), loading ignore or attribute rules\nfor the directory attempts to open the directory with FileInputStream\nand fails with FileNotFoundException (Is a directory).\n\nLoad .gitignore or .gitattributes only from regular files. \n\nChange-Id: I9b415a7852b63f57388099800000000000000001\nSigned-off-by: Enrico Mrass \u003cemrass@google.com\u003e\n"
    },
    {
      "commit": "38c4f8ccb51037f2652f10e3d5e5d1a614cd93b6",
      "tree": "c9c663bf5d497b486ea4f0e0980396a1f1c71716",
      "parents": [
        "6e68739fd9535672d5f1316d943a2107063617e0"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 15 10:23:43 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 15 13:18:59 2026 -0700"
      },
      "message": "RevCommit: Do not read the object if it is in commit-graph\n\nIn [1] RevCommitCG was merged into its superclass RevCommit. The old\nRevCommitCG skipped reading from disk if the body was not needed\n(retainBody \u003d false), and the commit was in commit-graph. This was\nreplaced with reading always from disk, producing a performance\ndegradation.\n\nCheck if we only want headers and can use commit-graph before calling\nwalk.getCachedBytes.\n\nNow the parse methods are more symmetrical: both check for shallow\ncommits, store the body if isRetainBody and set the PARSED flag.\n\n\n[1] https://gerrithub.io/c/eclipse-jgit/jgit/+/1234062\n\nChange-Id: Ibf7a6989618d4a8d97278d85da749bc36a6a6964\n"
    },
    {
      "commit": "6e68739fd9535672d5f1316d943a2107063617e0",
      "tree": "dbc322bb6f65563ea30921ecb373c2b44cb0e4dd",
      "parents": [
        "b9df431c97d47daaee6f8ebb176ff61b1884993d",
        "6584414eab8a6ce20b85c1d94b6ebe128de172e6"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 08 21:02:37 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Oct 08 21:02:37 2026 +0000"
      },
      "message": "Merge \"MidxPackFilter: midx without covered packs are invalid\""
    },
    {
      "commit": "6584414eab8a6ce20b85c1d94b6ebe128de172e6",
      "tree": "7ac5bfbcf70aa8d09be3a3b156625412e3a8515a",
      "parents": [
        "2e3c2b06126a7a9da7aafe126ac5b115659d105c"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 08 11:21:18 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Oct 08 13:47:01 2026 -0700"
      },
      "message": "MidxPackFilter: midx without covered packs are invalid\n\nDue to bugs during development, we can find some stray midxs with no\ncovered packs. They pass a valid and break the repo.\n\nConsider midx without covering packs invalid, so they are ignored at\nreading time.\n\nChange-Id: I53455d9132943c90ea343c2f94d1f0f26a6a6964\n"
    },
    {
      "commit": "b9df431c97d47daaee6f8ebb176ff61b1884993d",
      "tree": "b1a896a1fe3ef0b3f0bd5e9639841c39535c33a8",
      "parents": [
        "ff7d4fe86a9171b2c243f8eb25efa80e6ef39b7f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 22:14:16 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Oct 08 10:10:43 2026 +0200"
      },
      "message": "Update tycho to 5.0.4\n\nChange-Id: I672dbf73c380836556151f32a811aaf3ee9c82d9\n"
    },
    {
      "commit": "ff7d4fe86a9171b2c243f8eb25efa80e6ef39b7f",
      "tree": "7179fb754e1d19854a019d56b0fa9069dc3eb17b",
      "parents": [
        "d7f6681cbe673bfa7fc0b54cc34252ef031584ec"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jul 11 12:36:10 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Oct 08 10:09:33 2026 +0200"
      },
      "message": "Update minimum Java version to 25\n\nRaise the Java baseline from 17 to 25 in both build toolchains.\n\nMaven: bump java.version in the root pom and the Javadoc links, and\nupdate the OSGi metadata of all bundles to JavaSE-25: MANIFEST.MF\nrequired execution environment, .classpath JRE containers, JDT\ncompiler compliance settings and jre.compilation.profile.\n\nSource adaptations, no behavior change:\n\n* Suppress the Error Prone JavaLangClash warning on\n  org.eclipse.jgit.util.IO, which clashes with java.lang.IO\n  introduced in Java 25; renaming is not an option since the class\n  is public API.\n* Replace close-only try-with-resources variables with the unnamed\n  variable introduced in Java 22: ECJ at compliance 25 reports\n  unused resource variables as errors. Affected are the NFS\n  attribute-refresh streams in FileReftableStack, LooseObjects,\n  PackDirectory and RefDirectory, the old-repository auto-close in\n  RepositoryCache, the PostReceiveExecutor in ReceivePack and the\n  FileChannel in FileUtils.touch.\n\nBug: jgit-292\nChange-Id: Iac0b305b3b10408cfe0eb78b406e2494bca36b31\n"
    },
    {
      "commit": "d7f6681cbe673bfa7fc0b54cc34252ef031584ec",
      "tree": "f25989285d1c42741b03e89b9b758a68f360f776",
      "parents": [
        "32cdc8c0833f7ea7355b90e226d0eced2620cf6f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Oct 08 08:37:08 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Oct 08 10:08:35 2026 +0200"
      },
      "message": "Make fsTick() robust to coarse on-write timestamps\n\nRepositoryTestCase.fsTick() advanced its probe file with\nFileUtils.touch(), which ends by setting the modification time\nexplicitly via utimensat. On a filesystem whose kernel assigns coarse\n(for example ~1 ms) timestamps on real writes, such as ext4 with\nCONFIG_HZ\u003d1000, that explicit set can report an advance the next\nordinary write does not honor: the write lands in the same coarse tick\nas the reference, so an index entry written after fsTick() is not\nstrictly newer than the work file and racy-git smudges it to length 0.\n\nThe flaw is pre-existing. On the measured Linux host, sub-millisecond\nThread.sleep() returned much sooner with Java 21 and 25 than with Java\n17: Java 17\u0027s longer sleep happened to cross a coarse tick and mask the\nrace, while the shorter sleeps on Java 21 and 25 return within the same\ntick and expose it reliably. This surfaces four timestamp-sensitive\ncore tests (RacyGitTests, FilterCommandsTest, GcPruneNonReferencedTest,\nFSTest) as failures under Java 25 on ext4.\n\nAdvance the probe with a genuine non-empty write instead, polling until\nthe filesystem\u0027s own modification time exceeds the reference. This\nobserves the real on-write granularity and holds the \"strictly newer\"\ncontract on coarse and fine filesystems alike, independent of\nThread.sleep() granularity.\n\nExercised under Java 17, 21 and 25 on Ubuntu 24.04.5 LTS (kernel\n6.8.0-138-generic, ext4), the real-write polling produced a strictly\nnewer on-write timestamp on every trial. The four affected tests pass\nunder Java 25.\n\nChange-Id: I546b3595b46500cd7ed1ce1e216439817014e078\n"
    },
    {
      "commit": "32cdc8c0833f7ea7355b90e226d0eced2620cf6f",
      "tree": "f525f6d48db27d59d13e026bdaa0dc9aab854c61",
      "parents": [
        "2c13f66e604c397a46e967d1c5b0da360dd947da"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Oct 07 14:10:43 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 22:11:23 2026 +0200"
      },
      "message": "DiffToolTest: don\u0027t assume temp files use java.io.tmpdir\n\ntestToolCached compared the temp file path that \"git difftool --staged\"\ncreates against System.getProperty(\"java.io.tmpdir\"). Inside the\nSurefire fork those two name different directories. In order:\n\n- the fork starts with -Djava.io.tmpdir\u003d${project.build.directory}\n  from the pgm.test pom, so java.io.tmpdir is \u003cmodule\u003e/target at startup\n- File.createTempFile captures that startup value and writes under\n  \u003cmodule\u003e/target\n- Maven is run with -Djava.io.tmpdir\u003d\u003cdir\u003e (as CI does), and Surefire\n  applies it with System.setProperty after the fork has started\n- System.getProperty therefore now returns \u003cdir\u003e, not \u003cmodule\u003e/target\n- the test expects \u003cdir\u003e/\u003cname\u003e_REMOTE_* but the file is under\n  \u003cmodule\u003e/target, so the match fails\n\nThis surfaced with the Java 17 -\u003e 25 bump: on Java 17\nFile.createTempFile read java.io.tmpdir live and so agreed with\nSystem.getProperty; since Java 21 it uses the value captured at JVM\nstartup, so the two diverge once Surefire changes the property after\nthe fork has started.\n\nNeutralize this JDK behavioral change by making no assumption about\nwhere the temporary directory comes from: match only the file name\npattern, not its directory, so the test harness is JDK-agnostic.\n\nChange-Id: I9c48f8c449301230f5a3a71b4ca98c1be911c8d6\n"
    },
    {
      "commit": "2c13f66e604c397a46e967d1c5b0da360dd947da",
      "tree": "694fdc6ffe40854024053b279d856be1977e5709",
      "parents": [
        "7d286bf40b7d0e5f9c86c87db0d998a91b362c84"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 29 11:06:26 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 22:11:23 2026 +0200"
      },
      "message": "Bump version to 8.0.0-SNAPSHOT\n\nWe plan to raise the minimum supported Java version to 25 which is a\nbreaking change. Hence bump the major version to 8.\n\nChange-Id: I1aeab162ec0a10d7d8cc9f74bf994f2c8f49d247\n"
    },
    {
      "commit": "7d286bf40b7d0e5f9c86c87db0d998a91b362c84",
      "tree": "9f1644ff346490262b3970869718b79e1f3d6513",
      "parents": [
        "58cbb6fe7bead55ea5edfa1e2db45a1613b0abac"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Oct 02 00:11:22 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 22:11:23 2026 +0200"
      },
      "message": "Add org.eclipse.jetty.session to the p2 repository\n\nChange-Id: I98aa9d8c0fc5e5948ba56d3bbc1523bc5f79f475\n"
    },
    {
      "commit": "58cbb6fe7bead55ea5edfa1e2db45a1613b0abac",
      "tree": "b8d2eb74c8209923bd5857281636b9ccb22d454e",
      "parents": [
        "d765834ca904d4007d6759d96d2e0629fa1bc2ed"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 15:57:31 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 22:11:23 2026 +0200"
      },
      "message": "Update gmavenplus-plugin to 5.1.0\n\nto prepare update to Java 25 which isn\u0027t supported by 4.2.1.\nBump the Groovy dependency of gmavenplus-plugin to 4.0.32; Groovy 4.0.21\ncannot read Java 25 class files (major version 69).\n\nChange-Id: I3e2fccf39c549755026f22d36368ccdcec6bb27f\n"
    },
    {
      "commit": "d765834ca904d4007d6759d96d2e0629fa1bc2ed",
      "tree": "566a19c2ffa1211e0546a99dd183ce65857924ed",
      "parents": [
        "2e3c2b06126a7a9da7aafe126ac5b115659d105c",
        "67f646eceed2a482379e18671ff43e2c23c5b63c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 21:36:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 21:36:32 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.9\u0027\n\n* stable-7.9:\n  Prepare 7.9.0-SNAPSHOT builds\n  JGit v7.9.0.202610071003-m1\n\nChange-Id: I0abffd0d92c92e09b1cf01a5cf7576e102f493af\n"
    },
    {
      "commit": "67f646eceed2a482379e18671ff43e2c23c5b63c",
      "tree": "66b013fdc35af442becf3912ca697f49d0a6d259",
      "parents": [
        "f5129ff7e5b3b3f87050c6e9cbe1c8aaea05b9a9"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 21:35:28 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 21:35:28 2026 +0200"
      },
      "message": "Prepare 7.9.0-SNAPSHOT builds\n\nChange-Id: Ie7d7a98ef576f732b8da0a99feb630d4ffe05a97\n"
    },
    {
      "commit": "2e3c2b06126a7a9da7aafe126ac5b115659d105c",
      "tree": "566a19c2ffa1211e0546a99dd183ce65857924ed",
      "parents": [
        "1901a84f75bd3aa565f55999076d7f7eacbcbca5",
        "55c0d26aaa7d1fef80258c5be2f3251ea13c565f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Wed Oct 07 11:37:55 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Oct 07 11:37:55 2026 +0000"
      },
      "message": "Merge \"Stabilize tests for Java 25\""
    },
    {
      "commit": "f5129ff7e5b3b3f87050c6e9cbe1c8aaea05b9a9",
      "tree": "a4ce6088a5fbb6130fdf176f74c291295af39e86",
      "parents": [
        "1901a84f75bd3aa565f55999076d7f7eacbcbca5"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 12:06:27 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 12:06:27 2026 +0200"
      },
      "message": "JGit v7.9.0.202610071003-m1\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I3fe10ce849826de04f3739e6fe4c09d9c5897a9f\n"
    },
    {
      "commit": "1901a84f75bd3aa565f55999076d7f7eacbcbca5",
      "tree": "66b013fdc35af442becf3912ca697f49d0a6d259",
      "parents": [
        "e1ccf59c30d14e6827789f07b044f6681b30786f",
        "f778dd85269d6c5c0015eea0cf7429a4d3d8e7c5"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 09:56:12 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Oct 07 09:56:12 2026 +0000"
      },
      "message": "Merge \"RefDirectoryUpdate: remove empty parent dirs created for lock\""
    },
    {
      "commit": "55c0d26aaa7d1fef80258c5be2f3251ea13c565f",
      "tree": "344be4ada20c1ffed3633c6692818b166ad101b6",
      "parents": [
        "e1ccf59c30d14e6827789f07b044f6681b30786f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Sep 28 20:43:12 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 07 09:57:24 2026 +0200"
      },
      "message": "Stabilize tests for Java 25\n\nRun tar subprocesses with a stable C locale so platform\nlocale diagnostics do not leak into ArchiveTest output checks.\n\nRelax InterruptTimerTest away from 1 ms scheduling assumptions.\nJava 25 running the parallel Maven test suite can starve the\nalarm thread long enough to miss that tiny window.\nUse a still-short timeout that is less brittle.\n\nChange-Id: If4a4d60f7459c5e4d847beb8c3cf42007819bd22\n"
    },
    {
      "commit": "e1ccf59c30d14e6827789f07b044f6681b30786f",
      "tree": "63d82af612b6f51318286656109e0014644a1d7a",
      "parents": [
        "1f8bdb0be40aedeb245fa3838650132c0677c3f5"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Sep 28 20:42:54 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Oct 06 11:37:34 2026 +0000"
      },
      "message": "Fix Java 25 prerequisite build issues\n\nSuppress the Error Prone JavaLangClash warning on\norg.eclipse.jgit.internal.util.IO, which clashes with java.lang.IO\nintroduced in Java 25.\n\nRemove invalid inheritDoc tags from FormatActivator lifecycle methods\nand Factory#getSupportedConnectors; Javadoc does not resolve the\nsupertype across the module boundary (OSGi BundleActivator for\nFormatActivator, the ConnectorFactory interface in a separate module\nfor Factory).\n\nMake the HEAD .lfsconfig tests query the cloned bare repository they\ncreate, matching the intended precedence setup.\n\nMake test-only resources explicit where Java 25 ECJ reports unused\nlocals, while preserving open/close side effects.\n\nChange-Id: I8ddedb363e04a3f3f7286c139370c356155bde94\n"
    },
    {
      "commit": "1f8bdb0be40aedeb245fa3838650132c0677c3f5",
      "tree": "16b81859e60562fd932b3f1a4718f59d89a0e2c2",
      "parents": [
        "e34e5de089e40426b5453ef1ab53955c100e39ac"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Sep 04 05:51:05 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Oct 06 11:37:23 2026 +0000"
      },
      "message": "Register the @nooverride custom javadoc tag\n\nRevWalk#createCommit(AnyObjectId) documents an API restriction with the\nEclipse API-tooling tag @nooverride, which standard javadoc does not\nrecognize. With failOnWarnings\u003dtrue the maven-javadoc-plugin fails with\n\"unknown tag. Unregistered custom tag?\".\n\nRegister @nooverride in the maven-javadoc-plugin \u003ctags\u003e configuration,\nnext to apiNote/implSpec/implNote, so javadoc accepts it.\n\nChange-Id: Ia4d376e3db59827e264ffb5825bd3ff1bda89b32\n"
    },
    {
      "commit": "e34e5de089e40426b5453ef1ab53955c100e39ac",
      "tree": "a2ac0c364b8c646203cb175885ee8c9bf3d040d5",
      "parents": [
        "6df8dbadd75a09deb940f16378337020c62359ef"
      ],
      "author": {
        "name": "Lukas Puehringer",
        "email": "lukas.puehringer@eclipse-foundation.org",
        "time": "Tue Sep 15 12:50:30 2026 +0200"
      },
      "committer": {
        "name": "Lukas Puehringer",
        "email": "lukas.puehringer@eclipse-foundation.org",
        "time": "Mon Oct 05 12:31:41 2026 +0200"
      },
      "message": "Authenticate SBOM uploads with PIA\n\nReplace the `actions/upload-artifact` step and deprecated `store-sbom-data`\nreusable-workflow job with the `upload-sbom` composite action, which\nuploads the SBOM to DependencyTrack (sbom.eclipse.org) via PIA.\n\nPIA authenticates the upload with OIDC, hence the added `id-token: write`\npermission, and resolves the DependencyTrack project from\nproduct-name/product-version, so the hard-coded parent project UUID is no\nlonger needed.\n\nMore at https://eclipse-csi.github.io/security-handbook/sbom/howto.html#how-to-upload-an-sbom-to-dependencytrack\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: Lukas Puehringer \u003clukas.puehringer@eclipse-foundation.org\u003e\n"
    },
    {
      "commit": "6df8dbadd75a09deb940f16378337020c62359ef",
      "tree": "c43b0292d47c7b94059982cec4bd2d6a9be6bf2b",
      "parents": [
        "f0260542d4b1ce2f40a57df74addbef026e7cee7"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Fri Oct 02 15:20:48 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Oct 04 05:59:09 2026 +0000"
      },
      "message": "WorkingTreeIterator: correct relative core.excludesFile\n\nC git resolves a relative path from core.excludesFile against the\nrepository working tree root. JGit resolved it against the current\nworking directory of the process.\n\nChange JGit to also resolve it against the working tree.\n\nBug: jgit-280\nChange-Id: I576d55f69352d1fd5ea30ab3a7a2c3614d614f3f\n"
    },
    {
      "commit": "f0260542d4b1ce2f40a57df74addbef026e7cee7",
      "tree": "b35e16a3eca38fc58c21f78389ed3b7dcc015d36",
      "parents": [
        "eccc8f4e07cecb3582c81998d6b371e7c8add163",
        "e47b4ce4dae35ce1c5742fc7872b2450837aa292"
      ],
      "author": {
        "name": "Nasser Grainawi",
        "email": "nasser.grainawi@oss.qualcomm.com",
        "time": "Thu Oct 01 19:56:52 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Oct 01 19:56:52 2026 +0000"
      },
      "message": "Merge \"Add/widen ignores for stat refresh failures\""
    },
    {
      "commit": "eccc8f4e07cecb3582c81998d6b371e7c8add163",
      "tree": "ca9315d4561cc0b8774c1b893e072fe96f76dfd2",
      "parents": [
        "2a14ab1865d22d0eeed1424b5998aa163fb53fb5"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Oct 01 00:25:10 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Oct 01 00:26:52 2026 +0200"
      },
      "message": "Update commons-lang3 to 3.21.0\n\nChange-Id: I85e62ab87e15e308c94d64142785100a34c719f1\n"
    },
    {
      "commit": "2a14ab1865d22d0eeed1424b5998aa163fb53fb5",
      "tree": "3e3a9bfb2820d40cf4b6c633f4b7ac89110ee205",
      "parents": [
        "69148f695b7e49e4e31e9b8572a89f94bb6c5d32"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 30 01:36:16 2026 +0200"
      },
      "committer": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Wed Sep 30 21:49:47 2026 +0200"
      },
      "message": "Update org.apache.sshd to 2.20.0\n\nChange-Id: If4bc9c3f5aeac034780ef52db924ed1ccae95997\n"
    },
    {
      "commit": "69148f695b7e49e4e31e9b8572a89f94bb6c5d32",
      "tree": "2014dd520afae50e0098948a7c861ed972dce5ee",
      "parents": [
        "0399a37b40fb26a104eb82c7ee83839296443b1c"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Wed Sep 30 21:49:10 2026 +0200"
      },
      "committer": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Wed Sep 30 21:49:47 2026 +0200"
      },
      "message": "SshdSession: fix timeout for SFTP channel opening\n\nFix questionable SFTP timeout handling in SshdSession.SshdFtpChannel.\nIt makes absolutely no sense to wait forever. If the given timeout is\n\u003c\u003d 0, let Apache MINA SSHD use its default timeout of 15 seconds\ninstead.\n\nChange-Id: I5a07ffd141131e124e9565195c6d8f7591db566a\n"
    },
    {
      "commit": "0399a37b40fb26a104eb82c7ee83839296443b1c",
      "tree": "4e55787c3820b8e4ad01a9c7ca7a0d470f2b58af",
      "parents": [
        "2d246ed6f8d1a6bdad75027c0149341c78376f03"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 30 02:07:02 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 30 15:42:53 2026 +0200"
      },
      "message": "Add jgit 4.42 target platform for Eclipse IDE 2026-12\n\nChange-Id: I0de2aca56fbfa7d5e00716ac065e5e47d94d0afd\n"
    },
    {
      "commit": "2d246ed6f8d1a6bdad75027c0149341c78376f03",
      "tree": "089883f70d5c87308d8d68d74273aaa98c183d78",
      "parents": [
        "caa3a2f57a384f83d005e30889cd706aaf5ee3a3"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 30 02:08:01 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 30 15:28:01 2026 +0200"
      },
      "message": "Use releases p2 repo for 2026-09 which was released recently\n\nChange-Id: I86ffb8c396e5f51af4b45575317199f9fe9908cc\n"
    },
    {
      "commit": "e47b4ce4dae35ce1c5742fc7872b2450837aa292",
      "tree": "6ac355ea57ca28758afda251383c47a915e079d5",
      "parents": [
        "bc1df37307544c6ef4b89ec0ec5f63261c888e99"
      ],
      "author": {
        "name": "adityaanikam",
        "email": "adityanikam9502@gmail.com",
        "time": "Sun Sep 13 01:12:47 2026 +0530"
      },
      "committer": {
        "name": "adityaanikam",
        "email": "adityanikam9502@gmail.com",
        "time": "Tue Sep 29 14:49:55 2026 +0530"
      },
      "message": "Add/widen ignores for stat refresh failures\n\nWith core.trustLooseObjectStat (or core.trustFolderStat) set to\nnever, looking up a loose object that is not there opens the objects\ndirectory as a stream to refresh NFS attribute caches, then retries\nthe read. Opening a directory that way fails on Windows with\nAccessDeniedException, and getObjectLoader() and getSize() let it\nescape. A missing object then surfaces as an IOException instead of\nnull or -1, and FetchProcess turns it into \"Unable to check\nconnectivity\" and aborts the fetch instead of asking the remote for\nthe object.\n\nhas() already treats a failed refresh as the object not being found,\nand PackDirectory ignores the same failure when refreshing the pack\ndirectory. Make the refresh best effort in getObjectLoader() and\ngetSize() as well, so the retry runs and a missing object is reported\nas missing.\n\nAlso widen the catch on LooseObjects.open(),\nFileReftableStack.isUpToDate(), and\nRefDirectory.shouldRefreshPackedRefs() to include all IOExceptions.\nEach method already treats a failed refresh as best effort and falls\nthrough to using cached data, so widening FileNotFoundException |\nNoSuchFileException to IOException only extends that existing behavior\nto also cover AccessDeniedException and other refresh failures.\n\nBug: jgit-296\nChange-Id: I580569a9c472fcaa4f37e67eac95592c25a0212b\n"
    },
    {
      "commit": "f778dd85269d6c5c0015eea0cf7429a4d3d8e7c5",
      "tree": "52f6c8e84f3a4a3f299a2d0904954e307acffa63",
      "parents": [
        "47c34809c8615e95382f85acd7902736c7d823a4"
      ],
      "author": {
        "name": "Ajay Gupta",
        "email": "ajagup@qti.qualcomm.com",
        "time": "Fri Sep 25 13:38:06 2026 +0530"
      },
      "committer": {
        "name": "Ajay Gupta",
        "email": "ajagup@qti.qualcomm.com",
        "time": "Mon Sep 28 14:15:06 2026 +0530"
      },
      "message": "RefDirectoryUpdate: remove empty parent dirs created for lock\n\nUpdating or deleting a ref first locks it, and LockFile.lock() creates\nthe ref\u0027s parent directories to hold the lock file. If the lock is\nreleased without being committed, the lock file is removed but the\ndirectories created for it are left behind. This happens when:\n\n- deleting a ref that only exists in packed-refs,\n- deleting a ref that does not exist,\n- an update is rejected, e.g. because the expected old value does not\n  match.\n\nOver time this accumulates many empty directories under refs/. For\nexample, an application that creates short-lived refs with unique\nmulti-level names and deletes them after they were packed by gc, or\ndeletes refs that were never created, left ~22k empty directories in\none repository. On NFS, scanning loose refs then took ~10s, which made\nevery full ref scan that slow.\n\nWhen releasing a lock that was not committed, delete the empty parent\ndirectories of the ref, as is already done when deleting a loose ref.\nSkip this if the ref was loose when it was locked, since its directory\nstill contains the ref file.\n\nChange-Id: I427b62c7dd252eb75dba3ca167fd6afaf6370d66\nSigned-off-by: Ajay Gupta \u003cajagup@qti.qualcomm.com\u003e\n"
    },
    {
      "commit": "caa3a2f57a384f83d005e30889cd706aaf5ee3a3",
      "tree": "d39057a6d0f4c29460e3709d3979e5a34f5eec75",
      "parents": [
        "dbabf06a9e19dba3372078e7ad9c9646d52613fc",
        "c931ad97914f5eebcb370b11ccd25543c2de7a4a"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Sep 27 21:47:34 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Sun Sep 27 21:47:34 2026 +0000"
      },
      "message": "Merge \"Update version of last JGit release to 7.8.0.202609011348-r\""
    },
    {
      "commit": "dbabf06a9e19dba3372078e7ad9c9646d52613fc",
      "tree": "46539309365e1ff6762bc884072779b147ca00a9",
      "parents": [
        "13dbd6a3fdba502968a7b2fc08eb47b907491137",
        "70a48442f663c9cda6ef7a4bcdc2d2a17b30a3bb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sun Sep 27 21:46:56 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Sun Sep 27 21:46:56 2026 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-7.8\u0027\""
    },
    {
      "commit": "c931ad97914f5eebcb370b11ccd25543c2de7a4a",
      "tree": "1e374e40a4e2800322e5efe777f48e6511e28f6c",
      "parents": [
        "13dbd6a3fdba502968a7b2fc08eb47b907491137"
      ],
      "author": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Sat Sep 26 20:40:30 2026 +0200"
      },
      "committer": {
        "name": "Thomas Wolf",
        "email": "twolf@apache.org",
        "time": "Sat Sep 26 20:41:22 2026 +0200"
      },
      "message": "Update version of last JGit release to 7.8.0.202609011348-r\n\nChange-Id: I0d7d1d9823c96136ec7376a304291b8de0238e34\n"
    },
    {
      "commit": "13dbd6a3fdba502968a7b2fc08eb47b907491137",
      "tree": "ea2f7269265c726975b901fa279dadcf1e93b554",
      "parents": [
        "339eefdf56edcb87131692114e5852d8fbd5b4c6"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:27:51 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:27:51 2026 +0200"
      },
      "message": "Update slf4j to 2.0.20\n\nChange-Id: I682377f97605be81c3d419ded461eca7d48a946f\n"
    },
    {
      "commit": "339eefdf56edcb87131692114e5852d8fbd5b4c6",
      "tree": "68bcf938329e3a508f496f2340253f8ae94bfb91",
      "parents": [
        "3db3b493923353ae5ba6054b5d9829315c8f867d"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:26:13 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:26:13 2026 +0200"
      },
      "message": "Update mockito to 5.24.0\n\nChange-Id: I54856e21eb4cc763ed3dd5a5eb2de29c8b218d33\n"
    },
    {
      "commit": "3db3b493923353ae5ba6054b5d9829315c8f867d",
      "tree": "0deb48a71ea6ae09a7afcaf0f0b235d3f6fde968",
      "parents": [
        "326d8f89496076560041f6db8290643aa0ca3f7c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:07:29 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:07:29 2026 +0200"
      },
      "message": "Update jetty to 12.1.13\n\nChange-Id: I8d57effbba190c2a8e8e948de29a93ea2dfbebf0\n"
    },
    {
      "commit": "326d8f89496076560041f6db8290643aa0ca3f7c",
      "tree": "742d43b8bc887d5f86f061efa825ccf237321fec",
      "parents": [
        "fdb7d0a994530fb7aeed764e2ba9e4f503fc4a92"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:06:04 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:06:04 2026 +0200"
      },
      "message": "Update bytebuddy to 1.18.14\n\nChange-Id: I4a1ad6a939f4b748912b9e58cdf82772dc0cd09f\n"
    },
    {
      "commit": "fdb7d0a994530fb7aeed764e2ba9e4f503fc4a92",
      "tree": "1afdd35caa2ffc93465bf312b9572a7c98585a5a",
      "parents": [
        "47c34809c8615e95382f85acd7902736c7d823a4"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:04:37 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Sat Sep 26 08:04:37 2026 +0200"
      },
      "message": "Update bouncycastle to 1.86\n\nChange-Id: I0f70088d540d111867a74b60855d33f3984d5bfb\n"
    },
    {
      "commit": "47c34809c8615e95382f85acd7902736c7d823a4",
      "tree": "0ee3d20462fdf339d768de263adbc007c6e5c6fd",
      "parents": [
        "61443d9ce43c757e374e016f8705354b7d73277e"
      ],
      "author": {
        "name": "Youtirsin",
        "email": "brocodzhang@tencent.com",
        "time": "Wed Sep 23 16:56:45 2026 +0800"
      },
      "committer": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 23 18:03:27 2026 +0000"
      },
      "message": "PackMidx: getObjectSizeIndexCount returns always 0\n\nPack.getObjectSizeIndexCount() doc says that it returns 0 when the pack\nhas no object size index, but PackMidx throws\nUnsupportedOperationException. This makes GC.getStatistics() fail on a\nrepo with a multi-pack-index.\n\nMake PackMidx follow the contract of its base class and return 0, as a\nmidx never has an object size index.\n\nChange-Id: I621cfb2994e7b6bde55543eb1f8d2b0393bd3755\nSigned-off-by: Youtirsin \u003cbrocodzhang@tencent.com\u003e\n"
    },
    {
      "commit": "70a48442f663c9cda6ef7a4bcdc2d2a17b30a3bb",
      "tree": "8f0da668f85947c595d45de1e7b48e7dbfdd8c07",
      "parents": [
        "61443d9ce43c757e374e016f8705354b7d73277e",
        "16c7b72454ba6d4ade4c26fcd7b994ac1183d142"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:32:14 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:32:14 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.8\u0027\n\n* stable-7.8:\n  Handle interrupt in fundamental methods\n\nChange-Id: Iac6cba16074cc8de4c94dc4c9ea12d94310ba7f1\n"
    },
    {
      "commit": "16c7b72454ba6d4ade4c26fcd7b994ac1183d142",
      "tree": "0253e0abb65826c324c45a8c422a75514871c513",
      "parents": [
        "d11c0af19c103d8e62bab3945fdd4d5250348348",
        "568c7bddb56fb041ab8884eaaf6535590361bad3"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:30:32 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:30:32 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027 into stable-7.8\n\n* stable-7.7:\n  Handle interrupt in fundamental methods\n\nChange-Id: I1ec63b0e8e79d7300c66a5346560f457872eaa51\n"
    },
    {
      "commit": "568c7bddb56fb041ab8884eaaf6535590361bad3",
      "tree": "6e10b56c2d50a931633ffd43bf15aaa6c0e02ba5",
      "parents": [
        "182a140566592276ac94146b26cd43242b03965c",
        "dd4a5ab05b4193d0b3923d9e575ae85e57cc868d"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:29:48 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:29:48 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  Handle interrupt in fundamental methods\n\nChange-Id: Ia3c9806d724e2de4d9756ae8f3e786b9e412d695\n"
    },
    {
      "commit": "dd4a5ab05b4193d0b3923d9e575ae85e57cc868d",
      "tree": "56604c7e0715e7255c1a9bb8b00c89825f14e654",
      "parents": [
        "dea9739adad30a71d972dcaa65d6a5afba90fe75",
        "eb766d56424ffe24d8d4a7f0f9a69f86157ee4f3"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:29:12 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:29:12 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  Handle interrupt in fundamental methods\n\nChange-Id: I9fba6ad1cdabe245f62ac3ddc4bf4c7f7e520298\n"
    },
    {
      "commit": "eb766d56424ffe24d8d4a7f0f9a69f86157ee4f3",
      "tree": "550e870cd1dedf93aa4a92a48bc00cc80baaf457",
      "parents": [
        "f9d6f9c7ce6c0fd799f9f288961c1db1e45fc129",
        "6f442d0b830b069e45986217177011c7421657a5"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:28:12 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:28:12 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  Handle interrupt in fundamental methods\n\nChange-Id: Ib03d695c6cb352a93a30881720ee5c538354d1f3\n"
    },
    {
      "commit": "6f442d0b830b069e45986217177011c7421657a5",
      "tree": "1a2805edbe19ac60f4e383c9aa9ffd732d3edc14",
      "parents": [
        "98dd2f8d059466ee09209caa66b2f46db11f33d2",
        "57342921c06e98e399861ec89cd6661edcf66a73"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:27:05 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:27:05 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.3\u0027 into stable-7.4\n\n* stable-7.3:\n  Handle interrupt in fundamental methods\n\nChange-Id: I5a6ba84eb1b778f8db6c0c6dc7d118b74ab1f708\n"
    },
    {
      "commit": "57342921c06e98e399861ec89cd6661edcf66a73",
      "tree": "0c1adc4774c2272d61a6c74532aee2e51a37ebc2",
      "parents": [
        "0154cee1e1711aea0dafc19e7cfa0403dd095a49",
        "8a1f72d6401ae24f58392473a070ff941179d67d"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:23:24 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:23:24 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.2\u0027 into stable-7.3\n\n* stable-7.2:\n  Handle interrupt in fundamental methods\n\nChange-Id: I097310c1b3d68206944155350ee60f55fd6fb9c5\n"
    },
    {
      "commit": "8a1f72d6401ae24f58392473a070ff941179d67d",
      "tree": "4ac47597915e7d72d11de0f87d7875d03907d051",
      "parents": [
        "8f3121e41fb44025133d69296542f9fe2e8a0850",
        "3dc37306ef6513467c0f2b6a8304b71acde80dc8"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:22:12 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:22:12 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.1\u0027 into stable-7.2\n\n* stable-7.1:\n  Handle interrupt in fundamental methods\n\nChange-Id: I76bcecf86716bf36f101cc8b6b514f8afebb55b4\n"
    },
    {
      "commit": "3dc37306ef6513467c0f2b6a8304b71acde80dc8",
      "tree": "c9fa599fb3247dd7377ff5a5f8645b7c572fce52",
      "parents": [
        "e4a023f80ab7f74a0d999071482b09d5c3aac8cc",
        "8453d1c033812a1361c723bea937a0e8b12fac6a"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:20:52 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:20:52 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.0\u0027 into stable-7.1\n\n* stable-7.0:\n  Handle interrupt in fundamental methods\n\nChange-Id: I05d47d590ea5ae297a253b041d603f7463755729\n"
    },
    {
      "commit": "8453d1c033812a1361c723bea937a0e8b12fac6a",
      "tree": "68a502af6eb6bd1f981ae192f39362d3919e1983",
      "parents": [
        "13ad01813f0a9355ffd9bc6653ce3dec5b1ff707",
        "6f166ac9561e1c7e8764cc57e53c2cbeb0d585cc"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:19:16 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 23 12:19:16 2026 +0200"
      },
      "message": "Merge branch \u0027stable-6.10\u0027 into stable-7.0\n\n* stable-6.10:\n  Handle interrupt in fundamental methods\n\nChange-Id: I0c6a948d0a17850ede0c4fb6551293a1e6a86737\n"
    },
    {
      "commit": "61443d9ce43c757e374e016f8705354b7d73277e",
      "tree": "60bbbe02811d2c61a410dca690cd978d3acb81e9",
      "parents": [
        "7f859d1eff3db80fbe130f0c55275d46f7ff1942",
        "db6eb2d0fad9017e943a13d27d4ad9134d1f7a18"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Sep 17 12:38:42 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Thu Sep 17 12:38:42 2026 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-7.8\u0027\""
    },
    {
      "commit": "7f859d1eff3db80fbe130f0c55275d46f7ff1942",
      "tree": "60bbbe02811d2c61a410dca690cd978d3acb81e9",
      "parents": [
        "f61271f8bbd3222a40c3d3a54407cf8283c93970",
        "f1a45c953598ea52b00c42a9334655dd072c29e4"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 16 17:08:36 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Sep 16 17:08:36 2026 +0000"
      },
      "message": "Merge \"MidxPackFilter: Support a midx chain per source\""
    },
    {
      "commit": "db6eb2d0fad9017e943a13d27d4ad9134d1f7a18",
      "tree": "30d2fcdb6b13033800bbe10b480cdf22abd170fa",
      "parents": [
        "d868f6b7a205285852e7ea6a11e4581c63deba6e",
        "d11c0af19c103d8e62bab3945fdd4d5250348348"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:42:23 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:42:23 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.8\u0027\n\n* stable-7.8:\n  RefTable: clear cache in finally block\n  Protect reftable readers during stale reload\n\nChange-Id: I7a6a316b94834687617e861594257f9118ad586d\n"
    },
    {
      "commit": "d11c0af19c103d8e62bab3945fdd4d5250348348",
      "tree": "ffc985130a96dcffde8f99d75d1d636b7903e3bb",
      "parents": [
        "e7e0f65ce83fb6088ec07bb4b767b06b5a2a0a1f",
        "182a140566592276ac94146b26cd43242b03965c"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:39:29 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:39:29 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027 into stable-7.8\n\n* stable-7.7:\n  RefTable: clear cache in finally block\n  Protect reftable readers during stale reload\n\nChange-Id: I9ec9e0030f187566d67ebf8cd4f657349ab81b84\n"
    },
    {
      "commit": "182a140566592276ac94146b26cd43242b03965c",
      "tree": "869df1ad9548e4b9aef9fbddd575e33b650c7fc1",
      "parents": [
        "c062a12363e5033039bc7c654e06ab351e146cbb",
        "dea9739adad30a71d972dcaa65d6a5afba90fe75"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:36:46 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:36:46 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  RefTable: clear cache in finally block\n  Protect reftable readers during stale reload\n\nChange-Id: I3a214b1a4bd0c0b94af6fc409e1f400e1b214077\n"
    },
    {
      "commit": "dea9739adad30a71d972dcaa65d6a5afba90fe75",
      "tree": "a679c62f04d4f752d4a96d753307bf946afbd37e",
      "parents": [
        "989a5c40d7a6c95944a92f48e47296b53f2aea7f",
        "f9d6f9c7ce6c0fd799f9f288961c1db1e45fc129"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:33:46 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 16:33:46 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  RefTable: clear cache in finally block\n  Protect reftable readers during stale reload\n\nChange-Id: I89a02ef69e47bb552cb0bf19d9c4a57407d54049\n"
    },
    {
      "commit": "f61271f8bbd3222a40c3d3a54407cf8283c93970",
      "tree": "9bae6e77b7a65bb0cabfb8f5676b8f3c1df3543c",
      "parents": [
        "d868f6b7a205285852e7ea6a11e4581c63deba6e"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 16 15:42:49 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 16 15:42:49 2026 +0200"
      },
      "message": "Fix @since tag for changedPathsVersion key in ConfigConstants\n\nThe change Ifd5fc15cadbc7c5331a4f91fb0671a7c6a6a6964 was submitted after\n7.8.0 was released last week.\n\nChange-Id: Iddb96ab8026e250d063bd270fc185e701e4e3df7\n"
    },
    {
      "commit": "f9d6f9c7ce6c0fd799f9f288961c1db1e45fc129",
      "tree": "4d192b18c1ec50fa135dc837013984ac38130844",
      "parents": [
        "d044fec12f6c97999b0a639120bec509d11cc269"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 14 12:30:00 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 08:47:29 2026 +0000"
      },
      "message": "RefTable: clear cache in finally block\n\nClear the cached merged table in `addReftable()` finally block while\nthe reader lock is still held. This covers both successful adds and\nfailed attempts and removes the duplicated cache clearing paths.\n\nChange-Id: Ib226a5a8507e4b7cba1fc77a44951d9ce244ffc4\n(cherry picked from commit bd9d1b66c03fab5f4c9fb61153f7fe0700196eff)\n"
    },
    {
      "commit": "d044fec12f6c97999b0a639120bec509d11cc269",
      "tree": "8c510efc641a2a998e3cdc002caa40fafb633ccb",
      "parents": [
        "1fbb306978116d054b920dbcf367222cdbc92ac1"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 10 17:07:41 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 16 08:46:20 2026 +0000"
      },
      "message": "Protect reftable readers during stale reload\n\nWhen an externally updated `tables.list` causes `addReftable()` to fail,\nthe system triggers a stack reload. Previously, this reload occurred\nbefore obtaining the cached-reader lock.\n\nThis lock inversion was unsafe. The reload operation could close a table\nthat was concurrently being read by a ref lookup, which resulted in a\n`ClosedChannelException`.\n\nFix this by acquiring the cached-reader lock before reloading the stack.\nThis ensures that tables remain open and safe to access while concurrent\nthreads are actively reading them.\n\nThis is similar to fix [1] and it applies the same guard to the stale\nreload from addReftable().\n\nHold the reader lock across the add, stale reload, and cache clear so\nreload cannot close a table until the concurrent readers finish.\n\n[1] https://eclipse.gerrithub.io/c/eclipse-jgit/jgit/+/1216979\n\nBug: Issue 460019541\nChange-Id: I9d210becf5b5665deecfdcf5a87c6a8c26198d07\n(cherry picked from commit 89b2d7e790b4b68720b1983bedf0c7a6b9b56e5b)\n"
    },
    {
      "commit": "d868f6b7a205285852e7ea6a11e4581c63deba6e",
      "tree": "30d2fcdb6b13033800bbe10b480cdf22abd170fa",
      "parents": [
        "1d6476b2a91f8e5a3938f714c58cc20361b74e1f",
        "87eaf6628b8ef58591382f15fa7e442639e1be91"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Wed Sep 16 06:09:49 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Sep 16 06:09:49 2026 +0000"
      },
      "message": "Merge changes Iebbd1ba3,I2970ec01\n\n* changes:\n  Bazel: Stamp the JGit CLI package jar\n  Bazel: Make JGit non-stamped by default\n"
    },
    {
      "commit": "1d6476b2a91f8e5a3938f714c58cc20361b74e1f",
      "tree": "ecdcc804212e09be03944df306721a2caf7be9bd",
      "parents": [
        "221b5269cde03c0cb0f8c3ca8a0597593b560f3b",
        "bd9d1b66c03fab5f4c9fb61153f7fe0700196eff"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 15 15:51:01 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Tue Sep 15 15:51:01 2026 +0000"
      },
      "message": "Merge changes Ib226a5a8,I9d210bec\n\n* changes:\n  RefTable: clear cache in finally block\n  Protect reftable readers during stale reload\n"
    },
    {
      "commit": "87eaf6628b8ef58591382f15fa7e442639e1be91",
      "tree": "3fa0db81b415576e88d791641a9ec5257b0934af",
      "parents": [
        "22c96c586ec0309e69a1d75de212f7413f62bbb1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Sep 15 12:36:29 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Sep 15 12:39:08 2026 +0200"
      },
      "message": "Bazel: Stamp the JGit CLI package jar\n\nThe Bazel-built jgit binary reports its version from the package\nmetadata of org.eclipse.jgit.pgm.Version. That metadata comes from the\nmanifest of the org.eclipse.jgit.pgm jar, not from the core\norg.eclipse.jgit jar.\n\nAdd a stamped copy of the pgm jar and use it for the jgit java_binary.\nWrap the stamped jar in a java_import so the binary keeps the same\nruntime classpath as the normal //org.eclipse.jgit.pgm:pgm library.\n\nThis keeps ordinary compile and test targets on non-stamped JGit\nlibraries while allowing the command-line binary to report the JGit\nversion from its manifest.\n\nChange-Id: Iebbd1ba3fe141ee9fad87023479ca0f604ee371a\n"
    },
    {
      "commit": "22c96c586ec0309e69a1d75de212f7413f62bbb1",
      "tree": "2d722cd56ce3c0a699d8603d5d60d2130d6b3e0b",
      "parents": [
        "221b5269cde03c0cb0f8c3ca8a0597593b560f3b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Sep 14 19:15:30 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Sep 14 19:38:54 2026 +0200"
      },
      "message": "Bazel: Make JGit non-stamped by default\n\nKeep the normal //org.eclipse.jgit:jgit target free of workspace status\nstamping. Downstream projects such as Gerrit and Gitiles depend on this\ntarget for ordinary compilation and tests, and should not need to\nrecompile JGit whenever volatile workspace status changes.\n\nAdd a separate //org.eclipse.jgit:jgit-stamped target for the jar that\ncontains the Implementation-Version manifest entry. Packaging rules that\nneed this version in their final archive can depend on that target\ndirectly, while normal Java targets continue to use the stable,\nnon-stamped JGit library.\n\nKeep jgit_non_stamped as a compatibility alias for existing callers.\n\nChange-Id: I2970ec0141f54476137f811403ea1e8413319dd1\n"
    },
    {
      "commit": "bd9d1b66c03fab5f4c9fb61153f7fe0700196eff",
      "tree": "1ebbacf76de16505ef02aac31779421c6c4b4489",
      "parents": [
        "89b2d7e790b4b68720b1983bedf0c7a6b9b56e5b"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 14 12:30:00 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 14 12:47:04 2026 +0200"
      },
      "message": "RefTable: clear cache in finally block\n\nClear the cached merged table in `addReftable()` finally block while\nthe reader lock is still held. This covers both successful adds and\nfailed attempts and removes the duplicated cache clearing paths.\n\nChange-Id: Ib226a5a8507e4b7cba1fc77a44951d9ce244ffc4\n"
    },
    {
      "commit": "89b2d7e790b4b68720b1983bedf0c7a6b9b56e5b",
      "tree": "9e8bfd9201359ca15e9b99886dda4d9b639625ce",
      "parents": [
        "bc1df37307544c6ef4b89ec0ec5f63261c888e99"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 10 17:07:41 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 14 11:11:06 2026 +0200"
      },
      "message": "Protect reftable readers during stale reload\n\nWhen an externally updated `tables.list` causes `addReftable()` to fail,\nthe system triggers a stack reload. Previously, this reload occurred\nbefore obtaining the cached-reader lock.\n\nThis lock inversion was unsafe. The reload operation could close a table\nthat was concurrently being read by a ref lookup, which resulted in a\n`ClosedChannelException`.\n\nFix this by acquiring the cached-reader lock before reloading the stack.\nThis ensures that tables remain open and safe to access while concurrent\nthreads are actively reading them.\n\nThis is similar to fix [1] and it applies the same guard to the stale\nreload from addReftable().\n\nHold the reader lock across the add, stale reload, and cache clear so\nreload cannot close a table until the concurrent readers finish.\n\n[1] https://eclipse.gerrithub.io/c/eclipse-jgit/jgit/+/1216979\n\nBug: Issue 460019541\nChange-Id: I9d210becf5b5665deecfdcf5a87c6a8c26198d07\n"
    },
    {
      "commit": "221b5269cde03c0cb0f8c3ca8a0597593b560f3b",
      "tree": "1246b2e98882cd21762c952963e35e2b5eb80bfb",
      "parents": [
        "bc1df37307544c6ef4b89ec0ec5f63261c888e99"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 08 22:39:24 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Sep 11 10:24:00 2026 +0200"
      },
      "message": "Remove org.eclipse.jgit.ssh.jsch\n\nsince jsch is unmaintained since a couple of years.\n\nAdd a p2.inf file to uninstall the removed plugin and feature when\nupgrading an existing installation.\n\nBug: https://github.com/eclipse-platform/eclipse.platform/issues/958\nBug: jgit-290\nChange-Id: Icba8f3abec42d0a3f4de63ab67db7601939efac4\n"
    },
    {
      "commit": "f1a45c953598ea52b00c42a9334655dd072c29e4",
      "tree": "44288a764137a1546b65fd889e8df4aafd053eae",
      "parents": [
        "bc1df37307544c6ef4b89ec0ec5f63261c888e99"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 09 15:27:45 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Sep 10 11:10:49 2026 -0700"
      },
      "message": "MidxPackFilter: Support a midx chain per source\n\nFor simplicity, MidxPackFilter was implemented assuming that the\npacklist has only one midx chain, but actually multiple\nnon-overlapping midx chains should be fine. This becomes useful later\nwhen we introduce geometric repacking. We could have midx over GC and\nrelated packs, and another midx over GC_REST and GC_REST_PART packs.\n\nSupport one midx chain *per source* in the packlist.\n\nFor midx, we assume that midx over GC will be in a pack with source GC\n(so midx can seamlessly replace GC in the packlist). Similarly midx\nover GC_REST will be stored in packs of source GC_REST. With this\npattern, we only meed a midx chain per source.\n\nChange-Id: Iec6641e272f39af80303d05b0c9a692d6a6a6964\n"
    },
    {
      "commit": "bc1df37307544c6ef4b89ec0ec5f63261c888e99",
      "tree": "0413b92dcb45cbd588751850e3893431429e6458",
      "parents": [
        "bf0b64f1047f2555ee66c5dd8df1e20769879e8a"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Mon Aug 31 14:48:32 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 09 14:52:35 2026 -0700"
      },
      "message": "Config: support commitgraph.changedPathsVersion config\n\ncommitgraph.changedPathsVersion replaces the deprecated\ncommitgraph.readChangePaths.\n\nRead the new variable (changedPathsVersion) first. If not set,\nfallback to old variable (readChangePaths). If still not set, default\nto false as safe option.\n\nChange-Id: Ifd5fc15cadbc7c5331a4f91fb0671a7c6a6a6964\n"
    },
    {
      "commit": "bf0b64f1047f2555ee66c5dd8df1e20769879e8a",
      "tree": "4951c4862c43daafc92a9a3145568ea647c53491",
      "parents": [
        "f859a1f6cf6177edac6b4d5231b7e575358b8291"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Mon Aug 31 14:08:23 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 09 11:45:19 2026 -0700"
      },
      "message": "CommitGraphLoader: control CPF reading with an int\n\nThe commit graph loader follows the deprecated \"readChangedPaths\" flag\n(boolean) to control the loading of the changed path filters\n(CPF). Now there is a \"changedPathsVersions\" flag [1] with more values\nto control this behavior (0 to ignore, -1 to load any version, n to\nload version N).\n\nUpdate the CommitGraphLoader.load() parameter from boolean to int and\nfollow the changedPathsVersion semantics. We translate callers from\n\"false\" to 0 and \"true\" to -1, so this should be a no-op.\n\nJGit has been writing CPF with version 2 in files tagged as version 1\n(fixed in [2]). At reading time we cannot know if the v1 file has been\nwritten from cgit (real v1) or jgit (mislabelled v2). To avoid\nconfusion, asking for v1 is not supported and disables the reading.\n\n[1] https://git-scm.com/docs/git-commit-graph/2.55.0#Documentation/git-commit-graph.txt-commitGraphreadChangedPaths\n[2] https://gerrithub.io/c/eclipse-jgit/jgit/+/1248257\n\nChange-Id: I818f2bef78417d0b3c4bc7c399a527dc6a6a6964\n"
    },
    {
      "commit": "f859a1f6cf6177edac6b4d5231b7e575358b8291",
      "tree": "c7f1d4c35257efb9aa35368a456517648597b9a1",
      "parents": [
        "0e3222f47cd400058cf4b33d0c3d20c860d898b9",
        "5e2dfde456dce97328c70bc88ac61951c64fd40a"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Wed Sep 09 17:43:42 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Wed Sep 09 17:43:42 2026 +0000"
      },
      "message": "Merge \"CommitGraphWriter: Write correct version in commit-graph changePathFilters\""
    },
    {
      "commit": "0e3222f47cd400058cf4b33d0c3d20c860d898b9",
      "tree": "e8fe99571b79d8086c2c64543644112a38d356f3",
      "parents": [
        "87ec2100083ffc894bedd1e3f0d76b7f10e45ed6"
      ],
      "author": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Wed Sep 09 11:28:15 2026 +0200"
      },
      "committer": {
        "name": "Florian Schwabe",
        "email": "florian.schwabe@vector.com",
        "time": "Wed Sep 09 15:36:44 2026 +0200"
      },
      "message": "StartGenerator: Revert back to TopoSortGenerator\n\nThis partially reverts ab51fe2bdb9d7f05287b686e75be7afc46d0c8f5.\n\nWith the new TopoSortPendingGenerator, reachability checks were still\ncorrect but experienced a performance regression.\n\nThe previous chain of PendingGenerator -\u003e TopoSortGenerator could exit\nearly, if all pending commits were UNINTERESTING. The new\nTopoSortPendingGenerator does not have this mechanism and can produce\nlonger walks in some conditions.\n\nFor example, when the target is a recent commit in a short branch,\nother branches are older but much longer. Old walk marks the target as\nuninteresting quickly and stops; new walk needs to go through all\ncommits in the other branches with bigger generation number before\nstopping.\n\nFixes proposed in https://gerrithub.io/c/eclipse-jgit/jgit/+/1248173\nand https://gerrithub.io/c/eclipse-jgit/jgit/+/1247844 help to\nevaluate less commits but don\u0027t solve completely the problem. They are\nstill valid if TopoSortPendingGenerator is re-enabled with other fixes.\n\nChange-Id: I573f980abb0c97414e8e7dfcc3ac6dab2544f6c1\n"
    },
    {
      "commit": "87ec2100083ffc894bedd1e3f0d76b7f10e45ed6",
      "tree": "c04db1b09a7ab37126004fbf623c0b8ebaed0626",
      "parents": [
        "6dda6dddd125e4badb680a6f436a45a634ef193b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Aug 16 13:45:46 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 08 00:39:42 2026 +0200"
      },
      "message": "Bump rules_java to 9.9.0 and run Java tools on JDK 21\n\nUpdate rules_java from 9.3.0 to 9.9.0. Its java_tools (Turbine and\nJavaBuilder) are compiled for JDK 21 and fail on a 17 runtime with\nUnsupportedClassVersionError, so run the Java tools on remotejdk_21\n(java_runtime on the java17 toolchain, plus the tool JDK in .bazelrc)\nwhile the produced artifacts still target Java 17.\n\nChange-Id: I0848cae704a4a53fa150f0b7e77f81507f34d9b2\n"
    },
    {
      "commit": "6dda6dddd125e4badb680a6f436a45a634ef193b",
      "tree": "f841f4701a412149fca55de2e24b826e741ed83a",
      "parents": [
        "da6ee4a908c7bc0b0f8783bec8e99184013629ea"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Aug 16 13:45:46 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 08 00:39:42 2026 +0200"
      },
      "message": "Fix JdkObsolete in main code; relax the check in tests\n\nThe newer Error Prone shipped with rules_java 9.8.0 reports\nJdkObsolete for String-charset-name JDK APIs. Fix the main-code sites\nby switching to the Charset overloads (GitHook, TransportHttp, FS,\nFS_POSIX, HttpSupport, LfsPointer, SignerV4).\n\nTest code has ~90 further such sites (default-charset PrintWriter,\ngetBytes, toString, etc.). To keep this toolchain bump low-noise,\nrelax JdkObsolete to non-fatal in tests via exclude_in_tests and\nleave that per-test charset cleanup to jgit maintainers as a\nfollow-up. Main/src code keeps the check at ERROR.\n\nChange-Id: I13d6a6df6be958afeef0dbecd15fe2431a528a13\n"
    },
    {
      "commit": "da6ee4a908c7bc0b0f8783bec8e99184013629ea",
      "tree": "0f480c5446b302f97343b5cdbbc12c89d416705a",
      "parents": [
        "bb0d80f087bbb8deed55a53a16f91b0dd3833ee0"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Aug 16 13:45:46 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 08 00:39:42 2026 +0200"
      },
      "message": "Demote ReferenceEquality Error Prone check from ERROR to WARN\n\nThe newer Error Prone shipped with rules_java 9.8.0 flags many\npre-existing reference-equality comparisons across the JGit modules.\nThese are long-standing intentional identity checks (interned\nsingletons such as JGit FileMode/ObjectId and enum-like constants),\nnot value-equality bugs. Demote the check to WARN rather than churn\nmany files in a toolchain bump; it stays visible for future misuse.\n\nChange-Id: I407d40f5ec05a9f7d01dc2df0964f1a23ecbcece\n"
    },
    {
      "commit": "bb0d80f087bbb8deed55a53a16f91b0dd3833ee0",
      "tree": "872e4397e3035cfb5d6f03eb634d1b69d46153fb",
      "parents": [
        "6c3b52d567527191f104fb859fd40a5223b0b59e"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jul 11 13:03:30 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Sep 04 06:04:38 2026 +0200"
      },
      "message": "Bazel: Cover the ant tasks bundle and its tests\n\norg.eclipse.jgit.ant and org.eclipse.jgit.ant.test were the last\nJava-bearing bundles missing from the Bazel build; only what Gerrit\nconsumes had been wired up so far. Add build and test targets for\nthem and wire org.apache.ant 1.10.15 into the rules_jvm_external\ndependencies.\n\nThe remaining Maven modules without a Bazel counterpart contain no\nJava code and stay Maven-only by design: org.eclipse.jgit.packaging\n(Tycho/p2 for the Eclipse release train), org.eclipse.jgit.coverage\n(JaCoCo report aggregation) and org.eclipse.jgit.ee8 (sources are\ngenerated by tools/jgit-ee8).\n\nChange-Id: I8762f0cc18b19b3b41b1927a63ac7dfc43f29d3f\n"
    },
    {
      "commit": "5e2dfde456dce97328c70bc88ac61951c64fd40a",
      "tree": "b04bd314c120b16e7629346eacaf1aacb569fa0e",
      "parents": [
        "6c3b52d567527191f104fb859fd40a5223b0b59e"
      ],
      "author": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Sep 03 14:11:33 2026 -0700"
      },
      "committer": {
        "name": "ifrade",
        "email": "ifrade@google.com",
        "time": "Thu Sep 03 16:28:07 2026 -0700"
      },
      "message": "CommitGraphWriter: Write correct version in commit-graph changePathFilters\n\nThe header of the changePathFilter section says that the filters are\nversion 1, but they are calculated with the version 2 of the hash. So\nfar this hasn\u0027t been a problem for JGit because it doesn\u0027t check\nversions while loading, but it will be once we move to the new\nchangedPathVersion config, that can request a specific version of the\nfilters. Note that this also breaks compatibility with cgit.\n\nWrite the correct version number in the file. This shouldn\u0027t break\nanything, as it is not check at loading time, and it fixes the\ninteroperability with cgit.\n\nMore context: while implementing the bloom filters in JGit we found a\nbug in the hash calculation of cgit. cgit fixed it and bump its\nversion to v2. JGit implemented directly the fixed version (v2) but in\nthe file claims to use v1.\n\nChange-Id: Ic8c06a0597140bc97e0b8398c314fb196a6a6964\n"
    },
    {
      "commit": "6c3b52d567527191f104fb859fd40a5223b0b59e",
      "tree": "9a489cf3e1e93c063ba396974694831f9e5f73f0",
      "parents": [
        "941c6f04f992e66ddb78528edcf56d079ff2ccab"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Sep 03 07:55:43 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Sep 03 07:57:37 2026 +0200"
      },
      "message": "Maven: Align Commons IO coordinate with Bazel and Tycho\n\nUse the canonical commons-io:commons-io coordinate in Maven\ndependencyManagement.\n\nBazel and the Tycho target files already use that coordinate. The\nprevious org.apache.commons:commons-io entry did not resolve as a Maven\nartifact and stayed hidden because dependencyManagement entries are not\nresolved unless used.\n\nChange-Id: Ie5f680281d84fb4e5b06784d1a200e5aae0ca7af\n"
    },
    {
      "commit": "6f166ac9561e1c7e8764cc57e53c2cbeb0d585cc",
      "tree": "85b3874036398f702f2179e2dd248b623f2ba5a2",
      "parents": [
        "cb208f624ef3ca1848dd5f7356836a68930b1f50"
      ],
      "author": {
        "name": "Martin Fick",
        "email": "mfick@nvidia.com",
        "time": "Tue Aug 18 15:30:58 2026 -0700"
      },
      "committer": {
        "name": "Martin Fick",
        "email": "mfick@nvidia.com",
        "time": "Wed Sep 02 15:11:25 2026 -0700"
      },
      "message": "Handle interrupt in fundamental methods\n\nAdd simple interrupt checks to the main IO paths in ObjectDirectory and\nto the main reading path in WindowCursor. Most of these methods are\nfairly fundamental and called from within long outer loops making them\ngood check points for interrupts without having to litter the code base\nwith hundreds of interrupt checks. They also are not too low level that\nthe checks would become expensive.\n\nWe have seen Gerrit upload-packs which have been killed continue to\niterate in the PackWrite.writeObjects() which calls\nWindowCursor.copyObjectAsIs(), hopefully this change will lead to such\ntasks being terminatted after this change.\n\nChange-Id: Ifa7768a97824d8eec8f18addb2efc4edf6171032\nSigned-off-by: Martin Fick \u003cmfick@nvidia.com\u003e\n"
    },
    {
      "commit": "941c6f04f992e66ddb78528edcf56d079ff2ccab",
      "tree": "a10be72d595f79f6cd8daa8294c00a7affe5e246",
      "parents": [
        "a65990c737f184fa0b0c9ccbd3eb24a1ec90ee4c"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Aug 07 12:23:20 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Sep 02 13:06:45 2026 +0000"
      },
      "message": "Use the default C++ toolchain for RBE instead of rbe_autoconfig\n\nJGit is a pure-Java project and schedules no C++ compile actions, so\nthe RBE C++ toolchain is never invoked; it only has to exist to\nsatisfy analysis-time resolution of\n@bazel_tools//tools/cpp:toolchain_type (used by ijar/zipper in the\nJava rules).\n\nDrop the @rbe_autoconfig crosstool_top and extra_toolchains flags and\nrely on Bazel\u0027s built-in autodetected C++ toolchain, which resolves on\nthe Linux CI host and is never run. The RBE execution container is\nstill pinned explicitly: a minimal platform in tools/remote/BUILD\nnames the container via the container-image exec property, which is\nwhat actually selects it, not the C++ toolchain. This also updates the\ncontainer from ubuntu2204 to the current gcr.io/bazel-public/ubuntu2404\nimage, matching Gerrit. Bumping the image is now a one-line digest edit\nrather than regenerating configs with rbe_configs_gen.\n\nThis removes the dependency on the rbe_autoconfig module, and the\nbazel-toolchains / rbe_configs_gen tooling behind it, entirely.\n\nChange-Id: Icf4c40cf83a8451263fef03d18eb58b937b3e796\nSigned-off-by: David Ostrovsky \u003cdavid@ostrovsky.org\u003e\n"
    },
    {
      "commit": "a65990c737f184fa0b0c9ccbd3eb24a1ec90ee4c",
      "tree": "c5030bdc3c533cdbd82aa407efd9325e804fe5cd",
      "parents": [
        "c5656ab3a3fe3bd1bcfc843acdca6b1f985eb85c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 10:52:07 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:27:40 2026 +0200"
      },
      "message": "InterruptTimer: fix spurious interrupt when begin() reuses same timeout\n\nWhen begin() was called with the same timeout as the previous call,\nthe notify to the AlarmThread was skipped as an optimisation. This was\nunsafe when the AlarmThread was in its idle wait (after end()): if that\nidle wait was started long before begin() was called, it could expire\nat or after the new deadline, causing the AlarmThread to see delay \u003c\u003d 0\nand fire a spurious interrupt.\n\nFix by tracking idleWakeAt — the absolute time at which the current\nidle wait will expire. begin() now sends notifyAll() when the thread is\nidle and its wait would expire at or after the new deadline, ensuring\nthe AlarmThread re-arms itself correctly. The optimisation is preserved\nfor the common case where the thread is actively timing (idleWakeAt\u003d\u003d0).\n\nThis manifested as a flaky\nInterruptTimerTest.testRepeatedShortThanTooLong()\nin CI job running on Linux where coarser timer resolution and higher\nscheduling jitter made the race window large enough to hit reliably.\n\nChange-Id: I5d5635a66f9fa5b9f68791017e09d5d3d08135dd\n"
    },
    {
      "commit": "c5656ab3a3fe3bd1bcfc843acdca6b1f985eb85c",
      "tree": "92a1d18c1e601686e9193e43dea1760bac74105b",
      "parents": [
        "d86e0fd7c0287631f3900fba447922d59d0c207a"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:27:18 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:27:18 2026 +0200"
      },
      "message": "Prepare 7.9.0-SNAPSHOT builds\n\nChange-Id: I46408fffb5f744adcbe6a283e6e484a23e8fe5ad\n"
    },
    {
      "commit": "d86e0fd7c0287631f3900fba447922d59d0c207a",
      "tree": "d35050b7e96e1bcac515b0760f90298427e21eff",
      "parents": [
        "db8cba30cdb029ff8ef4f52824f4782e3c4077f7",
        "e7e0f65ce83fb6088ec07bb4b767b06b5a2a0a1f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:26:33 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:26:33 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.8\u0027\n\n* stable-7.8:\n  Prepare 7.8.1-SNAPSHOT builds\n  JGit v7.8.0.202609011348-r\n  Prepare 7.8.0-SNAPSHOT builds\n  JGit v7.8.0.202608252020-rc1\n\nChange-Id: I2ef9047ef1446b8bb3a4a9d19c128e98f035e673\n"
    },
    {
      "commit": "e7e0f65ce83fb6088ec07bb4b767b06b5a2a0a1f",
      "tree": "d35050b7e96e1bcac515b0760f90298427e21eff",
      "parents": [
        "f386af5bb89c42eec92ee1547fc3201d743165cb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:22:33 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 02 00:22:33 2026 +0200"
      },
      "message": "Prepare 7.8.1-SNAPSHOT builds\n\nChange-Id: I66115524f3cebfc628d091273d851faf488ff652\n"
    },
    {
      "commit": "f386af5bb89c42eec92ee1547fc3201d743165cb",
      "tree": "83a5aad649f38db80e425cc6b0c78ce3fce3a2db",
      "parents": [
        "1c5afccf5096b2a6e85e11116e1de97f47372a78"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 15:48:32 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 15:48:32 2026 +0200"
      },
      "message": "JGit v7.8.0.202609011348-r\n\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e\nChange-Id: I7820ba61d854786b6c79068b1c859749bc2d241a\n"
    },
    {
      "commit": "1c5afccf5096b2a6e85e11116e1de97f47372a78",
      "tree": "f4926aefa57bc270ca455cc540309bfc872d89ed",
      "parents": [
        "79f0c50c4ae23ba935868229ed6dad1cfbe7adaf",
        "db8cba30cdb029ff8ef4f52824f4782e3c4077f7"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 15:47:02 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 15:47:02 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.8\n\n* master:\n  IndexDiffFilter: Don\u0027t drop untracked folders unrelated to a tracked change\n  Fix NPE in close() with nothing to fetch\n  DfsPackFile: honor to conf to read changedPathFilters\n\nChange-Id: I7cdd62a2f8a391639aaa9e32144e98a2622053d0\n"
    },
    {
      "commit": "db8cba30cdb029ff8ef4f52824f4782e3c4077f7",
      "tree": "f4926aefa57bc270ca455cc540309bfc872d89ed",
      "parents": [
        "92c2312faa9be064ab67329d5f73e54afb172ac2"
      ],
      "author": {
        "name": "adityaanikam",
        "email": "adityanikam9502@gmail.com",
        "time": "Tue Sep 01 01:51:28 2026 +0530"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 09:08:56 2026 +0200"
      },
      "message": "IndexDiffFilter: Don\u0027t drop untracked folders unrelated to a tracked change\n\nIndexDiffFilter.include() detects untracked folders by pushing each\ndirectory the working tree walk enters onto untrackedParentFolders, and\npopping folders off whenever it sees a tracked entry -- a folder\nsurvives on the stack only until the walk proves it contains something\ntracked.\n\nThe pop step scanned the HEAD and index trees at the current path and,\nwhenever either had a TREE there, called\nuntrackedParentFolders.clear() unconditionally. That is only correct\nwhen the tracked path is an ancestor of the folders on the stack. If\nsome unrelated tracked directory instead disappears from the working\ntree at the same walk position -- for example a staged deletion of the\nlast file under that directory -- it shows up as TYPE_MISSING in the\nworking tree but still TREE in HEAD, and clear() wipes out every\nfolder collected so far, including ones that have nothing to do with\nthat path. getUntrackedFolders() then silently drops them (gh-279).\n\nReplace the unconditional clear() with removeAncestorsOf(path),\nmirroring the ancestor-scoping copyUntrackedFolders() already uses:\nonly entries equal to, or nested under, the current path are removed;\neverything else stays on the stack.\n\nBug: jgit-279\nChange-Id: I414825b6e51dcd18729a8343b205f3c0eaf5c771\n"
    },
    {
      "commit": "92c2312faa9be064ab67329d5f73e54afb172ac2",
      "tree": "800decc50e167d08a5309ff3b35c863ab80123cd",
      "parents": [
        "14d0c555de8979c621c21e87adec0ff00d4cc929"
      ],
      "author": {
        "name": "adityaanikam",
        "email": "adityanikam9502@gmail.com",
        "time": "Tue Aug 25 17:15:14 2026 +0530"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 01 09:08:28 2026 +0200"
      },
      "message": "Fix NPE in close() with nothing to fetch\n\noutNeedsEnd tracks whether close() still needs to send the closing\nflush packet for the current request. lsRefsImpl() already sends and\nends the ls-refs request itself but never clears the flag, and\ndoFetch()/doFetchV2() only clear it on the branch where sendWants()\nfound something to ask for.\n\nWhen a fetch needs no new objects, sendWants() returns false and no\nrequest is sent, leaving outNeedsEnd set from whichever request last\nset it. close() then calls pckOut.end() again on that request\u0027s\nstream. Once the stream has grown past http.postBuffer it has\nalready switched to, written, and closed its overflow output;\nwriting to it again reaches TemporaryBuffer.last() with blocks null,\nthrowing a NullPointerException.\n\nClear outNeedsEnd in all three places once no further write is\nneeded on the current stream, so close() has nothing left to do.\n\nAdded testFetch_NothingToFetchWithSmallPostBuffer, which reproduces\nthe NPE with a tiny http.postbuffer and a fetch that only needs to\ncreate a new local ref pointing at an already-present commit.\n\nBug: jgit-285\nChange-Id: I42ffa0bb9a900eb292405e2a0412a95649cbd962\nSigned-off-by: adityaanikam \u003cadityanikam9502@gmail.com\u003e\n"
    },
    {
      "commit": "14d0c555de8979c621c21e87adec0ff00d4cc929",
      "tree": "4c7aa8931fd2efbc21485edb286c94072a199f76",
      "parents": [
        "a34a12ec8d1d2902e8c509949ff706e1ee4669da",
        "9fdbbbc3b880e5bd6e026c035451b65c38f78693"
      ],
      "author": {
        "name": "Ivan Frade",
        "email": "ifrade@google.com",
        "time": "Mon Aug 31 23:24:22 2026 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "support@gerrithub.io",
        "time": "Mon Aug 31 23:24:22 2026 +0000"
      },
      "message": "Merge \"DfsPackFile: honor to conf to read changedPathFilters\""
    },
    {
      "commit": "79f0c50c4ae23ba935868229ed6dad1cfbe7adaf",
      "tree": "64e682c30a00a1d30b7a21f1e4305b115f2224c7",
      "parents": [
        "c54ed5c423c8f40e28d10ef5a622d9d3677ffd53",
        "a34a12ec8d1d2902e8c509949ff706e1ee4669da"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:44:37 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:44:37 2026 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into stable-7.8\n\n* master:\n  Revert \"RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\"\n  Declare org.tukaani.xz as a dependency of the archive library\n  DfsPackSource: Add GC_PART and GC_REST_PART extensions\n  Blame: Add option to ignore revisions\n  BlameGenerator: introduce Commit Graph based performance boosts\n  RefDirectory: fix pack() unlocking held locks prematurely\n\nChange-Id: Id5ebf9dc0cbb77da756e724510065498c53794a4\n"
    },
    {
      "commit": "a34a12ec8d1d2902e8c509949ff706e1ee4669da",
      "tree": "64e682c30a00a1d30b7a21f1e4305b115f2224c7",
      "parents": [
        "2bf2e4a32ef9347617a73ae739d08fc48c029989",
        "c062a12363e5033039bc7c654e06ab351e146cbb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:43:21 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:43:21 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.7\u0027\n\n* stable-7.7:\n  Revert \"RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\"\n  RefDirectory: fix pack() unlocking held locks prematurely\n\nChange-Id: I814e932b9735d290acf2eae5820a2a78c3884866\n"
    },
    {
      "commit": "c062a12363e5033039bc7c654e06ab351e146cbb",
      "tree": "a4401e5dd8406ad30062a087faa74fa9705128c1",
      "parents": [
        "f785a243e80c15b3870a1c72b08d1c3fdb1ba5f6",
        "989a5c40d7a6c95944a92f48e47296b53f2aea7f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:42:19 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:42:19 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.6\u0027 into stable-7.7\n\n* stable-7.6:\n  Revert \"RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\"\n\nChange-Id: Iae2f8124c3930fa98e2f8d137d649f1e245f0590\n"
    },
    {
      "commit": "989a5c40d7a6c95944a92f48e47296b53f2aea7f",
      "tree": "dd4c93d058a220ce068c5536912c7c42419e92e3",
      "parents": [
        "dfa35e2375d6dd7ab0cede763af36eb97f538128",
        "1fbb306978116d054b920dbcf367222cdbc92ac1"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:39:08 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:39:08 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.5\u0027 into stable-7.6\n\n* stable-7.5:\n  Revert \"RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\"\n\nChange-Id: I9696e3eb31240e052e795cccff96ca3be5ec3107\n"
    },
    {
      "commit": "1fbb306978116d054b920dbcf367222cdbc92ac1",
      "tree": "874f6f30130496551827c635807e6d4b049f6303",
      "parents": [
        "14d35917f881eaf65d5197117d579052c2533881",
        "98dd2f8d059466ee09209caa66b2f46db11f33d2"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:30:38 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 31 21:30:38 2026 +0200"
      },
      "message": "Merge branch \u0027stable-7.4\u0027 into stable-7.5\n\n* stable-7.4:\n  Revert \"RefDirectory#refreshPathToLooseRef: also refresh loose ref itself\"\n\nChange-Id: I547b2222e4cb20096ac752633fc809c3aaf3e6d8\n"
    }
  ],
  "next": "98dd2f8d059466ee09209caa66b2f46db11f33d2"
}
