Merge branch 'master' into servlet-4

* master:
  Update jetty to 12.1.5
  Consume rbe_autoconfig as bazel module
  MODULE.bazel: Move dependencies from WORKSPACE to bazel modules
  Add missing reference to commons-io
  Fix invalid HTML tags in javadoc
  DfsPackFileMidx: Move implementation to subclass
  Update bouncycastle to 1.83
  Update bytebuddy to 1.18.2
  Update version of last JGit release to 7.5.0.202512021534-r
  Prepare 7.6.0-SNAPSHOT builds
  Prepare 7.5.1-SNAPSHOT builds
  JGit v7.5.0.202512021534-r
  [ignore patterns] Backslash is a general escape
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202511251519-rc1
  Do not always refresh packed-refs during ref updates
  Update Maven plugins
  Update org.eclipse.jdt:ecj to 3.43.0
  Update plexus-compiler to 2.16.0
  Update org.tukaani:xz to 1.11
  chore: Add sbom generation and upload workflow
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202511181624-m3
  Update jetty to 12.1.4
  Update commons-lang3 to 3.20.0
  Update bytebuddy to 1.18.1
  Silence non-externalized String warning
  Document empty blocks
  BlameRegionMerger: externalize error message
  Remove unnecessary semicolon
  MidxPackList: Methods to find the top midx and uncovered packs
  Update commons-codec:commons-codec to 1.20.0
  Update commons-io:commons-io to 2.21.0
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202510290248-m2
  Prepare 7.5.0-SNAPSHOT builds
  JGit v7.5.0.202510071400-m1

and silence API errors.

Change-Id: I711aafa017d5da51926621c7a32155db3b86ccfe
diff --git a/.bazelrc b/.bazelrc
index 0712ec2..5bf3ef8 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,6 +1,6 @@
 # TODO(davido): Migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://issues.gerritcodereview.com/issues/303819949
-common --noenable_bzlmod
+common --enable_bzlmod
 common --enable_workspace
 
 build --workspace_status_command="python3 ./tools/workspace_status.py"
diff --git a/.github/workflows/generate-maven-sbom.yaml b/.github/workflows/generate-maven-sbom.yaml
new file mode 100644
index 0000000..f717d67
--- /dev/null
+++ b/.github/workflows/generate-maven-sbom.yaml
@@ -0,0 +1,72 @@
+name: Generate Maven SBOM
+
+on:
+  push:
+    tags:
+      - "v**" # Triggers when someone pushes a tag that starts with 'v'
+
+  workflow_dispatch:
+    # The custom 'Version' input field allows running the workflow for older git
+    # refs, where this workflow file did not exist yet. This would not be
+    # possible with the builtin "Use workflow from" input field.
+    inputs:
+      version:
+        description: "Version"
+        default: "master"
+        required: true
+
+env:
+  JAVA_VERSION: '17'
+  JAVA_DISTRO: 'temurin'
+  PLUGIN_VERSION: '2.9.1'
+  SBOM_TYPE: 'makeAggregateBom'
+  PROJECT_VERSION: "${{ github.event_name == 'release' && github.event.release.tag_name || github.event.inputs.version }}"
+
+permissions:
+  contents: read
+
+jobs:
+  generate-sbom:
+    runs-on: ubuntu-latest
+    outputs:
+      # Make env var available in re-usuable workflow (see actions/runner#2372)
+      project-version: ${{ env.PROJECT_VERSION }}
+    steps:
+      - name: Checkout repository at '${{ env.PROJECT_VERSION }}'
+        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+        with:
+          fetch-depth: 0
+          ref: ${{ env.PROJECT_VERSION }}
+          persist-credentials: false
+
+      - name: Setup Java SDK
+        uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+        with:
+          java-version: ${{ env.JAVA_VERSION }}
+          distribution: ${{ env.JAVA_DISTRO }}
+
+      - name: Generate
+        run: |
+          mvn org.cyclonedx:cyclonedx-maven-plugin:${PLUGIN_VERSION}:${SBOM_TYPE} \
+              -DoutputFormat=json \
+              -DoutputDirectory=target \
+              -DoutputName=cyclonedx
+
+
+      - name: Upload
+        uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
+        with:
+          name: sbom
+          path: target/cyclonedx.json
+
+  # Store SBOM and metadata in a predefined format for otterdog to pick up
+  store-sbom-data:
+    needs: ['generate-sbom']
+    uses: eclipse-csi/workflows/.github/workflows/store-sbom-data.yml@main
+    with:
+      projectName: 'JGit'
+      projectVersion: ${{ needs.generate-sbom.outputs.project-version }}
+      bomArtifact: 'sbom'
+      bomFilename: 'cyclonedx.json'
+      parentProject: '6638fa7e-8518-4528-9419-e24f629b7e9f'
+
diff --git a/Documentation/config-options.md b/Documentation/config-options.md
index 4c74855..20c2b58 100644
--- a/Documentation/config-options.md
+++ b/Documentation/config-options.md
@@ -57,7 +57,7 @@
 | `core.symlinks` | Auto detect if filesystem supports symlinks| ✅ | If false, symbolic links are checked out as small plain files that contain the link text. |
 | ~~`core.trustFolderStat`~~ | `true` | ⃞ | __Deprecated__, use `core.trustStat` instead. If set to `true` translated to `core.trustStat=always`, if `false` translated to `core.trustStat=never`, see below. If both `core.trustFolderStat` and `core.trustStat` are configured then `trustStat` takes precedence and `trustFolderStat` is ignored. |
 | `core.trustLooseRefStat` | `inherit` | ⃞ | Whether to trust the file attributes of loose refs and its fan-out parent directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `trustStat`. |
-| `core.trustPackedRefsStat` | `inherit` | ⃞ | Whether to trust the file attributes of the packed-refs file. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
+| `core.trustPackedRefsStat` | `inherit` | ⃞ | Whether to trust the file attributes of the packed-refs file. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. __Note:__ since 6.10.2, this setting applies during both ref reads and ref updates, but previously only applied during reads.|
 | `core.trustTablesListStat` | `inherit` | ⃞ | Whether to trust the file attributes of the `tables.list` file used by the reftable ref storage backend to store the list of reftable filenames. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`.  The reftable backend is used if `extensions.refStorage = reftable`. |
 | `core.trustLooseObjectStat` | `inherit` | ⃞ | Whether to trust the file attributes of the loose object file and its fan-out parent directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
 | `core.trustPackStat` | `inherit` | ⃞ | Whether to trust the file attributes of the `objects/pack` directory. See `core.trustStat` for possible values. If `inherit`, JGit will use the behavior configured in `core.trustStat`. |
diff --git a/MODULE.bazel b/MODULE.bazel
index 0b932b8..7ce6136 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,2 +1,97 @@
-# TODO(davido): Migrate all dependencies from WORKSPACE to MODULE.bazel
-# https://issues.gerritcodereview.com/issues/303819949
+module(name = "jgit")
+
+bazel_dep(name = "rules_java", version = "8.11.0")
+bazel_dep(name = "rules_jvm_external", version = "6.7")
+bazel_dep(name = "rbe_autoconfig")
+git_override(
+    module_name = "rbe_autoconfig",
+    commit = "71f39817c028949bd6d25f1806502bcd33028d14",
+    remote = "https://github.com/davido/rbe_autoconfig.git",
+)
+
+register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition")
+
+register_toolchains("//tools:error_prone_warnings_toolchain_java21_definition")
+
+git_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+
+git_repository(
+    name = "com_googlesource_gerrit_bazlets",
+    commit = "f9c119e45d9a241bee720b7fbd6c7fdbc952da5f",
+    remote = "https://gerrit.googlesource.com/bazlets",
+)
+
+BOUNCYCASTLE_VERSION = "1.83"
+
+BYTE_BUDDY_VERSION = "1.18.2"
+
+JETTY_VERSION = "12.1.5"
+
+JMH_VERSION = "1.37"
+
+JNA_VERSION = "5.18.1"
+
+SLF4J_VERSION = "2.0.17"
+
+SSHD_VERSION = "2.16.0"
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    name = "jgit_deps",
+    artifacts = [
+        "args4j:args4j:2.37",
+        "com.google.code.gson:gson:2.13.2",
+        "com.google.errorprone:error_prone_type_annotations:2.38.0",
+        "com.googlecode.javaewah:JavaEWAH:1.2.3",
+        "com.jcraft:jsch:0.1.55",
+        "com.jcraft:jzlib:1.1.3",
+        "commons-codec:commons-codec:1.20.0",
+        "commons-io:commons-io:2.21.0",
+        "commons-logging:commons-logging:1.3.5",
+        "jakarta.servlet:jakarta.servlet-api:4.0.4",
+        "junit:junit:4.13.2",
+        "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
+        "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
+        "net.java.dev.jna:jna-platform:" + JNA_VERSION,
+        "net.java.dev.jna:jna:" + JNA_VERSION,
+        "net.sf.jopt-simple:jopt-simple:5.0.4",
+        "org.apache.commons:commons-compress:1.28.0",
+        "org.apache.commons:commons-lang3:3.20.0",
+        "org.apache.commons:commons-math3:3.6.1",
+        "org.apache.httpcomponents:httpclient:4.5.14",
+        "org.apache.httpcomponents:httpcore:4.4.16",
+        "org.apache.sshd:sshd-osgi:" + SSHD_VERSION,
+        "org.apache.sshd:sshd-sftp:" + SSHD_VERSION,
+        "org.assertj:assertj-core:3.27.6",
+        "org.bouncycastle:bcpg-jdk18on:" + BOUNCYCASTLE_VERSION,
+        "org.bouncycastle:bcpkix-jdk18on:" + BOUNCYCASTLE_VERSION,
+        "org.bouncycastle:bcprov-jdk18on:" + BOUNCYCASTLE_VERSION,
+        "org.bouncycastle:bcutil-jdk18on:" + BOUNCYCASTLE_VERSION,
+        "org.eclipse.jetty:jetty-http:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-io:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-security:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-server:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-session:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-util-ajax:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-util:" + JETTY_VERSION,
+        "org.eclipse.jetty.ee8:jetty-ee8-nested:" + JETTY_VERSION,
+        "org.eclipse.jetty.ee8:jetty-ee8-security:" + JETTY_VERSION,
+        "org.eclipse.jetty.ee8:jetty-ee8-servlet:" + JETTY_VERSION,
+        "org.hamcrest:hamcrest:3.0",
+        "org.mockito:mockito-core:5.20.0",
+        "org.objenesis:objenesis:3.4",
+        "org.openjdk.jmh:jmh-core:" + JMH_VERSION,
+        "org.openjdk.jmh:jmh-generator-annprocess:" + JMH_VERSION,
+        "org.slf4j:slf4j-api:" + SLF4J_VERSION,
+        "org.slf4j:slf4j-simple:" + SLF4J_VERSION,
+        "org.tukaani:xz:1.11",
+    ],
+    duplicate_version_warning = "warn",
+    fail_on_missing_checksum = True,
+    fetch_sources = True,
+    repositories = [
+        "https://repo1.maven.org/maven2",
+    ],
+    strict_visibility = True,
+)
+use_repo(maven, "jgit_deps")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..b6cdace
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,812 @@
+{
+  "lockFileVersion": 13,
+  "registryFileHashes": {
+    "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
+    "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/source.json": "035b6f1911e17340db722bbc9158f830ee6d5dedba4cb3bcb9e25e590808a32c",
+    "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef",
+    "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862",
+    "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
+    "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
+    "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/source.json": "16a3fc5b4483cb307643791f5a4b7365fa98d2e70da7c378cdbde55f0c0b32cf",
+    "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+    "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
+    "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+    "https://bcr.bazel.build/modules/googletest/1.14.0/source.json": "2478949479000fdd7de9a3d0107ba2c85bb5f961c3ecb1aa448f52549ce310b5",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d",
+    "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
+    "https://bcr.bazel.build/modules/platforms/0.0.10/source.json": "f22828ff4cf021a6b577f1bf6341cb9dcd7965092a439f64fc1bb3b7a5ae4bd5",
+    "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
+    "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
+    "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
+    "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
+    "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
+    "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+    "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
+    "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+    "https://bcr.bazel.build/modules/protobuf/27.0/source.json": "1acf3d080c728d42f423fde5422fd0a1a24f44c15908124ce12363a253384193",
+    "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+    "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54",
+    "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
+    "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+    "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
+    "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
+    "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
+    "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1",
+    "https://bcr.bazel.build/modules/rules_java/8.11.0/MODULE.bazel": "c3d280bc5ff1038dcb3bacb95d3f6b83da8dd27bba57820ec89ea4085da767ad",
+    "https://bcr.bazel.build/modules/rules_java/8.11.0/source.json": "302b52a39259a85aa06ca3addb9787864ca3e03b432a5f964ea68244397e7544",
+    "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.7/source.json": "5426f412d0a7fc6b611643376c7e4a82dec991491b9ce5cb1cfdd25fe2e92be4",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5",
+    "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
+    "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb",
+    "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc",
+    "https://bcr.bazel.build/modules/rules_pkg/0.7.0/source.json": "c2557066e0c0342223ba592510ad3d812d4963b9024831f7f66fd0584dd8c66c",
+    "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
+    "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.2/source.json": "17a2e195f56cb28d6bbf763e49973d13890487c6945311ed141e196fb660426d",
+    "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
+    "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7",
+    "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
+    "https://bcr.bazel.build/modules/rules_python/0.23.1/source.json": "a6d9965700e3bd75df4e19140c0e651851bb720d8b9eb280ecd1ee44b92d7646",
+    "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
+    "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3",
+    "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8",
+    "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+    "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
+    "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d"
+  },
+  "selectedYankedVersions": {},
+  "moduleExtensions": {
+    "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=",
+        "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_apple_cc_toolchains": {
+            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf_toolchains",
+            "attributes": {}
+          },
+          "local_config_apple_cc": {
+            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "apple_support~",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@platforms//host:extension.bzl%host_platform": {
+      "general": {
+        "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=",
+        "usagesDigest": "hgylFkgWSg0ulUwWZzEM1aIftlUnbmw2ynWLdEfHnZc=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "host_platform": {
+            "bzlFile": "@@platforms//host:extension.bzl",
+            "ruleClassName": "host_platform_repo",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
+      "general": {
+        "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=",
+        "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "com_github_jetbrains_kotlin_git": {
+            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
+            "ruleClassName": "kotlin_compiler_git_repository",
+            "attributes": {
+              "urls": [
+                "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip"
+              ],
+              "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88"
+            }
+          },
+          "com_github_jetbrains_kotlin": {
+            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
+            "ruleClassName": "kotlin_capabilities_repository",
+            "attributes": {
+              "git_repository_name": "com_github_jetbrains_kotlin_git",
+              "compiler_version": "1.9.23"
+            }
+          },
+          "com_github_google_ksp": {
+            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl",
+            "ruleClassName": "ksp_compiler_plugin_repository",
+            "attributes": {
+              "urls": [
+                "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip"
+              ],
+              "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d",
+              "strip_version": "1.9.23-1.0.20"
+            }
+          },
+          "com_github_pinterest_ktlint": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985",
+              "urls": [
+                "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint"
+              ],
+              "executable": true
+            }
+          },
+          "rules_android": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
+              "strip_prefix": "rules_android-0.1.1",
+              "urls": [
+                "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"
+              ]
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_kotlin~",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_python~//python/extensions:python.bzl%python": {
+      "general": {
+        "bzlTransitiveDigest": "l7SEKGzdShn1GH45yoD3IEBi5SxT+5WsAq/OlHiiuiw=",
+        "usagesDigest": "YiLsNY5r63HmlgMVyESsQgfKVj6Ky/w9Zozdju6rXl4=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "python_3_11_aarch64-apple-darwin": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "4918cdf1cab742a90f85318f88b8122aeaa2d04705803c7b6e78e81a3dd40f80",
+              "patches": [],
+              "platform": "aarch64-apple-darwin",
+              "python_version": "3.11.1",
+              "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "debf15783bdcb5530504f533d33fda75a7b905cec5361ae8f33da5ba6599f8b4",
+              "patches": [],
+              "platform": "aarch64-unknown-linux-gnu",
+              "python_version": "3.11.1",
+              "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_x86_64-apple-darwin": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "20a4203d069dc9b710f70b09e7da2ce6f473d6b1110f9535fb6f4c469ed54733",
+              "patches": [],
+              "platform": "x86_64-apple-darwin",
+              "python_version": "3.11.1",
+              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_x86_64-pc-windows-msvc": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "edc08979cb0666a597466176511529c049a6f0bba8adf70df441708f766de5bf",
+              "patches": [],
+              "platform": "x86_64-pc-windows-msvc",
+              "python_version": "3.11.1",
+              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "02a551fefab3750effd0e156c25446547c238688a32fabde2995c941c03a6423",
+              "patches": [],
+              "platform": "x86_64-unknown-linux-gnu",
+              "python_version": "3.11.1",
+              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11": {
+            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
+            "ruleClassName": "toolchain_aliases",
+            "attributes": {
+              "python_version": "3.11.1",
+              "user_repository_name": "python_3_11"
+            }
+          },
+          "pythons_hub": {
+            "bzlFile": "@@rules_python~//python/extensions/private:pythons_hub.bzl",
+            "ruleClassName": "hub_repo",
+            "attributes": {
+              "toolchain_prefixes": [
+                "_0000_python_3_11_"
+              ],
+              "toolchain_python_versions": [
+                "3.11"
+              ],
+              "toolchain_set_python_version_constraints": [
+                "False"
+              ],
+              "toolchain_user_repository_names": [
+                "python_3_11"
+              ]
+            }
+          },
+          "python_aliases": {
+            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
+            "ruleClassName": "multi_toolchain_aliases",
+            "attributes": {
+              "python_versions": {
+                "3.11": "python_3_11"
+              }
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python~",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_python~//python/extensions/private:internal_deps.bzl%internal_deps": {
+      "general": {
+        "bzlTransitiveDigest": "HZia2x2zClxBbkyhPtNWVBPeKOTV8j7xJuwILyef0YY=",
+        "usagesDigest": "9RSsqSb2/36w50hPv3LjfktbwXR/5SiHNcdkp4m2BVA=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "pypi__build": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/03/97/f58c723ff036a8d8b4d3115377c0a37ed05c1f68dd9a0d66dab5e82c5c1c/build-0.9.0-py3-none-any.whl",
+              "sha256": "38a7a2b7a0bdc61a42a0a67509d88c71ecfc37b393baba770fae34e20929ff69",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__click": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/76/0a/b6c5f311e32aeb3b406e03c079ade51e905ea630fc19d1262a46249c1c86/click-8.0.1-py3-none-any.whl",
+              "sha256": "fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__colorama": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl",
+              "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__installer": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl",
+              "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__packaging": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/8f/7b/42582927d281d7cb035609cd3a543ffac89b74f3f4ee8e1c50914bcb57eb/packaging-22.0-py3-none-any.whl",
+              "sha256": "957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pep517": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/ee/2f/ef63e64e9429111e73d3d6cbee80591672d16f2725e648ebc52096f3d323/pep517-0.13.0-py3-none-any.whl",
+              "sha256": "4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pip": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/09/bd/2410905c76ee14c62baf69e3f4aa780226c1bbfc9485731ad018e35b0cb5/pip-22.3.1-py3-none-any.whl",
+              "sha256": "908c78e6bc29b676ede1c4d57981d490cb892eb45cd8c214ab6298125119e077",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pip_tools": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/5e/e8/f6d7d1847c7351048da870417724ace5c4506e816b38db02f4d7c675c189/pip_tools-6.12.1-py3-none-any.whl",
+              "sha256": "f0c0c0ec57b58250afce458e2e6058b1f30a4263db895b7d72fd6311bf1dc6f7",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__setuptools": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/7c/5b/3d92b9f0f7ca1645cba48c080b54fe7d8b1033a4e5720091d1631c4266db/setuptools-60.10.0-py3-none-any.whl",
+              "sha256": "782ef48d58982ddb49920c11a0c5c9c0b02e7d7d1c2ad0aa44e1a1e133051c96",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__tomli": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl",
+              "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__wheel": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/bd/7c/d38a0b30ce22fc26ed7dbc087c6d00851fb3395e9d0dac40bec1f905030c/wheel-0.38.4-py3-none-any.whl",
+              "sha256": "b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__importlib_metadata": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/d7/31/74dcb59a601b95fce3b0334e8fc9db758f78e43075f22aeb3677dfb19f4c/importlib_metadata-1.4.0-py2.py3-none-any.whl",
+              "sha256": "bdd9b7c397c273bcc9a11d6629a38487cd07154fa255a467bf704cd2c258e359",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__zipp": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/f4/50/cc72c5bcd48f6e98219fc4a88a5227e9e28b81637a99c49feba1d51f4d50/zipp-1.0.0-py2.py3-none-any.whl",
+              "sha256": "8dda78f06bd1674bd8720df8a50bb47b6e1233c503a4eed8e7810686bde37656",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__more_itertools": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/bd/3f/c4b3dbd315e248f84c388bd4a72b131a29f123ecacc37ffb2b3834546e42/more_itertools-8.13.0-py3-none-any.whl",
+              "sha256": "c5122bffc5f104d37c1626b8615b511f3427aa5389b94d61e5ef8236bfbc3ddb",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__coverage_cp38_aarch64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/28/d7/9a8de57d87f4bbc6f9a6a5ded1eaac88a89bf71369bb935dac3c0cf2893e/coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp38_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/c8/e4/e6182e4697665fb594a7f4e4f27cb3a4dd00c2e3d35c5c706765de8c7866/coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp38_x86_64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/c6/fc/be19131010930a6cf271da48202c8cc1d3f971f68c02fb2d3a78247f43dc/coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp38_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/44/55/49f65ccdd4dfd6d5528e966b28c37caec64170c725af32ab312889d2f857/coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp39_aarch64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/ca/0c/3dfeeb1006c44b911ee0ed915350db30325d01808525ae7cc8d57643a2ce/coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp39_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/61/af/5964b8d7d9a5c767785644d9a5a63cacba9a9c45cc42ba06d25895ec87be/coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp39_x86_64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/88/da/495944ebf0ad246235a6bd523810d9f81981f9b81c6059ba1f56e943abe0/coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp39_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/fe/57/e4f8ad64d84ca9e759d783a052795f62a9f9111585e46068845b1cb52c2b/coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp310_aarch64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/3d/80/7060a445e1d2c9744b683dc935248613355657809d6c6b2716cdf4ca4766/coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp310_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/b8/9d/926fce7e03dbfc653104c2d981c0fa71f0572a9ebd344d24c573bd6f7c4f/coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp310_x86_64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/01/24/be01e62a7bce89bcffe04729c540382caa5a06bee45ae42136c93e2499f5/coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp310_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/b4/bd/1b2331e3a04f4cc9b7b332b1dd0f3a1261dfc4114f8479bebfcc2afee9e8/coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp311_aarch64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/67/d7/cd8fe689b5743fffac516597a1222834c42b80686b99f5b44ef43ccc2a43/coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp311_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/8c/95/16eed713202406ca0a37f8ac259bbf144c9d24f9b8097a8e6ead61da2dbb/coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp311_x86_64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/c6/fa/529f55c9a1029c840bcc9109d5a15ff00478b7ff550a1ae361f8745f8ad5/coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl"
+              ]
+            }
+          },
+          "pypi__coverage_cp311_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "\nfilegroup(\n    name = \"coverage\",\n    srcs = [\"coverage/__main__.py\"],\n    data = glob([\"coverage/*.py\", \"coverage/**/*.py\", \"coverage/*.so\"]),\n    visibility = [\"//visibility:public\"],\n)\n    ",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_python~//python/private:coverage.patch"
+              ],
+              "sha256": "63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb",
+              "type": "zip",
+              "urls": [
+                "https://files.pythonhosted.org/packages/a7/cd/3ce94ad9d407a052dc2a74fbeb1c7947f442155b28264eb467ee78dea812/coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+              ]
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python~",
+            "bazel_skylib",
+            "bazel_skylib~"
+          ],
+          [
+            "rules_python~",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_python~",
+            "rules_python",
+            "rules_python~"
+          ]
+        ]
+      }
+    }
+  }
+}
diff --git a/WORKSPACE b/WORKSPACE
index 737109d..6ba4a02 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1,331 +1,2 @@
-workspace(name = "jgit")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("//tools:bazlets.bzl", "load_bazlets")
-
-load_bazlets(commit = "f9c119e45d9a241bee720b7fbd6c7fdbc952da5f")
-
-load(
-    "@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl",
-    "maven_jar",
-)
-
-http_archive(
-    name = "rules_java",
-    sha256 = "4da3761f6855ad916568e2bfe86213ba6d2637f56b8360538a7fb6125abf6518",
-    urls = [
-        "https://github.com/bazelbuild/rules_java/releases/download/7.5.0/rules_java-7.5.0.tar.gz",
-    ],
-)
-
-load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")
-
-rules_java_dependencies()
-
-http_archive(
-    name = "ubuntu2204_jdk17",
-    sha256 = "8ea82b81c9707e535ff93ef5349d11e55b2a23c62bcc3b0faaec052144aed87d",
-    strip_prefix = "rbe_autoconfig-5.1.0",
-    urls = [
-        "https://gerrit-bazel.storage.googleapis.com/rbe_autoconfig/v5.1.0.tar.gz",
-        "https://github.com/davido/rbe_autoconfig/releases/download/v5.1.0/v5.1.0.tar.gz",
-    ],
-)
-
-register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition")
-
-register_toolchains("//tools:error_prone_warnings_toolchain_java21_definition")
-
-# Order of registering toolchains matters. rules_java toolchains take precedence
-# over the custom toolchains, so the default jdk21 toolchain gets picked
-# (one without custom package_config). That's why the `rules_java_toolchains()`
-# must be called after the `register_toolchain()` invocation.
-rules_java_toolchains()
-
-JMH_VERS = "1.37"
-
-maven_jar(
-    name = "jmh-core",
-    artifact = "org.openjdk.jmh:jmh-core:" + JMH_VERS,
-    attach_source = False,
-    sha1 = "896f27e49105b35ea1964319c83d12082e7a79ef",
-)
-
-maven_jar(
-    name = "jmh-annotations",
-    artifact = "org.openjdk.jmh:jmh-generator-annprocess:" + JMH_VERS,
-    attach_source = False,
-    sha1 = "da93888682df163144edf9b13d2b78e54166063a",
-)
-
-maven_jar(
-    name = "jopt",
-    artifact = "net.sf.jopt-simple:jopt-simple:5.0.4",
-    attach_source = False,
-    sha1 = "4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c",
-)
-
-maven_jar(
-    name = "math3",
-    artifact = "org.apache.commons:commons-math3:3.6.1",
-    attach_source = False,
-    sha1 = "e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf",
-)
-
-maven_jar(
-    name = "jsch",
-    artifact = "com.jcraft:jsch:0.1.55",
-    sha1 = "bbd40e5aa7aa3cfad5db34965456cee738a42a50",
-)
-
-maven_jar(
-    name = "jzlib",
-    artifact = "com.jcraft:jzlib:1.1.3",
-    sha1 = "c01428efa717624f7aabf4df319939dda9646b2d",
-)
-
-maven_jar(
-    name = "javaewah",
-    artifact = "com.googlecode.javaewah:JavaEWAH:1.2.3",
-    sha1 = "13a27c856e0c8808cee9a64032c58eee11c3adc9",
-)
-
-maven_jar(
-    name = "httpclient",
-    artifact = "org.apache.httpcomponents:httpclient:4.5.14",
-    sha1 = "1194890e6f56ec29177673f2f12d0b8e627dec98",
-)
-
-maven_jar(
-    name = "httpcore",
-    artifact = "org.apache.httpcomponents:httpcore:4.4.16",
-    sha1 = "51cf043c87253c9f58b539c9f7e44c8894223850",
-)
-
-SSHD_VERS = "2.16.0"
-
-maven_jar(
-    name = "sshd-osgi",
-    artifact = "org.apache.sshd:sshd-osgi:" + SSHD_VERS,
-    sha1 = "87cab2aaa6e06c5d48d746e90f0b3635f8c06419",
-)
-
-maven_jar(
-    name = "sshd-sftp",
-    artifact = "org.apache.sshd:sshd-sftp:" + SSHD_VERS,
-    sha1 = "09d9e7024535fb4a3f74367ba7e0a2f5093af638",
-)
-
-JNA_VERS = "5.18.1"
-
-maven_jar(
-    name = "jna",
-    artifact = "net.java.dev.jna:jna:" + JNA_VERS,
-    sha1 = "b27ba04287cc4abe769642fe8318d39fc89bf937",
-)
-
-maven_jar(
-    name = "jna-platform",
-    artifact = "net.java.dev.jna:jna-platform:" + JNA_VERS,
-    sha1 = "dd817f391efc492041c9ae91127527c13750a789",
-)
-
-maven_jar(
-    name = "commons-codec",
-    artifact = "commons-codec:commons-codec:1.19.0",
-    sha1 = "8c0dbe3ae883fceda9b50a6c76e745e548073388",
-)
-
-maven_jar(
-    name = "commons-logging",
-    artifact = "commons-logging:commons-logging:1.3.5",
-    sha1 = "a3fcc5d3c29b2b03433aa2d2f2d2c1b1638924a1",
-)
-
-SLF4J_VERS = "2.0.17"
-
-maven_jar(
-    name = "log-api",
-    artifact = "org.slf4j:slf4j-api:" + SLF4J_VERS,
-    sha1 = "d9e58ac9c7779ba3bf8142aff6c830617a7fe60f",
-)
-
-maven_jar(
-    name = "slf4j-simple",
-    artifact = "org.slf4j:slf4j-simple:" + SLF4J_VERS,
-    sha1 = "9872a3fd794ffe7b18d17747926a64d61526ca96",
-)
-
-maven_jar(
-    name = "servlet-api",
-    artifact = "jakarta.servlet:jakarta.servlet-api:4.0.4",
-    sha1 = "b8a1142e04838fe54194049c6e7a18dae8f9b960",
-)
-
-maven_jar(
-    name = "commons-compress",
-    artifact = "org.apache.commons:commons-compress:1.28.0",
-    sha1 = "e482f2c7a88dac3c497e96aa420b6a769f59c8d7",
-)
-
-maven_jar(
-    name = "commons-lang3",
-    artifact = "org.apache.commons:commons-lang3:3.19.0",
-    sha1 = "d6524b169a6574cd253760c472d419b47bfd37e6",
-)
-
-maven_jar(
-    name = "commons-io",
-    artifact = "commons-io:commons-io:2.20.0",
-    sha1 = "36f3474daec2849c149e877614e7f979b2082cd2",
-)
-
-maven_jar(
-    name = "tukaani-xz",
-    artifact = "org.tukaani:xz:1.10",
-    sha1 = "1be8166f89e035a56c6bfc67dbc423996fe577e2",
-)
-
-maven_jar(
-    name = "args4j",
-    artifact = "args4j:args4j:2.37",
-    sha1 = "244f60c057d72a785227c0562d3560f42a7ea54b",
-)
-
-maven_jar(
-    name = "junit",
-    artifact = "junit:junit:4.13.2",
-    sha1 = "8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12",
-)
-
-maven_jar(
-    name = "hamcrest",
-    artifact = "org.hamcrest:hamcrest:3.0",
-    sha1 = "8fd9b78a8e6a6510a078a9e30e9e86a6035cfaf7",
-)
-
-maven_jar(
-    name = "mockito",
-    artifact = "org.mockito:mockito-core:5.20.0",
-    sha1 = "a32f446f38acf636363c5693db6498047731b9e0",
-)
-
-maven_jar(
-    name = "assertj-core",
-    artifact = "org.assertj:assertj-core:3.27.6",
-    sha1 = "8f34ccd6808899ad1d0aac6a770b73191f2f2a53",
-)
-
-BYTE_BUDDY_VERSION = "1.17.8"
-
-maven_jar(
-    name = "bytebuddy",
-    artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
-    sha1 = "af5735f63d00ca47a9375fae5c7471a36331c6ed",
-)
-
-maven_jar(
-    name = "bytebuddy-agent",
-    artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
-    sha1 = "f09415827a71be7ed621c7bd02550678f28bc81c",
-)
-
-maven_jar(
-    name = "objenesis",
-    artifact = "org.objenesis:objenesis:3.4",
-    sha1 = "675cbe121a68019235d27f6c34b4f0ac30e07418",
-)
-
-maven_jar(
-    name = "gson",
-    artifact = "com.google.code.gson:gson:2.13.2",
-    sha1 = "48b8230771e573b54ce6e867a9001e75977fe78e",
-)
-
-JETTY_VER = "12.1.3"
-
-maven_jar(
-    name = "jetty-servlet",
-    artifact = "org.eclipse.jetty.ee8:jetty-ee8-servlet:" + JETTY_VER,
-    sha1 = "d69a5afcc26d314f38c694028b8d77b97e8d7a0f",
-)
-
-maven_jar(
-    name = "jetty-nested",
-    artifact = "org.eclipse.jetty.ee8:jetty-ee8-nested:" + JETTY_VER,
-    sha1 = "042d61943b0530d513048ca3c30f35bfa4d74d60",
-)
-
-maven_jar(
-    name = "jetty-security",
-    artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VER,
-    sha1 = "f40cb316ef0e9a168f59eaf0b2d0440b7adcb1f8",
-)
-
-maven_jar(
-    name = "jetty-ee8-security",
-    artifact = "org.eclipse.jetty.ee8:jetty-ee8-security:" + JETTY_VER,
-    sha1 = "166990e1abb82d310147da11ded232390c47f5d4",
-)
-
-maven_jar(
-    name = "jetty-server",
-    artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VER,
-    sha1 = "7741aafcd7d6dc718d04d4cfb883982e361d6577",
-)
-
-maven_jar(
-    name = "jetty-session",
-    artifact = "org.eclipse.jetty:jetty-session:" + JETTY_VER,
-    sha1 = "0837f081a357a2c835a96ceaa09445921a33b0e9",
-)
-
-maven_jar(
-    name = "jetty-http",
-    artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VER,
-    sha1 = "3822fb03ec85e4157cf68c1ac661b5d06fd19b25",
-)
-
-maven_jar(
-    name = "jetty-io",
-    artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VER,
-    sha1 = "2c46bf53f41e40df72ff457c40553da2ace7b956",
-)
-
-maven_jar(
-    name = "jetty-util",
-    artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VER,
-    sha1 = "9606f6cc440419f62214ceaa2c8ab4b312baf6be",
-)
-
-maven_jar(
-    name = "jetty-util-ajax",
-    artifact = "org.eclipse.jetty:jetty-util-ajax:" + JETTY_VER,
-    sha1 = "d0b0a631434ca2cf5a913d2852893779bfecebf8",
-)
-
-BOUNCYCASTLE_VER = "1.82"
-
-maven_jar(
-    name = "bcpg",
-    artifact = "org.bouncycastle:bcpg-jdk18on:" + BOUNCYCASTLE_VER,
-    sha1 = "55cd7f445018b18119e3f2e67978fb39445b791c",
-)
-
-maven_jar(
-    name = "bcprov",
-    artifact = "org.bouncycastle:bcprov-jdk18on:" + BOUNCYCASTLE_VER,
-    sha1 = "e1118397395d21909a1b7b15120d0c2a68d7fd0c",
-)
-
-maven_jar(
-    name = "bcutil",
-    artifact = "org.bouncycastle:bcutil-jdk18on:" + BOUNCYCASTLE_VER,
-    sha1 = "1850911d674c91ce6444783ff10478e2c6e9bbf9",
-)
-
-maven_jar(
-    name = "bcpkix",
-    artifact = "org.bouncycastle:bcpkix-jdk18on:" + BOUNCYCASTLE_VER,
-    sha1 = "ad7b7155abac3e4e4f73579d5176c11f7659c560",
-)
+# This file marks the root of the Bazel workspace.
+# See MODULE.bazel for external dependencies setup.
diff --git a/lib/BUILD b/lib/BUILD
index f67eda9..5994907 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -6,7 +6,7 @@
         "//org.eclipse.jgit.pgm:__pkg__",
         "//org.eclipse.jgit.pgm.test:__pkg__",
     ],
-    exports = ["@args4j//jar"],
+    exports = ["@jgit_deps//:args4j_args4j"],
 )
 
 java_library(
@@ -16,7 +16,7 @@
         "//org.eclipse.jgit.pgm.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@commons-compress//jar"],
+    exports = ["@jgit_deps//:org_apache_commons_commons_compress"],
 )
 
 java_library(
@@ -26,7 +26,7 @@
         "//org.eclipse.jgit.pgm.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@commons-lang3//jar"],
+    exports = ["@jgit_deps//:org_apache_commons_commons_lang3"],
 )
 
 java_library(
@@ -36,7 +36,7 @@
         "//org.eclipse.jgit.pgm.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@commons-io//jar"],
+    exports = ["@jgit_deps//:commons_io_commons_io"],
 )
 
 java_library(
@@ -45,13 +45,13 @@
         "//org.eclipse.jgit:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@commons-codec//jar"],
+    exports = ["@jgit_deps//:commons_codec_commons_codec"],
 )
 
 java_library(
     name = "commons-logging",
     visibility = ["//visibility:public"],
-    exports = ["@commons-logging//jar"],
+    exports = ["@jgit_deps//:commons_logging_commons_logging"],
 )
 
 java_library(
@@ -60,7 +60,7 @@
         "//org.eclipse.jgit.lfs:__pkg__",
         "//org.eclipse.jgit.lfs.server:__pkg__",
     ],
-    exports = ["@gson//jar"],
+    exports = ["@jgit_deps//:com_google_code_gson_gson"],
 )
 
 java_library(
@@ -70,7 +70,7 @@
         "//org.eclipse.jgit.lfs.server.test:__pkg__",
         "//org.eclipse.jgit.pgm:__pkg__",
     ],
-    exports = ["@httpclient//jar"],
+    exports = ["@jgit_deps//:org_apache_httpcomponents_httpclient"],
 )
 
 java_library(
@@ -82,7 +82,7 @@
         "//org.eclipse.jgit.lfs.server.test:__pkg__",
         "//org.eclipse.jgit.pgm:__pkg__",
     ],
-    exports = ["@httpcore//jar"],
+    exports = ["@jgit_deps//:org_apache_httpcomponents_httpcore"],
 )
 
 java_library(
@@ -94,7 +94,7 @@
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@sshd-osgi//jar"],
+    exports = ["@jgit_deps//:org_apache_sshd_sshd_osgi"],
 )
 
 java_library(
@@ -105,7 +105,7 @@
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@sshd-sftp//jar"],
+    exports = ["@jgit_deps//:org_apache_sshd_sshd_sftp"],
 )
 
 java_library(
@@ -113,7 +113,7 @@
     visibility = [
         "//org.eclipse.jgit.ssh.apache.agent:__pkg__",
     ],
-    exports = ["@jna//jar"],
+    exports = ["@jgit_deps//:net_java_dev_jna_jna"],
 )
 
 java_library(
@@ -121,20 +121,20 @@
     visibility = [
         "//org.eclipse.jgit.ssh.apache.agent:__pkg__",
     ],
-    exports = ["@jna-platform//jar"],
+    exports = ["@jgit_deps//:net_java_dev_jna_jna_platform"],
 )
 
 java_library(
     name = "javaewah",
     visibility = ["//visibility:public"],
-    exports = ["@javaewah//jar"],
+    exports = ["@jgit_deps//:com_googlecode_javaewah_JavaEWAH"],
 )
 
 java_library(
     name = "jetty-http",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-http//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_http"],
     runtime_deps = [":commons-codec"],
 )
 
@@ -142,28 +142,42 @@
     name = "jetty-io",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-io//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_io"],
 )
 
 java_library(
     name = "jetty-security",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-security//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_security"],
 )
 
 java_library(
     name = "jetty-session",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-session//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_session"],
 )
 
 java_library(
     name = "jetty-server",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-server//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_server"],
+)
+
+java_library(
+    name = "jetty-ee8-nested",
+    # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
+    visibility = ["//visibility:public"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_ee8_jetty_ee8_nested"],
+)
+
+java_library(
+    name = "jetty-ee8-security",
+    # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
+    visibility = ["//visibility:public"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_ee8_jetty_ee8_security"],
 )
 
 java_library(
@@ -171,8 +185,8 @@
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
     exports = [
-        "@jetty-servlet//jar",
-        "@jetty-util-ajax//jar",
+        "@jgit_deps//:org_eclipse_jetty_ee8_jetty_ee8_servlet",
+        "@jgit_deps//:org_eclipse_jetty_jetty_util_ajax",
     ],
 )
 
@@ -180,32 +194,17 @@
     name = "jetty-util",
     # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
     visibility = ["//visibility:public"],
-    exports = ["@jetty-util//jar"],
+    exports = ["@jgit_deps//:org_eclipse_jetty_jetty_util"],
 )
 
 java_library(
-    name = "jetty-ee8-nested",
-    # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
-    visibility = ["//visibility:public"],
-    exports = ["@jetty-nested//jar"],
-)
-
-java_library(
-    name = "jetty-ee8-security",
-    # TODO: This should be testonly but org.eclipse.jgit.pgm depends on it.
-    visibility = ["//visibility:public"],
-    exports = ["@jetty-ee8-security//jar"],
-)
-
-
-java_library(
     name = "jsch",
     visibility = [
         "//org.eclipse.jgit.junit.ssh:__pkg__",
         "//org.eclipse.jgit.ssh.jsch:__pkg__",
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
     ],
-    exports = ["@jsch//jar"],
+    exports = ["@jgit_deps//:com_jcraft_jsch"],
 )
 
 java_library(
@@ -217,7 +216,7 @@
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@bcpg//jar"],
+    exports = ["@jgit_deps//:org_bouncycastle_bcpg_jdk18on"],
 )
 
 java_library(
@@ -230,7 +229,7 @@
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@bcprov//jar"],
+    exports = ["@jgit_deps//:org_bouncycastle_bcprov_jdk18on"],
 )
 
 java_library(
@@ -243,7 +242,7 @@
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@bcutil//jar"],
+    exports = ["@jgit_deps//:org_bouncycastle_bcutil_jdk18on"],
 )
 
 java_library(
@@ -255,7 +254,7 @@
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@bcpkix//jar"],
+    exports = ["@jgit_deps//:org_bouncycastle_bcpkix_jdk18on"],
 )
 
 java_library(
@@ -264,7 +263,7 @@
         "//org.eclipse.jgit.ssh.jsch:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
-    exports = ["@jzlib//jar"],
+    exports = ["@jgit_deps//:com_jcraft_jzlib"],
 )
 
 java_library(
@@ -272,12 +271,12 @@
     testonly = 1,
     visibility = ["//visibility:public"],
     exports = [
-        "@bytebuddy-agent//jar",
-        "@bytebuddy//jar",
-        "@hamcrest//jar",
-        "@junit//jar",
-        "@mockito//jar",
-        "@objenesis//jar",
+        "@jgit_deps//:net_bytebuddy_byte_buddy_agent",
+        "@jgit_deps//:net_bytebuddy_byte_buddy",
+        "@jgit_deps//:org_hamcrest_hamcrest",
+        "@jgit_deps//:junit_junit",
+        "@jgit_deps//:org_mockito_mockito_core",
+        "@jgit_deps//:org_objenesis_objenesis",
     ],
 )
 
@@ -286,10 +285,10 @@
     testonly = 1,
     visibility = ["//visibility:public"],
     exports = [
-        "@bytebuddy-agent//jar",
-        "@bytebuddy//jar",
-        "@mockito//jar",
-        "@objenesis//jar",
+        "@jgit_deps//:net_bytebuddy_byte_buddy_agent",
+        "@jgit_deps//:net_bytebuddy_byte_buddy",
+        "@jgit_deps//:org_mockito_mockito_core",
+        "@jgit_deps//:org_objenesis_objenesis",
     ],
 )
 
@@ -298,7 +297,7 @@
     testonly = 1,
     visibility = ["//visibility:public"],
     exports = [
-        "@assertj-core//jar",
+        "@jgit_deps//:org_assertj_assertj_core",
     ],
 )
 
@@ -313,24 +312,24 @@
         "//org.eclipse.jgit.lfs.server.test:__pkg__",
         "//org.eclipse.jgit.pgm:__pkg__",
     ],
-    exports = ["@servlet-api//jar"],
+    exports = ["@jgit_deps//:jakarta_servlet_jakarta_servlet_api_4_0_4"],
 )
 
 java_library(
     name = "slf4j-api",
     visibility = ["//visibility:public"],
-    exports = ["@log-api//jar"],
+    exports = ["@jgit_deps//:org_slf4j_slf4j_api"],
 )
 
 java_library(
     name = "slf4j-simple",
     visibility = ["//visibility:public"],
-    exports = ["@slf4j-simple//jar"],
+    exports = ["@jgit_deps//:org_slf4j_slf4j_simple"],
 )
 
 java_library(
     name = "xz",
     testonly = 1,
     visibility = ["//visibility:public"],
-    exports = ["@tukaani-xz//jar"],
+    exports = ["@jgit_deps//:org_tukaani_xz"],
 )
diff --git a/lib/jmh/BUILD b/lib/jmh/BUILD
index b15e66c..1bba1a5 100644
--- a/lib/jmh/BUILD
+++ b/lib/jmh/BUILD
@@ -4,9 +4,9 @@
     name = "jmh",
     visibility = ["//visibility:public"],
     exports = [
-        "@jmh-annotations//jar",
-        "@jmh-core//jar",
-        "@jopt//jar",
-        "@math3//jar",
+        "@jgit_deps//:org_openjdk_jmh_jmh_generator_annprocess",
+        "@jgit_deps//:org_openjdk_jmh_jmh_core",
+        "@jgit_deps//:net_sf_jopt_simple_jopt_simple",
+        "@jgit_deps//:org_apache_commons_commons_math3",
     ],
 )
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 0157b21..b114e7d 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -5,14 +5,14 @@
 Automatic-Module-Name: org.eclipse.jgit.ant.test
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.ant.tasks;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index 517156a..483e833 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant.test</artifactId>
diff --git a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
index 5ba344a..18acf74 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ant
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)"
+  org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)"
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="7.5.0",
- org.eclipse.jgit.ant.tasks;version="7.5.0";
+Export-Package: org.eclipse.jgit.ant;version="7.6.0",
+ org.eclipse.jgit.ant.tasks;version="7.6.0";
   uses:="org.apache.tools.ant,
    org.apache.tools.ant.types"
diff --git a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
index df6d400..d9b3241 100644
--- a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.ant - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ant.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 4c3d7e1..dab8a3d 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant</artifactId>
diff --git a/org.eclipse.jgit.archive/BUILD b/org.eclipse.jgit.archive/BUILD
index d4f5340..7c6d610 100644
--- a/org.eclipse.jgit.archive/BUILD
+++ b/org.eclipse.jgit.archive/BUILD
@@ -12,6 +12,7 @@
     resources = glob(["resources/**"]),
     deps = [
         "//lib:commons-compress",
+        "//lib:commons-io",
         "//lib:commons-lang3",
         # We want these deps to be provided_deps
         "//org.eclipse.jgit:jgit",
diff --git a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
index 26039e4..3f9d2c1 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.archive
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -14,18 +14,18 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)",
  org.tukaani.xz
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="7.5.0";
+Export-Package: org.eclipse.jgit.archive;version="7.6.0";
   uses:="org.apache.commons.compress.archivers,
    org.osgi.framework,
    org.eclipse.jgit.api,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.archive.internal;version="7.5.0";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="7.6.0";x-internal:=true
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index 22f6779..86336e3 100644
--- a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.archive - Sources
 Bundle-SymbolicName: org.eclipse.jgit.archive.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index fe567b0..bbe279b 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index 1b185c8..b4daf7d 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -16,7 +16,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.benchmarks</artifactId>
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index a43893b..80b421d 100644
--- a/org.eclipse.jgit.coverage/pom.xml
+++ b/org.eclipse.jgit.coverage/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,88 +27,88 @@
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.archive</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.apache</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.server</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ui</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
index 10544b6..647c97d 100644
--- a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc.test
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -14,9 +14,9 @@
  org.bouncycastle.openpgp.operator;version="[1.80.0,2.0.0)",
  org.bouncycastle.openpgp.operator.jcajce;version="[1.80.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.80.0,2.0.0)",
- org.eclipse.jgit.gpg.bc.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.gpg.bc.internal.keys;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.sha1;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.gpg.bc.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.sha1;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.gpg.bc.test/pom.xml b/org.eclipse.jgit.gpg.bc.test/pom.xml
index 9bde228..05e504e 100644
--- a/org.eclipse.jgit.gpg.bc.test/pom.xml
+++ b/org.eclipse.jgit.gpg.bc.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc.test</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
index 6bff1c9..cc6eda7 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
@@ -3,10 +3,10 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[7.5.0,7.6.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[7.6.0,7.7.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/gpg_bc
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Import-Package: org.bouncycastle.asn1;version="[1.80.0,2.0.0)",
@@ -27,5 +27,5 @@
  org.bouncycastle.openpgp.operator.jcajce;version="[1.80.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.80.0,2.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.gpg.bc.internal;version="7.5.0";x-friends:="org.eclipse.jgit.gpg.bc.test",
- org.eclipse.jgit.gpg.bc.internal.keys;version="7.5.0";x-friends:="org.eclipse.jgit.gpg.bc.test"
+Export-Package: org.eclipse.jgit.gpg.bc.internal;version="7.6.0";x-friends:="org.eclipse.jgit.gpg.bc.test",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="7.6.0";x-friends:="org.eclipse.jgit.gpg.bc.test"
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
index 168f1c0..82df526 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.gpg.bc - Sources
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.gpg.bc/pom.xml b/org.eclipse.jgit.gpg.bc/pom.xml
index 3ffc6a5..bfc3590 100644
--- a/org.eclipse.jgit.gpg.bc/pom.xml
+++ b/org.eclipse.jgit.gpg.bc/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc</artifactId>
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index 4935bc7..9b0f12f 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.apache
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Bundle-Localization: OSGI-INF/l10n/plugin
@@ -27,11 +27,11 @@
  org.apache.http.impl.conn;version="[4.4.0,5.0.0)",
  org.apache.http.params;version="[4.3.0,5.0.0)",
  org.apache.http.ssl;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="7.5.0";
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="7.6.0";
   uses:="org.apache.http.client,
    org.eclipse.jgit.transport.http,
    org.apache.http.entity,
diff --git a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
index 44ff896..cd65a4f 100644
--- a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.http.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index 27ff965..55828b2 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.apache</artifactId>
diff --git a/org.eclipse.jgit.http.server/.settings/.api_filters b/org.eclipse.jgit.http.server/.settings/.api_filters
index 4675956..ad4bc68 100644
--- a/org.eclipse.jgit.http.server/.settings/.api_filters
+++ b/org.eclipse.jgit.http.server/.settings/.api_filters
@@ -21,6 +21,13 @@
                 <message_argument value="hasChunkedEncodingRequestBug(int[], HttpServletRequest)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="hasChunkedEncodingRequestBug(int[], HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/GitFilter.java" type="org.eclipse.jgit.http.server.GitFilter">
         <filter id="337682486">
@@ -75,6 +82,20 @@
                 <message_argument value="addUploadPackFilter(Filter)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="addReceivePackFilter(Filter)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="addUploadPackFilter(Filter)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/GitServlet.java" type="org.eclipse.jgit.http.server.GitServlet">
         <filter id="337682486">
@@ -129,6 +150,20 @@
                 <message_argument value="addUploadPackFilter(Filter)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="addReceivePackFilter(Filter)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="addUploadPackFilter(Filter)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/GitSmartHttpTools.java" type="org.eclipse.jgit.http.server.GitSmartHttpTools">
         <filter id="338792546">
@@ -271,6 +306,55 @@
                 <message_argument value="sendError(HttpServletRequest, HttpServletResponse, int, String)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="getResponseContentType(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="isGitClient(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="isInfoRefs(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="isReceivePack(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="isUploadPack(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="sendError(HttpServletRequest, HttpServletResponse, int)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="sendError(HttpServletRequest, HttpServletResponse, int, String)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java" type="org.eclipse.jgit.http.server.ReceivePackErrorHandler">
         <filter id="403804204">
@@ -299,6 +383,13 @@
                 <message_argument value="receive(HttpServletRequest, HttpServletResponse, ReceivePackErrorHandler.ReceivePackRunnable)"/>
             </message_arguments>
         </filter>
+        <filter id="1209008130">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="receive(HttpServletRequest, HttpServletResponse, ReceivePackErrorHandler.ReceivePackRunnable)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/RepositoryFilter.java" type="org.eclipse.jgit.http.server.RepositoryFilter">
         <filter id="337682486">
@@ -421,6 +512,41 @@
                 <message_argument value="sendPlainText(String, HttpServletRequest, HttpServletResponse)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="consumeRequestBody(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="getInputStream(HttpServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="getRepository(ServletRequest)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="send(byte[], HttpServletRequest, HttpServletResponse)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="sendPlainText(String, HttpServletRequest, HttpServletResponse)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java" type="org.eclipse.jgit.http.server.UploadPackErrorHandler">
         <filter id="403804204">
@@ -449,6 +575,13 @@
                 <message_argument value="upload(HttpServletRequest, HttpServletResponse, UploadPackErrorHandler.UploadPackRunnable)"/>
             </message_arguments>
         </filter>
+        <filter id="1209008130">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="upload(HttpServletRequest, HttpServletResponse, UploadPackErrorHandler.UploadPackRunnable)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/glue/ErrorServlet.java" type="org.eclipse.jgit.http.server.glue.ErrorServlet">
         <filter id="337682486">
@@ -587,6 +720,20 @@
                 <message_argument value="with(HttpServlet)"/>
             </message_arguments>
         </filter>
+        <filter id="1209008130">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="through(Filter)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1209008130">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="with(HttpServlet)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/glue/WrappedRequest.java" type="org.eclipse.jgit.http.server.glue.WrappedRequest">
         <filter id="337682486">
@@ -620,6 +767,13 @@
                 <message_argument value="WrappedRequest(HttpServletRequest, String, String)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="WrappedRequest(HttpServletRequest, String, String)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/resolver/AsIsFileService.java" type="org.eclipse.jgit.http.server.resolver.AsIsFileService">
         <filter id="338792546">
@@ -642,6 +796,13 @@
                 <message_argument value="access(HttpServletRequest, Repository)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="access(HttpServletRequest, Repository)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java" type="org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory">
         <filter id="338792546">
@@ -664,6 +825,13 @@
                 <message_argument value="create(HttpServletRequest, Repository)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="create(HttpServletRequest, Repository)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java" type="org.eclipse.jgit.http.server.resolver.DefaultUploadPackFactory">
         <filter id="338792546">
@@ -686,5 +854,12 @@
                 <message_argument value="create(HttpServletRequest, Repository)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="create(HttpServletRequest, Repository)"/>
+            </message_arguments>
+        </filter>
     </resource>
 </component>
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index da533e6..7dd34b1 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,31 +3,31 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.http.server;version="7.5.0",
- org.eclipse.jgit.http.server.glue;version="7.5.0";
+Export-Package: org.eclipse.jgit.http.server;version="7.6.0",
+ org.eclipse.jgit.http.server.glue;version="7.6.0";
   uses:="javax.servlet,
   	javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="7.5.0";
+ org.eclipse.jgit.http.server.resolver;version="7.6.0";
   uses:="javax.servlet.http
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
 Import-Package: javax.servlet;version="[4.0.0,5.0.0)",
  javax.servlet.http;version="[4.0.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.parser;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.resolver;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)"
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)"
diff --git a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
index 49164d5..3d42568 100644
--- a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.http.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index bbd1fe1..2be8efe 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 287353a..d71d636 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.test
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -29,26 +29,26 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.thread;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.http.server;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.http.server.glue;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.http.server.resolver;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.resolver;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.http.server;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.http.server.glue;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.http.server.resolver;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index afe30be..ca5c99c 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.junit.http/.settings/.api_filters b/org.eclipse.jgit.junit.http/.settings/.api_filters
index f7c1069..fc06291 100644
--- a/org.eclipse.jgit.junit.http/.settings/.api_filters
+++ b/org.eclipse.jgit.junit.http/.settings/.api_filters
@@ -41,6 +41,20 @@
                 <message_argument value="authBasic(ServletContextHandler, String[])"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="addContext(String)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="authBasic(ServletContextHandler, String[])"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/junit/http/HttpTestCase.java" type="org.eclipse.jgit.junit.http.HttpTestCase">
         <filter id="338792546">
@@ -63,6 +77,13 @@
                 <message_argument value="toURIish(ServletContextHandler, String)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="toURIish(ServletContextHandler, String)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/junit/http/MockServletConfig.java" type="org.eclipse.jgit.junit.http.MockServletConfig">
         <filter id="338792546">
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index 3ece734..fa7ef45 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.http
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -26,17 +26,17 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.ssl;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.http.server;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.resolver;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.http.server;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.6.0,7.7.0)",
  org.junit;version="[4.13,5.0.0)",
  org.slf4j.helpers;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="7.5.0";
+Export-Package: org.eclipse.jgit.junit.http;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    javax.servlet,
    javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
index c8c287c..64d2e4e 100644
--- a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.junit.http - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.http.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 10b30ff..e549e00 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
index ab02057..400a5dc 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.ssh
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -34,16 +34,16 @@
  org.apache.sshd.server.subsystem;version="[2.16.0,2.17.0)",
  org.apache.sshd.sftp;version="[2.16.0,2.17.0)",
  org.apache.sshd.sftp.server;version="[2.16.0,2.17.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="7.5.0"
+Export-Package: org.eclipse.jgit.junit.ssh;version="7.6.0"
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
index b87fcbd..9c1adcb 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.junit.ssh - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 952ff2c..8d6d068 100644
--- a/org.eclipse.jgit.junit.ssh/pom.xml
+++ b/org.eclipse.jgit.junit.ssh/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.ssh</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 11fe760..bf52865 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,38 +3,38 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Import-Package: org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.dircache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.merge;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="7.5.0",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.time;version="[7.5.0,7.6.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.dircache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.merge;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="7.6.0",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.time;version="[7.6.0,7.7.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
  org.junit.runners;version="[4.13,5.0.0)",
  org.junit.runners.model;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="7.5.0";
+Export-Package: org.eclipse.jgit.junit;version="7.6.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -47,4 +47,4 @@
    org.junit.runners.model,
    org.junit.runner,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.junit.time;version="7.5.0";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="7.6.0";uses:="org.eclipse.jgit.util.time"
diff --git a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
index 0fc04b8..cb07dc9 100644
--- a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.junit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index a6d3c43..fa798c8 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
index d1b9f06..e877dee 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -27,24 +27,24 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.thread;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.server;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.server.fs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.test;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.server;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.test;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index 3ce6cab..2527ab9 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/.settings/.api_filters b/org.eclipse.jgit.lfs.server/.settings/.api_filters
index 2a81240..5694eaa 100644
--- a/org.eclipse.jgit.lfs.server/.settings/.api_filters
+++ b/org.eclipse.jgit.lfs.server/.settings/.api_filters
@@ -83,6 +83,20 @@
                 <message_argument value="sendError(HttpServletResponse, int, String)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="getObjectToTransfer(HttpServletRequest, HttpServletResponse)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="sendError(HttpServletResponse, int, String)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/lfs/server/fs/ObjectDownloadListener.java" type="org.eclipse.jgit.lfs.server.fs.ObjectDownloadListener">
         <filter id="337682486">
@@ -111,6 +125,13 @@
                 <message_argument value="ObjectDownloadListener(FileLfsRepository, AsyncContext, HttpServletResponse, AnyLongObjectId)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="ObjectDownloadListener(FileLfsRepository, AsyncContext, HttpServletResponse, AnyLongObjectId)"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/lfs/server/fs/ObjectUploadListener.java" type="org.eclipse.jgit.lfs.server.fs.ObjectUploadListener">
         <filter id="337682486">
@@ -139,5 +160,12 @@
                 <message_argument value="ObjectUploadListener(FileLfsRepository, AsyncContext, HttpServletRequest, HttpServletResponse, AnyLongObjectId)"/>
             </message_arguments>
         </filter>
+        <filter id="1141899266">
+            <message_arguments>
+                <message_argument value="7.0"/>
+                <message_argument value="7.6"/>
+                <message_argument value="ObjectUploadListener(FileLfsRepository, AsyncContext, HttpServletRequest, HttpServletResponse, AnyLongObjectId)"/>
+            </message_arguments>
+        </filter>
     </resource>
 </component>
diff --git a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
index f75a14d..4d024da 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -3,21 +3,21 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.lfs.server;version="7.5.0";
+Export-Package: org.eclipse.jgit.lfs.server;version="7.6.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="7.5.0";
+ org.eclipse.jgit.lfs.server.fs;version="7.6.0";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="7.5.0";
+ org.eclipse.jgit.lfs.server.internal;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="7.6.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Import-Package: com.google.gson;version="[2.8.0,3.0.0)",
@@ -25,15 +25,15 @@
  javax.servlet.annotation;version="[4.0.0,5.0.0)",
  javax.servlet.http;version="[4.0.0,5.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
diff --git a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
index 9869530..c2a8147 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.lfs.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 1c2fc51..1b4a73b 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index cc1b4cc..d79ae9a 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,29 +3,29 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Import-Package: org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.attributes;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+Import-Package: org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.attributes;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
  org.junit.runners;version="[4.13,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="7.5.0";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="7.6.0";x-friends:="org.eclipse.jgit.lfs.server.test"
diff --git a/org.eclipse.jgit.lfs.test/pom.xml b/org.eclipse.jgit.lfs.test/pom.xml
index 9f50190..4f9de97 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.test</artifactId>
diff --git a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
index 1c311c4..44d8477 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,33 +3,33 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.lfs;version="7.5.0",
- org.eclipse.jgit.lfs.errors;version="7.5.0",
- org.eclipse.jgit.lfs.internal;version="7.5.0";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
- org.eclipse.jgit.lfs.lib;version="7.5.0"
+Export-Package: org.eclipse.jgit.lfs;version="7.6.0",
+ org.eclipse.jgit.lfs.errors;version="7.6.0",
+ org.eclipse.jgit.lfs.internal;version="7.6.0";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
+ org.eclipse.jgit.lfs.lib;version="7.6.0"
 Import-Package: com.google.gson;version="[2.8.2,3.0.0)",
  com.google.gson.stream;version="[2.8.2,3.0.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.attributes;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.diff;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.dircache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.hooks;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)"
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.attributes;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.diff;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.dircache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.hooks;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index 9e7ccc5..cdc7cf9 100644
--- a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.lfs - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index f08df55..803606a 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
index 70dba10..c5521ee 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
index 9ba72fe..95ec4e9 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
index 8c5702f..1518beb 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.gpg.bc"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
index a69fdad..f3f10fd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
index 0e2a1a0..b9815d6 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.http.apache"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
index e858ec1..1f0ad42 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index a13a299..efbf3c0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.junit"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -24,7 +24,7 @@
 
    <requires>
       <import plugin="com.jcraft.jsch"/>
-      <import plugin="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
index 0e695de..a0f6e92 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
index 7b8e62e..fef54ec 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.lfs"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
index 4679767..74daa11 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
index 83ae321..868aa02 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -35,9 +35,9 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="7.5.0" match="equivalent"/>
-      <import feature="org.eclipse.jgit.ssh.apache" version="7.5.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="7.6.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.ssh.apache" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
index f3a73b1..8812d72 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
index 848f46c..5c71af5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.repository</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
index 1221eb4..bfb5360 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.source"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
index ada5649..4eb2a6d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
@@ -30,7 +30,7 @@
     <dependency>
       <groupId>org.eclipse.jgit.feature</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>7.5.0-SNAPSHOT</version>
+      <version>7.6.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
index 096558c..cc7a9d6 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.apache"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
index 9b92cc8..bd38360 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
index 32a48f2..ab0775e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.jsch"
       label="%featureName"
-      version="7.5.0.qualifier"
+      version="7.6.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.5.0" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.6.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
index 57fc61a..7d881a5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
index 6cc6c98..f26a46d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.34" sequenceNumber="1762763960">
+<target name="jgit-4.34" sequenceNumber="1765188982">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -39,7 +39,7 @@
         <dependency>
           <groupId>org.tukaani</groupId>
           <artifactId>xz</artifactId>
-          <version>1.10</version>
+          <version>1.11</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -107,61 +107,61 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-servlet</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-nested</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -207,13 +207,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -223,25 +223,25 @@
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpg-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpkix-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcutil-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -271,7 +271,7 @@
         <dependency>
           <groupId>commons-codec</groupId>
           <artifactId>commons-codec</artifactId>
-          <version>1.19.0</version>
+          <version>1.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -283,13 +283,13 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
-          <version>3.19.0</version>
+          <version>3.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
-          <version>2.20.0</version>
+          <version>2.21.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
index b488b0d..86a8150 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.35" sequenceNumber="1762763960">
+<target name="jgit-4.35" sequenceNumber="1765188982">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -39,7 +39,7 @@
         <dependency>
           <groupId>org.tukaani</groupId>
           <artifactId>xz</artifactId>
-          <version>1.10</version>
+          <version>1.11</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -107,61 +107,61 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-servlet</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-nested</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -207,13 +207,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -223,25 +223,25 @@
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpg-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpkix-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcutil-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -271,7 +271,7 @@
         <dependency>
           <groupId>commons-codec</groupId>
           <artifactId>commons-codec</artifactId>
-          <version>1.19.0</version>
+          <version>1.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -283,13 +283,13 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
-          <version>3.19.0</version>
+          <version>3.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
-          <version>2.20.0</version>
+          <version>2.21.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
index 4886c15..aece501 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.36" sequenceNumber="1762763960">
+<target name="jgit-4.36" sequenceNumber="1765188982">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -39,7 +39,7 @@
         <dependency>
           <groupId>org.tukaani</groupId>
           <artifactId>xz</artifactId>
-          <version>1.10</version>
+          <version>1.11</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -107,61 +107,61 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-servlet</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-nested</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -207,13 +207,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -223,25 +223,25 @@
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpg-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpkix-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcutil-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -271,7 +271,7 @@
         <dependency>
           <groupId>commons-codec</groupId>
           <artifactId>commons-codec</artifactId>
-          <version>1.19.0</version>
+          <version>1.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -283,13 +283,13 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
-          <version>3.19.0</version>
+          <version>3.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
-          <version>2.20.0</version>
+          <version>2.21.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
index 826f343..ea754a6 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.37" sequenceNumber="1762763960">
+<target name="jgit-4.37" sequenceNumber="1765188982">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -39,7 +39,7 @@
         <dependency>
           <groupId>org.tukaani</groupId>
           <artifactId>xz</artifactId>
-          <version>1.10</version>
+          <version>1.11</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -107,61 +107,61 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-servlet</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-nested</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -207,13 +207,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -223,25 +223,25 @@
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpg-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpkix-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcutil-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -271,7 +271,7 @@
         <dependency>
           <groupId>commons-codec</groupId>
           <artifactId>commons-codec</artifactId>
-          <version>1.19.0</version>
+          <version>1.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -283,13 +283,13 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
-          <version>3.19.0</version>
+          <version>3.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
-          <version>2.20.0</version>
+          <version>2.21.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target
index 59bd128..3eefbe5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.38.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.38" sequenceNumber="1762763962">
+<target name="jgit-4.38" sequenceNumber="1765188983">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -39,7 +39,7 @@
         <dependency>
           <groupId>org.tukaani</groupId>
           <artifactId>xz</artifactId>
-          <version>1.10</version>
+          <version>1.11</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -107,61 +107,61 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-servlet</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-nested</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty.ee8</groupId>
           <artifactId>jetty-ee8-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.1.3</version>
+          <version>12.1.5</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -207,13 +207,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.8</version>
+          <version>1.18.2</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -223,25 +223,25 @@
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpg-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcpkix-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcutil-jdk18on</artifactId>
-          <version>1.82</version>
+          <version>1.83</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -271,7 +271,7 @@
         <dependency>
           <groupId>commons-codec</groupId>
           <artifactId>commons-codec</artifactId>
-          <version>1.19.0</version>
+          <version>1.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -283,13 +283,13 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
-          <version>3.19.0</version>
+          <version>3.20.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
-          <version>2.20.0</version>
+          <version>2.21.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
index a610a02..04bf070 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
@@ -10,7 +10,7 @@
 	dependency {
 		groupId = "commons-codec"
 		artifactId = "commons-codec"
-		version = "1.19.0"
+		version = "1.20.0"
 	}
 	dependency {
 		groupId = "org.apache.commons"
@@ -20,12 +20,12 @@
 	dependency {
 		groupId = "org.apache.commons"
 		artifactId = "commons-lang3"
-		version = "3.19.0"
+		version = "3.20.0"
 	}
 	dependency {
 		groupId = "commons-io"
 		artifactId = "commons-io"
-		version = "2.20.0"
+		version = "2.21.0"
 	}
 	dependency {
 		groupId = "commons-logging"
@@ -69,22 +69,22 @@
 	dependency {
 		groupId = "org.bouncycastle"
 		artifactId = "bcpg-jdk18on"
-		version = "1.82"
+		version = "1.83"
 	}
 	dependency {
 		groupId = "org.bouncycastle"
 		artifactId = "bcprov-jdk18on"
-		version = "1.82"
+		version = "1.83"
 	}
 	dependency {
 		groupId = "org.bouncycastle"
 		artifactId = "bcpkix-jdk18on"
-		version = "1.82"
+		version = "1.83"
 	}
 	dependency {
 		groupId = "org.bouncycastle"
 		artifactId = "bcutil-jdk18on"
-		version = "1.82"
+		version = "1.83"
 	}
 }
 
@@ -97,12 +97,12 @@
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy"
-		version = "1.17.8"
+		version = "1.18.2"
 	}
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy-agent"
-		version = "1.17.8"
+		version = "1.18.2"
 	}
 }
 
@@ -154,52 +154,52 @@
 	dependency {
 		groupId = "org.eclipse.jetty.ee8"
 		artifactId = "jetty-ee8-servlet"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty.ee8"
 		artifactId = "jetty-ee8-nested"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty.ee8"
 		artifactId = "jetty-ee8-security"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-http"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-io"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-security"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-server"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-session"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util-ajax"
-		version = "12.1.3"
+		version = "12.1.5"
 	}
 	dependency {
 		groupId = "jakarta.servlet"
@@ -284,6 +284,6 @@
 	dependency {
 		groupId = "org.tukaani"
 		artifactId = "xz"
-		version = "1.10"
+		version = "1.11"
 	}
 }
\ No newline at end of file
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 301ed91..07f6f21 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -16,7 +16,7 @@
 
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>jgit.tycho.parent</artifactId>
-  <version>7.5.0-SNAPSHOT</version>
+  <version>7.6.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 6b4b3cd..5f81b7d 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -3,31 +3,31 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm.test
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Import-Package: org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.diff;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.dircache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.merge;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.pgm;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.pgm.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.pgm.opt;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)",
+Import-Package: org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.diff;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.dircache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.merge;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.pgm;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.pgm.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.pgm.opt;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)",
  org.hamcrest.core;bundle-version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index b8aa902..de0a37a 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index 98a722f..95eff34 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -16,50 +16,50 @@
  org.eclipse.jetty.server.handler;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.archive;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.awtui;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.blame;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.diff;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.dircache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.gitrepo;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.io;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.midx;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.server;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.server.fs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs.server.s3;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.merge;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.notes;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revplot;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.resolver;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.sshd;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.archive;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.awtui;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.blame;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.diff;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.dircache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.gitrepo;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.io;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.midx;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.server;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.merge;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.notes;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revplot;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.sshd;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)",
  org.kohsuke.args4j;version="[2.33.0,3.0.0)",
  org.kohsuke.args4j.spi;version="[2.33.0,3.0.0)"
-Export-Package: org.eclipse.jgit.console;version="7.5.0";
+Export-Package: org.eclipse.jgit.console;version="7.6.0";
  uses:="org.eclipse.jgit.transport,
   org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="7.5.0";
+ org.eclipse.jgit.pgm;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.awtui,
@@ -71,14 +71,14 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.api,
    javax.swing",
- org.eclipse.jgit.pgm.debug;version="7.5.0";
+ org.eclipse.jgit.pgm.debug;version="7.6.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm,
    org.eclipse.jetty.servlet",
- org.eclipse.jgit.pgm.internal;version="7.5.0";
+ org.eclipse.jgit.pgm.internal;version="7.6.0";
   x-friends:="org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="7.5.0";
+ org.eclipse.jgit.pgm.opt;version="7.6.0";
   uses:="org.kohsuke.args4j,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 36b0d49..dcb5519 100644
--- a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.pgm - Sources
 Bundle-SymbolicName: org.eclipse.jgit.pgm.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 88777e9..f1ead81 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
index 9841deb..2ef7256 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
@@ -2,17 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent;singleton:=true
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/agent
 Bundle-Vendor: %Bundle-Vendor
-Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[7.5.0,7.6.0)"
+Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[7.6.0,7.7.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.agent
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Import-Package: org.eclipse.jgit.transport.sshd;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)"
+Import-Package: org.eclipse.jgit.transport.sshd;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)"
 Require-Bundle: com.sun.jna;bundle-version="[5.8.0,6.0.0)",
  com.sun.jna.platform;bundle-version="[5.8.0,6.0.0)"
-Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="7.5.0";x-internal:=true
+Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="7.6.0";x-internal:=true
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
index 5a0c41a..56d463f 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.ssh.apache.agent - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache.agent/pom.xml b/org.eclipse.jgit.ssh.apache.agent/pom.xml
index 5c9863f..9c2bf03 100644
--- a/org.eclipse.jgit.ssh.apache.agent/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.agent/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.agent</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
index c10f613..21aa80f 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -26,22 +26,22 @@
  org.apache.sshd.core;version="[2.16.0,2.17.0)",
  org.apache.sshd.server;version="[2.16.0,2.17.0)",
  org.apache.sshd.server.forward;version="[2.16.0,2.17.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.signing.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.sshd;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.sshd;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.sshd.agent;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.signing.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.sshd;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.sshd;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.ssh.apache.test/pom.xml b/org.eclipse.jgit.ssh.apache.test/pom.xml
index ee33400..5a9057f 100644
--- a/org.eclipse.jgit.ssh.apache.test/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index 8879e4c..97d5656 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,11 +6,11 @@
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.internal.signing.ssh;version="7.5.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.internal.transport.sshd;version="7.5.0";x-friends:="org.eclipse.jgit.ssh.apache.test";
+Export-Package: org.eclipse.jgit.internal.signing.ssh;version="7.6.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.internal.transport.sshd;version="7.6.0";x-friends:="org.eclipse.jgit.ssh.apache.test";
   uses:="org.apache.sshd.client,
    org.apache.sshd.client.auth,
    org.apache.sshd.client.auth.keyboard,
@@ -25,19 +25,19 @@
    org.apache.sshd.common.signature,
    org.apache.sshd.common.util.buffer,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.agent;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.auth;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.pkcs11;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="7.5.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.signing.ssh;version="7.5.0";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.transport.sshd;version="7.5.0";
+ org.eclipse.jgit.internal.transport.sshd.agent;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.auth;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.pkcs11;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="7.6.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.signing.ssh;version="7.6.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.transport.sshd;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.apache.sshd.client.config.hosts,
    org.apache.sshd.common.keyprovider,
    org.eclipse.jgit.util,
    org.apache.sshd.client.session,
    org.apache.sshd.client.keyverifier",
- org.eclipse.jgit.transport.sshd.agent;version="7.5.0"
+ org.eclipse.jgit.transport.sshd.agent;version="7.6.0"
 Import-Package: org.bouncycastle.jce.provider;version="[1.80.0,2.0.0)",
  org.apache.sshd.agent;version="[2.16.0,2.17.0)",
  org.apache.sshd.client;version="[2.16.0,2.17.0)",
@@ -91,14 +91,14 @@
  org.apache.sshd.sftp;version="[2.16.0,2.17.0)",
  org.apache.sshd.sftp.client;version="[2.16.0,2.17.0)",
  org.apache.sshd.sftp.common;version="[2.16.0,2.17.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.fnmatch;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.fnmatch;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
index bd2faa5..5ef864b 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.ssh.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index 77e4756..3edf6e6 100644
--- a/org.eclipse.jgit.ssh.apache/pom.xml
+++ b/org.eclipse.jgit.ssh.apache/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
index 5823845..4632a36 100644
--- a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
@@ -3,20 +3,20 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Import-Package: com.jcraft.jsch;version="[0.1.54,0.2.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.ssh.jsch.test/pom.xml b/org.eclipse.jgit.ssh.jsch.test/pom.xml
index 467154f..70b0af0 100644
--- a/org.eclipse.jgit.ssh.jsch.test/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
index 0e09896..436d251 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
@@ -3,20 +3,20 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[7.5.0,7.6.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[7.6.0,7.7.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/jsch
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="7.5.0"
+Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="7.6.0"
 Import-Package: com.jcraft.jsch;version="[0.1.37,0.2.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
index ba5619c..7cba329 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.ssh.jsch - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.jsch/pom.xml b/org.eclipse.jgit.ssh.jsch/pom.xml
index 59d8b0b..91caa5e 100644
--- a/org.eclipse.jgit.ssh.jsch/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index c724d35..bee0f49 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.test
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -21,66 +21,66 @@
  org.apache.commons.io.output;version="[2.15.0,3.0.0)",
  org.apache.commons.lang3;version="[3.17.0,4.0.0)",
  org.assertj.core.api;version="[3.14.0,4.0.0)",
- org.eclipse.jgit.annotations;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.api.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.archive;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.attributes;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.awtui;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.blame;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.blame.cache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.diff;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.dircache;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.events;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.fnmatch;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.gitrepo;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.hooks;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.ignore;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.ignore.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.diff;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.fsck;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.commitgraph;version="7.5.0",
- org.eclipse.jgit.internal.storage.dfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.io;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.memory;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.midx;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.connectivity;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.parser;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.junit.time;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lfs;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.logging;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.merge;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.notes;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.patch;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.pgm;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.pgm.internal;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revplot;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.file;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.storage.pack;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.submodule;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.http;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport.resolver;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.io;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util.sha1;version="[7.5.0,7.6.0)",
+ org.eclipse.jgit.annotations;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.api.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.archive;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.attributes;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.awtui;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.blame;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.blame.cache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.diff;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.dircache;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.events;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.fnmatch;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.gitrepo;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.hooks;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.ignore;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.ignore.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.diff;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.fsck;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.commitgraph;version="7.6.0",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.io;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.memory;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.midx;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.connectivity;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.junit.time;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lfs;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.logging;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.merge;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.notes;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.patch;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.pgm;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.pgm.internal;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revplot;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.file;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.storage.pack;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.submodule;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.http;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.io;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util.sha1;version="[7.6.0,7.7.0)",
  org.hamcrest;version="[3.0.0,4.0.0)",
  org.hamcrest.collection;version="[3.0.0,4.0.0)",
  org.junit;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 1483319..387f168 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/BasicRuleTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/BasicRuleTest.java
index 6983eaa..f5f6bd3 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/BasicRuleTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/BasicRuleTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, Andrey Loskutov <loskutov@gmx.de> and others
+ * Copyright (C) 2014, 2025 Andrey Loskutov <loskutov@gmx.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -58,14 +58,4 @@ public void testStripTrailingChar() {
 		assertEquals("a", Strings.stripTrailing("a///", '/'));
 		assertEquals("a/ ", Strings.stripTrailing("a/ ", '/'));
 	}
-
-	@Test
-	public void testStripTrailingWhitespace() {
-		assertEquals("", Strings.stripTrailingWhitespace(""));
-		assertEquals("", Strings.stripTrailingWhitespace("   "));
-		assertEquals("a", Strings.stripTrailingWhitespace("a"));
-		assertEquals("a", Strings.stripTrailingWhitespace("a "));
-		assertEquals("a", Strings.stripTrailingWhitespace("a  "));
-		assertEquals("a", Strings.stripTrailingWhitespace("a \t"));
-	}
 }
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/CGitIgnoreTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/CGitIgnoreTest.java
index 083e6cd..14e4150 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/CGitIgnoreTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/CGitIgnoreTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Thomas Wolf <thomas.wolf@paranor.ch> and others
+ * Copyright (C) 2017, 2025 Thomas Wolf <twolf@apache.org> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -15,14 +15,14 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.InputStream;
 import java.nio.file.Files;
+import java.util.ArrayList;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.eclipse.jgit.junit.RepositoryTestCase;
@@ -72,7 +72,7 @@ private String toString(TemporaryBuffer b) throws IOException {
 	private String[] cgitIgnored() throws Exception {
 		FS fs = db.getFS();
 		ProcessBuilder builder = fs.runInShell("git", new String[] { "ls-files",
-				"--ignored", "--exclude-standard", "-o" });
+				"--ignored", "--exclude-standard", "-o", "-z" });
 		builder.directory(db.getWorkTree());
 		builder.environment().put("HOME", fs.userHome().getAbsolutePath());
 		ExecutionResult result = fs.execute(builder,
@@ -80,17 +80,13 @@ private String toString(TemporaryBuffer b) throws IOException {
 		String errorOut = toString(result.getStderr());
 		assertEquals("External git failed", "exit 0\n",
 				"exit " + result.getRc() + '\n' + errorOut);
-		try (BufferedReader r = new BufferedReader(new InputStreamReader(
-				new BufferedInputStream(result.getStdout().openInputStream()),
-				UTF_8))) {
-			return r.lines().toArray(String[]::new);
-		}
+		return readLines(result.getStdout());
 	}
 
 	private String[] cgitUntracked() throws Exception {
 		FS fs = db.getFS();
 		ProcessBuilder builder = fs.runInShell("git",
-				new String[] { "ls-files", "--exclude-standard", "-o" });
+				new String[] { "ls-files", "--exclude-standard", "-o", "-z" });
 		builder.directory(db.getWorkTree());
 		builder.environment().put("HOME", fs.userHome().getAbsolutePath());
 		ExecutionResult result = fs.execute(builder,
@@ -98,10 +94,26 @@ private String toString(TemporaryBuffer b) throws IOException {
 		String errorOut = toString(result.getStderr());
 		assertEquals("External git failed", "exit 0\n",
 				"exit " + result.getRc() + '\n' + errorOut);
-		try (BufferedReader r = new BufferedReader(new InputStreamReader(
-				new BufferedInputStream(result.getStdout().openInputStream()),
-				UTF_8))) {
-			return r.lines().toArray(String[]::new);
+		return readLines(result.getStdout());
+	}
+
+	private String[] readLines(TemporaryBuffer buf) throws IOException {
+		try (InputStream in = buf.openInputStreamWithAutoDestroy()) {
+			byte[] data = in.readAllBytes();
+			int from = 0;
+			int to = 0;
+			List<String> items = new ArrayList<>();
+			while (to < data.length) {
+				if (data[to++] == 0) {
+					items.add(new String(data, from, to - from - 1, UTF_8));
+					from = to;
+				}
+			}
+			if (from < data.length) {
+				// Last item not terminated by NUL
+				items.add(new String(data, from, to - from, UTF_8));
+			}
+			return items.toArray(new String[0]);
 		}
 	}
 
@@ -119,7 +131,7 @@ private void jgitIgnoredAndUntracked(LinkedHashSet<String> ignored,
 					ignored.add(walk.getPathString());
 				} else {
 					// tests of this class won't add any files to the index,
-					// hence everything what is not ignored is untracked
+					// hence everything not ignored is untracked
 					untracked.add(walk.getPathString());
 				}
 			}
@@ -302,6 +314,48 @@ public void testSimpleRootGitIgnoreGlobalNegation1() throws Exception {
 	}
 
 	@Test
+	public void testSingleBackslash() throws Exception {
+		createFiles("foo\\", "foo/foo\\", "bar");
+		writeTrashFile(".gitignore", "foo\\");
+		assertSameAsCGit("foo\\", "foo/foo\\", "bar");
+	}
+
+	@Test
+	public void testDoubleBackslash() throws Exception {
+		createFiles("foo\\", "foo/foo\\", "bar");
+		writeTrashFile(".gitignore", "foo\\\\");
+		assertSameAsCGit("bar");
+	}
+
+	@Test
+	public void testSingleBackslashRegexp() throws Exception {
+		createFiles("foobar\\", "foo/foobar\\", "bar");
+		writeTrashFile(".gitignore", "fo*r\\");
+		assertSameAsCGit("foobar\\", "foo/foobar\\", "bar");
+	}
+
+	@Test
+	public void testDoubleBackslashRegexp() throws Exception {
+		createFiles("foobar\\", "foo/foobar\\", "bar");
+		writeTrashFile(".gitignore", "fo*r\\\\");
+		assertSameAsCGit("bar");
+	}
+
+	@Test
+	public void testSingleBackslashRegexpInside() throws Exception {
+		createFiles("fo\\obar", "foo/fo\\obar", "bar", "foobar");
+		writeTrashFile(".gitignore", "fo\\o*r");
+		assertSameAsCGit("fo\\obar", "foo/fo\\obar", "bar");
+	}
+
+	@Test
+	public void testDoubleBackslashRegexpInside() throws Exception {
+		createFiles("fo\\obar", "foo/fo\\obar", "bar", "foobar");
+		writeTrashFile(".gitignore", "fo\\\\o*r");
+		assertSameAsCGit("bar", "foobar");
+	}
+
+	@Test
 	public void testRepeatedNegationInDifferentFiles5() throws Exception {
 		// see IgnoreNodeTest.testRepeatedNegationInDifferentFiles5
 		createFiles("a/b/e/nothere.o");
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreRuleSpecialCasesTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreRuleSpecialCasesTest.java
index 28e6858..103059a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreRuleSpecialCasesTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/IgnoreRuleSpecialCasesTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, Florian Köberle <florianskarten@web.de> and others
+ * Copyright (C) 2008, 2025 Florian Köberle <florianskarten@web.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -10,7 +10,6 @@
 package org.eclipse.jgit.ignore;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assume.assumeTrue;
 
 import org.junit.Test;
 
@@ -18,17 +17,6 @@
 public class IgnoreRuleSpecialCasesTest {
 
 	private void assertMatch(final String pattern, final String input,
-			final boolean matchExpected, Boolean... assume) {
-		boolean assumeDir = input.endsWith("/");
-		FastIgnoreRule matcher = new FastIgnoreRule(pattern);
-		if (assume.length == 0 || !assume[0].booleanValue()) {
-			assertEquals(matchExpected, matcher.isMatch(input, assumeDir));
-		} else {
-			assumeTrue(matchExpected == matcher.isMatch(input, assumeDir));
-		}
-	}
-
-	private void assertFileNameMatch(final String pattern, final String input,
 			final boolean matchExpected) {
 		boolean assumeDir = input.endsWith("/");
 		FastIgnoreRule matcher = new FastIgnoreRule(pattern);
@@ -739,7 +727,7 @@ public void testSpecialGroupCase9() throws Exception {
 
 	@Test
 	public void testSpecialGroupCase10() throws Exception {
-		// Second bracket is threated literally, so both [ and : should match
+		// Second bracket is treated literally, so both [ and : should match
 		assertMatch("[[:]", ":", true);
 		assertMatch("[[:]", "[", true);
 	}
@@ -835,6 +823,8 @@ public void testNotEscapingBackslash() throws Exception {
 		assertMatch("c:\\/", "a/c:/", true);
 		assertMatch("c:\\tmp", "c:tmp", true);
 		assertMatch("c:\\tmp", "a/c:tmp", true);
+		assertMatch("foo\\/bar", "foo/bar", true);
+		assertMatch("foo\\/bar\\/", "foo/bar/", true);
 	}
 
 	@Test
@@ -844,14 +834,21 @@ public void testMultipleEscapedCharacters1() throws Exception {
 
 	@Test
 	public void testBackslash() throws Exception {
-		assertMatch("a\\", "a", true);
+		assertMatch("a\\", "a", false);
 		assertMatch("\\a", "a", true);
-		assertMatch("a/\\", "a/", true);
-		assertMatch("a/b\\", "a/b", true);
+		assertMatch("a/\\", "a/", false);
+		assertMatch("a/b\\", "a/b", false);
 		assertMatch("\\a/b", "a/b", true);
 		assertMatch("/\\a", "/a", true);
-		assertMatch("\\a\\b\\c\\", "abc", true);
-		assertMatch("/\\a/\\b/\\c\\", "a/b/c", true);
+		assertMatch("\\a\\b\\c\\", "abc", false);
+		assertMatch("\\a\\b\\c", "abc", true);
+		assertMatch("/\\a/\\b/\\c\\", "a/b/c", false);
+		assertMatch("/\\a/\\b/\\c", "a/b/c", true);
+		assertMatch("/\\a\\/\\b\\/\\c", "a/b/c", true);
+
+		assertMatch("foo\\", "foo", false);
+		assertMatch("foo\\", "foo\\", false);
+		assertMatch("foo\\\\", "foo\\", true);
 
 		// empty path segment doesn't match
 		assertMatch("\\/a", "/a", false);
@@ -859,6 +856,27 @@ public void testBackslash() throws Exception {
 	}
 
 	@Test
+	public void testBackslashInRegexp() throws Exception {
+		assertMatch("f*[\\x]y", "f\\y", false);
+		assertMatch("f*[\\x]y", "fxy", true);
+		assertMatch("f*[\\\\x]y", "f\\y", true);
+		assertMatch("f*[\\\\x]y", "fxy", true);
+		assertMatch("f*[\\x]y", "foo\\y", false);
+		assertMatch("f*[\\x]y", "fooxy", true);
+		assertMatch("f*[\\\\x]y", "foo\\y", true);
+		assertMatch("f*[\\\\x]y", "fooxy", true);
+		assertMatch("f*a\\y", "fa\\y", false);
+		assertMatch("f*a\\y", "fay", true);
+		assertMatch("f*a\\y", "fooa\\y", false);
+		assertMatch("f*a\\y", "fooay", true);
+		assertMatch("f*a\\\\y", "fa\\y", true);
+		assertMatch("f*a\\\\y", "fooa\\y", true);
+		assertMatch("f\\*y", "fooy", false);
+		assertMatch("f\\*y", "f*y", true);
+		assertMatch("/\\a*A\\/\\b*B\\/\\c*C", "afooA/bfooB/cC", true);
+	}
+
+	@Test
 	public void testDollar() throws Exception {
 		assertMatch("$", "$", true);
 		assertMatch("$x", "$x", true);
@@ -991,27 +1009,27 @@ public void testBracketsRandom() throws Exception {
 
 	@Test
 	public void testFilePathSimpleCase() throws Exception {
-		assertFileNameMatch("a/b", "a/b", true);
+		assertMatch("a/b", "a/b", true);
 	}
 
 	@Test
 	public void testFilePathCase0() throws Exception {
-		assertFileNameMatch("a*b", "a/b", false);
+		assertMatch("a*b", "a/b", false);
 	}
 
 	@Test
 	public void testFilePathCase1() throws Exception {
-		assertFileNameMatch("a?b", "a/b", false);
+		assertMatch("a?b", "a/b", false);
 	}
 
 	@Test
 	public void testFilePathCase2() throws Exception {
-		assertFileNameMatch("a*b", "a\\b", true);
+		assertMatch("a*b", "a\\b", true);
 	}
 
 	@Test
 	public void testFilePathCase3() throws Exception {
-		assertFileNameMatch("a?b", "a\\b", true);
+		assertMatch("a?b", "a\\b", true);
 	}
 
 }
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsBlockMidxTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsBlockMidxTest.java
index 0e12707..8ac77c6 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsBlockMidxTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsBlockMidxTest.java
@@ -25,7 +25,7 @@
 public class DfsBlockMidxTest {
 
 	private static final DfsStreamKey key = DfsStreamKey
-			.of(new DfsRepositoryDescription("repo"), "pack-1", PackExt.PACK);;
+			.of(new DfsRepositoryDescription("repo"), "pack-1", PackExt.PACK);
 
 	@Test
 	public void block_boundaries() {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacksTest.java
similarity index 97%
rename from org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxTest.java
rename to org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacksTest.java
index 3fd4e2c..758ac1f 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacksTest.java
@@ -36,7 +36,9 @@
 import java.util.zip.Deflater;
 
 import org.eclipse.jgit.annotations.Nullable;
+import org.eclipse.jgit.internal.storage.dfs.DfsPackFileMidx.DfsPackOffset;
 import org.eclipse.jgit.internal.storage.dfs.DfsPackFileMidx.VOffsetCalculator;
+import org.eclipse.jgit.internal.storage.dfs.DfsPackFileMidxNPacks.VOffsetCalculatorNPacks;
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 import org.eclipse.jgit.internal.storage.file.PackIndex;
 import org.eclipse.jgit.internal.storage.midx.MultiPackIndex.PackOffset;
@@ -61,7 +63,7 @@
 import org.junit.Before;
 import org.junit.Test;
 
-public class DfsPackFileMidxTest {
+public class DfsPackFileMidxNPacksTest {
 
 	private static final ObjectId NOT_IN_PACK = ObjectId
 			.fromString("3f306cb3fcd5116919fecad615524bd6e6ea4ba7");
@@ -315,7 +317,7 @@ public void midx_findOffset() throws IOException {
 
 		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
 			long posOne = midx.findOffset(ctx, o1);
-			DfsPackFileMidx.DfsPackOffset po = midx.getOffsetCalculator()
+			DfsPackOffset po = midx.getOffsetCalculator()
 					.decode(posOne);
 			assertEquals(12, po.getPackOffset());
 			assertEquals(packThreeSize + packTwoSize, po.getPackStart());
@@ -980,7 +982,7 @@ public void voffsetcalculator_encode() {
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculatorNPacks calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		PackOffset po = PackOffset.create(0, 12);
@@ -997,11 +999,11 @@ public void voffsetcalculator_decode() {
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculator calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		// In first pack
-		DfsPackFileMidx.DfsPackOffset decoded = calc.decode(130);
+		DfsPackOffset decoded = calc.decode(130);
 		assertEquals(one.getPackDescription(),
 				decoded.getPack().getPackDescription());
 		assertEquals(130, decoded.getPackOffset());
@@ -1028,7 +1030,7 @@ public void voffsetcalculator_notFound() {
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculatorNPacks calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		assertEquals(-1, calc.encode(null));
@@ -1045,7 +1047,7 @@ public void voffsetcalculator_maxOffset() {
 				+ two.getPackDescription().getFileSize(PACK)
 				+ three.getPackDescription().getFileSize(PACK);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculator calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		assertEquals(totalSize, calc.getMaxOffset());
@@ -1057,14 +1059,14 @@ public void voffsetcalculator_withBase_encode() {
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
 
-		VOffsetCalculator baseCalc = VOffsetCalculator
+		VOffsetCalculator baseCalc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		DfsPackFile four = createDfsPackFile(900);
 		DfsPackFile five = createDfsPackFile(1300);
 		DfsPackFile six = createDfsPackFile(1000);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculatorNPacks calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { four, five, six }, baseCalc);
 
 		// These packIds are now from the second top midx
@@ -1082,18 +1084,18 @@ public void voffsetcalculator_withBase_decode() {
 		DfsPackFile one = createDfsPackFile(800);
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
-		VOffsetCalculator baseCalc = VOffsetCalculator
+		VOffsetCalculator baseCalc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		DfsPackFile four = createDfsPackFile(900);
 		DfsPackFile five = createDfsPackFile(1300);
 		DfsPackFile six = createDfsPackFile(1000);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculator calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { four, five, six }, baseCalc);
 
 		// In pack 1
-		DfsPackFileMidx.DfsPackOffset decoded = calc.decode(130);
+		DfsPackOffset decoded = calc.decode(130);
 		assertEquals(one.getPackDescription(),
 				decoded.getPack().getPackDescription());
 		assertEquals(130, decoded.getPackOffset());
@@ -1128,14 +1130,14 @@ public void voffsetcalculator_withBase_maxOffset() {
 		DfsPackFile two = createDfsPackFile(1200);
 		DfsPackFile three = createDfsPackFile(900);
 
-		VOffsetCalculator baseCalc = VOffsetCalculator
+		VOffsetCalculator baseCalc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { one, two, three }, null);
 
 		DfsPackFile four = createDfsPackFile(900);
 		DfsPackFile five = createDfsPackFile(1300);
 		DfsPackFile six = createDfsPackFile(1000);
 
-		VOffsetCalculator calc = VOffsetCalculator
+		VOffsetCalculator calc = VOffsetCalculatorNPacks
 				.fromPacks(new DfsPackFile[] { four, five, six }, baseCalc);
 
 		int expectedMaxOffset = 800 + 1200 + 900 + 900 + 1300 + 1000;
@@ -1229,7 +1231,7 @@ private static final class CounterProgressMonitor
 
 		@Override
 		public void start(int totalTasks) {
-
+			// empty
 		}
 
 		@Override
@@ -1244,7 +1246,7 @@ public void update(int completed) {
 
 		@Override
 		public void endTask() {
-
+			// empty
 		}
 
 		@Override
@@ -1254,7 +1256,7 @@ public boolean isCancelled() {
 
 		@Override
 		public void showDuration(boolean enabled) {
-
+			// empty
 		}
 	}
 
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
index 6ab1156..f20ca38 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
@@ -12,8 +12,10 @@
 import static java.util.Arrays.asList;
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
 import java.util.zip.Deflater;
@@ -188,7 +190,102 @@ public void findAllImpactedMidxs_nestedMidx() throws IOException {
 						.size());
 	}
 
+	@Test
+	public void getTopMidxPack_noMidx_null() throws IOException {
+		setupThreePacks();
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertNull(packList.getTopMidxPack());
+	}
 
+	@Test
+	public void getTopMidxPack_oneMidx_returned() throws IOException {
+		DfsPackFileMidx midx = setupThreePacksAndMidx();
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(midx.getPackDescription(),
+				packList.getTopMidxPack().getPackDescription());
+	}
+
+	@Test
+	public void getTopMidxPack_multipleMidx_mostRecent() throws IOException {
+		writePackWithRandomBlob(100);
+		writePackWithRandomBlob(300);
+		writePackWithRandomBlob(50);
+		writePackWithRandomBlob(400);
+		writePackWithRandomBlob(130);
+		writePackWithRandomBlob(500);
+		DfsPackFile[] packs = db.getObjectDatabase().getPacks();
+		assertEquals(6, packs.length);
+
+		// midx covers first two packs
+		writeMultipackIndex(Arrays.copyOfRange(packs, 4, 6), null);
+
+		// chain of midxs covering all
+		DfsPackFileMidx midxBase = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 4, 6), null);
+		DfsPackFileMidx midxMid = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 2, 4), midxBase);
+		DfsPackFileMidx chainTwo = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 0, 2), midxMid);
+
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(chainTwo.getPackDescription(),
+				packList.getTopMidxPack().getPackDescription());
+	}
+
+	@Test
+	public void getPlainPacksNotCoveredBy_null_all() throws IOException {
+		setupThreePacks();
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(3, packList.getPlainPacksNotCoveredBy(null).size());
+	}
+
+	@Test
+	public void getPlainPacksNotCoveredBy_midxCoversAll_nothing()
+			throws IOException {
+		DfsPackFileMidx midx = setupThreePacksAndMidx();
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(0, packList.getPlainPacksNotCoveredBy(midx).size());
+	}
+
+	@Test
+	public void getPlainPacksNotCoveredBy_midxMissesOne_one()
+			throws IOException {
+		DfsPackFileMidx midx = setupThreePacksAndMidx();
+		writePackWithBlob("getPlainPacksNotCovered_missingone"
+				.getBytes(StandardCharsets.UTF_8));
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(1, packList.getPlainPacksNotCoveredBy(midx).size());
+	}
+
+	@Test
+	public void getPlainPacksNotCoveredBy_midxChain() throws IOException {
+		writePackWithRandomBlob(100);
+		writePackWithRandomBlob(300);
+		writePackWithRandomBlob(50);
+		writePackWithRandomBlob(400);
+		writePackWithRandomBlob(130);
+		writePackWithRandomBlob(500);
+		DfsPackFile[] packs = db.getObjectDatabase().getPacks();
+		assertEquals(6, packs.length);
+		DfsPackFileMidx midxBase = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 4, 6), null);
+		DfsPackFileMidx midxMid = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 2, 4), midxBase);
+		DfsPackFileMidx midxTip = writeMultipackIndex(
+				Arrays.copyOfRange(packs, 0, 2), midxMid);
+
+		MidxPackList packList = MidxPackList
+				.create(db.getObjectDatabase().getPacks());
+		assertEquals(4, packList.getPlainPacksNotCoveredBy(midxBase).size());
+		assertEquals(2, packList.getPlainPacksNotCoveredBy(midxMid).size());
+		assertEquals(0, packList.getPlainPacksNotCoveredBy(midxTip).size());
+	}
 
 	private void setupThreePacks() throws IOException {
 		writePackWithRandomBlob(100);
@@ -196,11 +293,11 @@ private void setupThreePacks() throws IOException {
 		writePackWithRandomBlob(50);
 	}
 
-	private void setupThreePacksAndMidx() throws IOException {
+	private DfsPackFileMidx setupThreePacksAndMidx() throws IOException {
 		writePackWithRandomBlob(100);
 		writePackWithRandomBlob(300);
 		writePackWithRandomBlob(50);
-		writeMultipackIndex();
+		return writeMultipackIndex();
 	}
 
 	private void setupSixPacksThreeMidx() throws IOException {
@@ -221,8 +318,8 @@ private void setupSixPacksThreeMidx() throws IOException {
 				db.getObjectDatabase().getPacks().length);
 	}
 
-	private void writeMultipackIndex() throws IOException {
-		writeMultipackIndex(db.getObjectDatabase().getPacks(), null);
+	private DfsPackFileMidx writeMultipackIndex() throws IOException {
+		return writeMultipackIndex(db.getObjectDatabase().getPacks(), null);
 	}
 
 	private DfsPackFileMidx writeMultipackIndex(DfsPackFile[] packs,
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index 72dea20..b3ecf33 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -4,15 +4,15 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ui
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Export-Package: org.eclipse.jgit.awtui;version="7.5.0"
-Import-Package: org.eclipse.jgit.errors;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.lib;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.nls;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revplot;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.revwalk;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.transport;version="[7.5.0,7.6.0)",
- org.eclipse.jgit.util;version="[7.5.0,7.6.0)"
+Export-Package: org.eclipse.jgit.awtui;version="7.6.0"
+Import-Package: org.eclipse.jgit.errors;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.lib;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.nls;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revplot;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.revwalk;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.transport;version="[7.6.0,7.7.0)",
+ org.eclipse.jgit.util;version="[7.6.0,7.7.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index dda039e..e20c4f2 100644
--- a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit.ui - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ui.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index 6b32bf4..2acf0e0 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index d760003..15ae6ef 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -11,8 +11,8 @@
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
 Service-Component: OSGI-INF/org.eclipse.jgit.internal.util.CleanupService.xml
 Eclipse-ExtensibleAPI: true
-Export-Package: org.eclipse.jgit.annotations;version="7.5.0",
- org.eclipse.jgit.api;version="7.5.0";
+Export-Package: org.eclipse.jgit.annotations;version="7.6.0",
+ org.eclipse.jgit.api;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.notes,
    org.eclipse.jgit.dircache,
@@ -27,21 +27,21 @@
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.blame,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="7.5.0";
+ org.eclipse.jgit.api.errors;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="7.5.0";
+ org.eclipse.jgit.attributes;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.blame;version="7.5.0";
+ org.eclipse.jgit.blame;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.blame.cache,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter",
- org.eclipse.jgit.blame.cache;version="7.5.0";
+ org.eclipse.jgit.blame.cache;version="7.6.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.diff;version="7.5.0";
+ org.eclipse.jgit.diff;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.patch,
@@ -49,55 +49,55 @@
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="7.5.0";
+ org.eclipse.jgit.dircache;version="7.6.0";
   uses:="org.eclipse.jgit.events,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.errors;version="7.5.0";
+ org.eclipse.jgit.errors;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.events;version="7.5.0";
+ org.eclipse.jgit.events;version="7.6.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="7.5.0",
- org.eclipse.jgit.gitrepo;version="7.5.0";
+ org.eclipse.jgit.fnmatch;version="7.6.0",
+ org.eclipse.jgit.gitrepo;version="7.6.0";
   uses:="org.xml.sax.helpers,
    org.eclipse.jgit.api,
    org.eclipse.jgit.api.errors,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.hooks;version="7.5.0";
+ org.eclipse.jgit.gitrepo.internal;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.ignore;version="7.5.0",
- org.eclipse.jgit.ignore.internal;version="7.5.0";
+ org.eclipse.jgit.ignore;version="7.6.0",
+ org.eclipse.jgit.ignore.internal;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="7.5.0";
+ org.eclipse.jgit.internal;version="7.6.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.diff;version="7.5.0";
+ org.eclipse.jgit.internal.diff;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.diffmergetool;version="7.5.0";
+ org.eclipse.jgit.internal.diffmergetool;version="7.6.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.pgm,
    org.eclipse.egit.ui",
- org.eclipse.jgit.internal.fsck;version="7.5.0";
+ org.eclipse.jgit.internal.fsck;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.revwalk;version="7.5.0";
+ org.eclipse.jgit.internal.revwalk;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.commitgraph;version="7.5.0";
+ org.eclipse.jgit.internal.storage.commitgraph;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.dfs;version="7.5.0";
+ org.eclipse.jgit.internal.storage.dfs;version="7.6.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.server,
    org.eclipse.jgit.http.test,
    org.eclipse.jgit.lfs.test",
- org.eclipse.jgit.internal.storage.file;version="7.5.0";
+ org.eclipse.jgit.internal.storage.file;version="7.6.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -109,39 +109,39 @@
    org.eclipse.jgit.ssh.apache,
    org.eclipse.jgit.ssh.apache.test,
    org.eclipse.jgit.ssh.jsch.test",
- org.eclipse.jgit.internal.storage.io;version="7.5.0";
+ org.eclipse.jgit.internal.storage.io;version="7.6.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.memory;version="7.5.0";
+ org.eclipse.jgit.internal.storage.memory;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.midx;version="7.5.0";
+ org.eclipse.jgit.internal.storage.midx;version="7.6.0";
   x-friends:="org.eclipse.jgit.pgm,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.pack;version="7.5.0";
+ org.eclipse.jgit.internal.storage.pack;version="7.6.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="7.5.0";
+ org.eclipse.jgit.internal.storage.reftable;version="7.6.0";
   x-friends:="org.eclipse.jgit.http.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.submodule;version="7.5.0";x-internal:=true,
- org.eclipse.jgit.internal.transport.connectivity;version="7.5.0";
+ org.eclipse.jgit.internal.submodule;version="7.6.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.connectivity;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.http;version="7.5.0";
+ org.eclipse.jgit.internal.transport.http;version="7.6.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="7.5.0";
+ org.eclipse.jgit.internal.transport.parser;version="7.6.0";
   x-friends:="org.eclipse.jgit.http.server,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="7.5.0";
+ org.eclipse.jgit.internal.transport.ssh;version="7.6.0";
   x-friends:="org.eclipse.jgit.ssh.apache,
    org.eclipse.jgit.ssh.jsch,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.util;version="7.5.0";
+ org.eclipse.jgit.internal.util;version="7.6.0";
   x-friends:="org.eclipse.jgit.junit",
- org.eclipse.jgit.lib;version="7.5.0";
+ org.eclipse.jgit.lib;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.sha1,
    org.eclipse.jgit.dircache,
@@ -156,12 +156,12 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.lib.internal;version="7.5.0";
+ org.eclipse.jgit.lib.internal;version="7.6.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.pgm,
    org.eclipse.egit.ui",
- org.eclipse.jgit.logging;version="7.5.0",
- org.eclipse.jgit.merge;version="7.5.0";
+ org.eclipse.jgit.logging;version="7.6.0",
+ org.eclipse.jgit.merge;version="7.6.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -170,42 +170,42 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.api,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.nls;version="7.5.0",
- org.eclipse.jgit.notes;version="7.5.0";
+ org.eclipse.jgit.nls;version="7.6.0",
+ org.eclipse.jgit.notes;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="7.5.0";
+ org.eclipse.jgit.patch;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="7.5.0";
+ org.eclipse.jgit.revplot;version="7.6.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.revwalk;version="7.5.0";
+ org.eclipse.jgit.revwalk;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.internal.storage.commitgraph",
- org.eclipse.jgit.revwalk.filter;version="7.5.0";
+ org.eclipse.jgit.revwalk.filter;version="7.6.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="7.5.0";
+ org.eclipse.jgit.storage.file;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="7.5.0";
+ org.eclipse.jgit.storage.pack;version="7.6.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="7.5.0";
+ org.eclipse.jgit.submodule;version="7.6.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.transport;version="7.5.0";
+ org.eclipse.jgit.transport;version="7.6.0";
   uses:="javax.crypto,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.util.io,
@@ -218,21 +218,21 @@
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.storage.pack,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.transport.http;version="7.5.0";
+ org.eclipse.jgit.transport.http;version="7.6.0";
   uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="7.5.0";
+ org.eclipse.jgit.transport.resolver;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.treewalk;version="7.5.0";
+ org.eclipse.jgit.treewalk;version="7.6.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util",
- org.eclipse.jgit.treewalk.filter;version="7.5.0";
+ org.eclipse.jgit.treewalk.filter;version="7.6.0";
   uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="7.5.0";
+ org.eclipse.jgit.util;version="7.6.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.revwalk,
@@ -245,12 +245,12 @@
    org.eclipse.jgit.treewalk,
    javax.net.ssl,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.util.io;version="7.5.0";
+ org.eclipse.jgit.util.io;version="7.6.0";
   uses:="org.eclipse.jgit.attributes,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util.sha1;version="7.5.0",
- org.eclipse.jgit.util.time;version="7.5.0"
+ org.eclipse.jgit.util.sha1;version="7.6.0",
+ org.eclipse.jgit.util.time;version="7.6.0"
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  javax.crypto,
  javax.management,
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index c83ff44..48db010 100644
--- a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: org.eclipse.jgit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 7.5.0.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-SCM: url=https://github.com/eclipse-jgit/jgit, connection=scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit.git, developerConnection=scm:git:https://eclipse.gerrithub.io/a/eclipse-jgit/jgit.git
-Eclipse-SourceBundle: org.eclipse.jgit;version="7.5.0.qualifier";roots="."
+Eclipse-SourceBundle: org.eclipse.jgit;version="7.6.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 9213e7a..890cb9c 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.5.0-SNAPSHOT</version>
+    <version>7.6.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
index 6158032..e0f593a 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -68,6 +68,7 @@
 bitmapsMustBePrepared=Bitmaps must be prepared before they may be written.
 bitmapUseNoopNoListener=Use NOOP instance for no listener
 blameNotCommittedYet=Not Committed Yet
+blameRegionCoverAllLines=Cached blame should cover all lines
 blockLimitNotMultipleOfBlockSize=blockLimit {0} must be a multiple of blockSize {1}
 blockLimitNotPositive=blockLimit must be positive: {0}
 blockSizeNotPowerOf2=blockSize must be a power of 2
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
index 67bc6fb..8ad50b5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameRegionMerger.java
@@ -15,6 +15,7 @@
 import java.util.List;
 
 import org.eclipse.jgit.blame.cache.CacheRegion;
+import org.eclipse.jgit.internal.JGitText;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -72,8 +73,7 @@ Candidate mergeCandidate(Candidate candidate) {
 	List<Candidate> mergeOneRegion(Region region) throws IOException {
 		List<CacheRegion> overlaps = findOverlaps(region);
 		if (overlaps.isEmpty()) {
-			throw new IOException(
-					"Cached blame should cover all lines");
+			throw new IOException(JGitText.get().blameRegionCoverAllLines);
 		}
 		/*
 		 * Cached regions cover the whole file. We find first which ones overlap
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
index b041729..6e26999 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/FastIgnoreRule.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, 2021 Andrey Loskutov <loskutov@gmx.de> and others
+ * Copyright (C) 2014, 2025 Andrey Loskutov <loskutov@gmx.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -12,7 +12,6 @@
 import static org.eclipse.jgit.ignore.IMatcher.NO_MATCH;
 import static org.eclipse.jgit.ignore.internal.Strings.isDirectoryPattern;
 import static org.eclipse.jgit.ignore.internal.Strings.stripTrailing;
-import static org.eclipse.jgit.ignore.internal.Strings.stripTrailingWhitespace;
 
 import java.text.MessageFormat;
 
@@ -72,7 +71,7 @@ void parse(String pattern) throws InvalidPatternException {
 		if (pattern == null) {
 			throw new IllegalArgumentException("Pattern must not be null!"); //$NON-NLS-1$
 		}
-		if (pattern.length() == 0) {
+		if (pattern.isEmpty() || pattern.charAt(0) == '#') {
 			dirOnly = false;
 			inverse = false;
 			this.matcher = NO_MATCH;
@@ -81,29 +80,19 @@ void parse(String pattern) throws InvalidPatternException {
 		inverse = pattern.charAt(0) == '!';
 		if (inverse) {
 			pattern = pattern.substring(1);
-			if (pattern.length() == 0) {
+			if (pattern.isEmpty()
+					|| (pattern.length() == 1 && pattern.charAt(0) == '\\')) {
 				dirOnly = false;
 				this.matcher = NO_MATCH;
 				return;
 			}
 		}
-		if (pattern.charAt(0) == '#') {
-			this.matcher = NO_MATCH;
-			dirOnly = false;
-			return;
-		}
-		if (pattern.charAt(0) == '\\' && pattern.length() > 1) {
-			char next = pattern.charAt(1);
-			if (next == '!' || next == '#') {
-				// remove backslash escaping first special characters
-				pattern = pattern.substring(1);
-			}
-		}
 		dirOnly = isDirectoryPattern(pattern);
 		if (dirOnly) {
-			pattern = stripTrailingWhitespace(pattern);
+			pattern = pattern.stripTrailing();
 			pattern = stripTrailing(pattern, PATH_SEPARATOR);
-			if (pattern.length() == 0) {
+			if (pattern.isEmpty()
+					|| (pattern.length() == 1 && pattern.charAt(0) == '\\')) {
 				this.matcher = NO_MATCH;
 				return;
 			}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
index 4f8e149..9cf5505 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/NameMatcher.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, Andrey Loskutov <loskutov@gmx.de> and others
+ * Copyright (C) 2014, 2025 Andrey Loskutov <loskutov@gmx.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -28,7 +28,7 @@ public class NameMatcher extends AbstractMatcher {
 		super(pattern, dirOnly);
 		slash = getPathSeparator(pathSeparator);
 		if (deleteBackslash) {
-			pattern = Strings.deleteBackslash(pattern);
+			pattern = Strings.unescape(pattern);
 		}
 		beginning = pattern.length() == 0 ? false : pattern.charAt(0) == slash;
 		if (!beginning) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
index a40568d..dc77687 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/PathMatcher.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, Andrey Loskutov <loskutov@gmx.de> and others
+ * Copyright (C) 2014, 2025 Andrey Loskutov <loskutov@gmx.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -97,11 +97,17 @@ public static IMatcher createPathMatcher(String pattern,
 			Character pathSeparator, boolean dirOnly)
 			throws InvalidPatternException {
 		pattern = trim(pattern);
+		if (isEscape(pattern, pattern.length() - 1) && !dirOnly) {
+			// Last character is a backslash that is an escape: never matches or
+			// produces an error.
+			return IMatcher.NO_MATCH; // Or throw an exception?
+		}
 		char slash = Strings.getPathSeparator(pathSeparator);
 		// ignore possible leading and trailing slash
 		int slashIdx = pattern.indexOf(slash, 1);
-		if (slashIdx > 0 && slashIdx < pattern.length() - 1)
+		if (slashIdx > 0 && slashIdx < pattern.length() - 1) {
 			return new PathMatcher(pattern, pathSeparator, dirOnly);
+		}
 		return createNameMatcher0(pattern, pathSeparator, dirOnly, true);
 	}
 
@@ -114,18 +120,32 @@ public static IMatcher createPathMatcher(String pattern,
 	 * @return trimmed pattern
 	 */
 	private static String trim(String pattern) {
-		while (pattern.length() > 0
-				&& pattern.charAt(pattern.length() - 1) == ' ') {
-			if (pattern.length() > 1
-					&& pattern.charAt(pattern.length() - 2) == '\\') {
-				// last space was escaped by backslash: remove backslash and
-				// keep space
-				pattern = pattern.substring(0, pattern.length() - 2) + " "; //$NON-NLS-1$
-				return pattern;
-			}
-			pattern = pattern.substring(0, pattern.length() - 1);
+		int i = pattern.length() - 1;
+		while (i >= 0 && pattern.charAt(i) == ' ') {
+			i--;
 		}
-		return pattern;
+		if (i < 0) {
+			return ""; //$NON-NLS-1$
+		} else if (i == pattern.length() - 1) {
+			// Last character was not a space.
+			return pattern;
+		}
+		// i is on the last non-space
+		if (isEscape(pattern, i)) {
+			// Last space was escaped by backslash: remove backslash and
+			// keep space
+			return pattern.substring(0, i) + ' ';
+		}
+		return pattern.substring(0, i + 1);
+	}
+
+	private static boolean isEscape(String pattern, int from) {
+		// Count backslashes, if odd the last one is an escape
+		int i = from;
+		while (i >= 0 && pattern.charAt(i) == '\\') {
+			i--;
+		}
+		return ((from - i) & 1) != 0;
 	}
 
 	private static IMatcher createNameMatcher0(String segment,
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
index 3305a74..d048559 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/internal/Strings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, 2017 Andrey Loskutov <loskutov@gmx.de> and others
+ * Copyright (C) 2014, 2025 Andrey Loskutov <loskutov@gmx.de> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -56,26 +56,6 @@ public static String stripTrailing(String pattern, char c) {
 	}
 
 	/**
-	 * Strip trailing whitespace characters
-	 *
-	 * @param pattern
-	 *            non null
-	 * @return new string with all trailing whitespace removed
-	 */
-	public static String stripTrailingWhitespace(String pattern) {
-		for (int i = pattern.length() - 1; i >= 0; i--) {
-			char charAt = pattern.charAt(i);
-			if (!Character.isWhitespace(charAt)) {
-				if (i == pattern.length() - 1) {
-					return pattern;
-				}
-				return pattern.substring(0, i + 1);
-			}
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
 	 * Check if pattern is a directory pattern ending with a path separator
 	 *
 	 * @param pattern
@@ -153,8 +133,7 @@ static boolean isWildCard(String pattern) {
 	}
 
 	private static boolean isComplexWildcard(String pattern) {
-		int idx1 = pattern.indexOf('[');
-		if (idx1 != -1) {
+		if (pattern.indexOf('[') != -1) {
 			return true;
 		}
 		if (pattern.indexOf('?') != -1) {
@@ -169,30 +148,28 @@ private static boolean isComplexWildcard(String pattern) {
 				return false;
 			}
 			char nextChar = pattern.charAt(nextIdx);
-			if (escapedByBackslash(nextChar)) {
-				return true;
-			}
-			return false;
+			// If the backslash _might_ escape a metacharacter, we have
+			// something complex
+			return nextChar == '?' || nextChar == '*' || nextChar == '[';
 		}
 		return false;
 	}
 
-	private static boolean escapedByBackslash(char nextChar) {
-		return nextChar == '?' || nextChar == '*' || nextChar == '[';
-	}
-
 	static PatternState checkWildCards(String pattern) {
-		if (isComplexWildcard(pattern))
+		if (isComplexWildcard(pattern)) {
 			return PatternState.COMPLEX;
+		}
 		int startIdx = pattern.indexOf('*');
-		if (startIdx < 0)
+		if (startIdx < 0) {
 			return PatternState.NONE;
+		}
 
-		if (startIdx == pattern.length() - 1)
+		if (startIdx == pattern.length() - 1) {
 			return PatternState.TRAILING_ASTERISK_ONLY;
-		if (pattern.lastIndexOf('*') == 0)
+		}
+		if (pattern.lastIndexOf('*') == 0) {
 			return PatternState.LEADING_ASTERISK_ONLY;
-
+		}
 		return PatternState.COMPLEX;
 	}
 
@@ -287,7 +264,7 @@ static Pattern convertGlob(String pattern) throws InvalidPatternException {
 				break;
 
 			case '.':
-				if (seenEscape)
+				if (seenEscape || in_brackets > 0)
 					sb.append(c);
 				else
 					sb.append('\\').append('.');
@@ -305,7 +282,7 @@ static Pattern convertGlob(String pattern) throws InvalidPatternException {
 					if (lookBehind(sb) == '['
 							&& isLetter(lookAhead(pattern, i)))
 						in_char_class = true;
-				sb.append(':');
+				sb.append(c);
 				break;
 
 			case '-':
@@ -315,22 +292,30 @@ && isLetter(lookAhead(pattern, i)))
 					else
 						sb.append(c);
 				} else
-					sb.append('-');
+					sb.append(c);
 				break;
 
 			case '\\':
-				if (in_brackets > 0) {
-					char lookAhead = lookAhead(pattern, i);
-					if (lookAhead == ']' || lookAhead == '[')
-						ignoreLastBracket = true;
-				} else {
-					//
-					char lookAhead = lookAhead(pattern, i);
-					if (lookAhead != '\\' && lookAhead != '['
-							&& lookAhead != '?' && lookAhead != '*'
-							&& lookAhead != ' ' && lookBehind(sb) != '\\') {
-						break;
-					}
+				if (seenEscape) {
+					sb.append(c);
+					seenEscape = false;
+					continue;
+				}
+				if (i + 1 == pattern.length()) {
+					// Lone backslash at end of pattern is dropped.
+					break;
+				}
+				char lookAhead = lookAhead(pattern, i);
+				if (in_brackets > 0 && (lookAhead == ']' || lookAhead == '[')) {
+					ignoreLastBracket = true;
+				}
+				if (lookAhead == '0' || (lookAhead >= 'a' && lookAhead <= 'z')
+						|| (lookAhead >= 'A' && lookAhead <= 'Z')) {
+					// Can be escaped in a glob pattern, but don't need to.
+					// Escaping these is invalid in a Java regexp. Glob patterns
+					// do not have the escaped constructs a Java regexp has
+					// (like \d, \Q, \x, or also \0).
+					break;
 				}
 				sb.append(c);
 				break;
@@ -473,28 +458,25 @@ private static String checkPosixCharClass(char[] buffer) {
 		return null;
 	}
 
-	static String deleteBackslash(String s) {
+	static String unescape(String s) {
 		if (s.indexOf('\\') < 0) {
 			return s;
 		}
-		StringBuilder sb = new StringBuilder(s.length());
-		for (int i = 0; i < s.length(); i++) {
+		int len = s.length();
+		StringBuilder sb = new StringBuilder(len);
+		for (int i = 0; i < len; i++) {
 			char ch = s.charAt(i);
 			if (ch == '\\') {
-				if (i + 1 == s.length()) {
-					continue;
+				if (i + 1 < len) {
+					char next = s.charAt(i + 1);
+					if (next == '\\') {
+						sb.append(ch);
+						i++;
+					}
 				}
-				char next = s.charAt(i + 1);
-				if (next == '\\') {
-					sb.append(ch);
-					i++;
-					continue;
-				}
-				if (!escapedByBackslash(next)) {
-					continue;
-				}
+			} else {
+				sb.append(ch);
 			}
-			sb.append(ch);
 		}
 		return sb.toString();
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
index 9bd99ed..539d00e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -98,6 +98,7 @@ public static JGitText get() {
 	/***/ public String bitmapsMustBePrepared;
 	/***/ public String bitmapUseNoopNoListener;
 	/***/ public String blameNotCommittedYet;
+	/***/ public String blameRegionCoverAllLines;
 	/***/ public String blockLimitNotMultipleOfBlockSize;
 	/***/ public String blockLimitNotPositive;
 	/***/ public String blockSizeNotPowerOf2;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidx.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidx.java
index 742fe6c..5ef395d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidx.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidx.java
@@ -9,227 +9,76 @@
  */
 package org.eclipse.jgit.internal.storage.dfs;
 
-import static org.eclipse.jgit.internal.storage.pack.PackExt.MULTI_PACK_INDEX;
-import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
-
 import java.io.IOException;
-import java.nio.channels.Channels;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 import java.util.zip.DataFormatException;
 
 import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException;
-import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
-import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 import org.eclipse.jgit.internal.storage.file.PackIndex;
 import org.eclipse.jgit.internal.storage.file.PackReverseIndex;
-import org.eclipse.jgit.internal.storage.midx.MultiPackIndex;
-import org.eclipse.jgit.internal.storage.midx.MultiPackIndex.PackOffset;
-import org.eclipse.jgit.internal.storage.midx.MultiPackIndexLoader;
-import org.eclipse.jgit.internal.storage.pack.ObjectToPack;
 import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
-import org.eclipse.jgit.lib.AbbreviatedObjectId;
-import org.eclipse.jgit.lib.AnyObjectId;
-import org.eclipse.jgit.lib.BitmapIndex;
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectIdSet;
 import org.eclipse.jgit.lib.ObjectLoader;
-import org.eclipse.jgit.util.BlockList;
 
 /**
- * Implementation of a DfsPackfile that tries to solve the queries in a
- * multipack index before resorting to the real packs.
+ * DfsPackFile with the extra methods to support midx.
  * <p>
- * It uses the position in the multipack index of the objects as their "offset".
+ * This is an abstract class to keep the inheritance from DfsPackFile and allow
+ * a dummy implementation for single packs.
+ * <p>
+ * We implement at this level methods that just translate midx to pack offsets
+ * and forward to the pack.
  */
-public final class DfsPackFileMidx extends DfsPackFile {
+public abstract sealed class DfsPackFileMidx extends DfsPackFile
+		permits DfsPackFileMidxNPacks {
 
-	private static final int REF_POSITION = 0;
-
-	private final List<DfsPackFile> packs;
-
-	// The required packs, in the order specified in the multipack index
-	// Initialized lazily, when the midx is loaded
-	private final DfsPackFile[] packsInIdOrder;
-
-	private MultiPackIndex midx;
-
-	private final DfsPackFileMidx base;
-
-	private final VOffsetCalculator offsetCalculator;
-
-	static DfsPackFileMidx create(DfsBlockCache cache, DfsPackDescription desc,
-			List<DfsPackFile> reqPacks, DfsPackFileMidx base) {
-		return new DfsPackFileMidx(cache, desc, reqPacks, base);
-	}
-
-	private DfsPackFileMidx(DfsBlockCache cache, DfsPackDescription desc,
-			List<DfsPackFile> requiredPacks, @Nullable DfsPackFileMidx base) {
-		super(cache, desc);
-		this.base = base;
-		this.packs = requiredPacks;
-		String[] coveredPackNames = desc.getCoveredPacks().stream()
-				.map(DfsPackDescription::getPackName).toArray(String[]::new);
-		packsInIdOrder = getPacksInMidxIdOrder(coveredPackNames);
-		offsetCalculator = VOffsetCalculator.fromPacks(packsInIdOrder,
-				base != null ? base.getOffsetCalculator() : null);
-		this.length = offsetCalculator.getMaxOffset();
-	}
-
-	private MultiPackIndex midx(DfsReader ctx) throws IOException {
-		if (midx != null) {
-			return midx;
-		}
-
-		DfsStreamKey revKey = desc.getStreamKey(MULTI_PACK_INDEX);
-		// Keep the value parsed in the loader, in case the Ref<> is
-		// nullified in ClockBlockCacheTable#reserveSpace
-		// before we read its value.
-		AtomicReference<MultiPackIndex> loadedRef = new AtomicReference<>(null);
-		DfsBlockCache.Ref<MultiPackIndex> cachedRef = cache.getOrLoadRef(revKey,
-				REF_POSITION, () -> {
-					RefWithSize midx1 = loadMultiPackIndex(ctx, desc);
-					loadedRef.set(midx1.idx);
-					return new DfsBlockCache.Ref<>(revKey, REF_POSITION,
-							midx1.size, midx1.idx);
-				});
-		// if (loadedRef.get() == null) {
-		// ctx.stats.ridxCacheHit;
-		// }
-		midx = cachedRef.get() != null ? cachedRef.get() : loadedRef.get();
-		return midx;
-	}
-
-	private static RefWithSize loadMultiPackIndex(DfsReader ctx,
-			DfsPackDescription desc) throws IOException {
-		try (ReadableChannel rc = ctx.db.openFile(desc, MULTI_PACK_INDEX)) {
-			MultiPackIndex midx = MultiPackIndexLoader
-					.read(Channels.newInputStream(rc));
-			// ctx.stats.readIdxBytes += rc.position();
-			return new RefWithSize(midx, midx.getMemorySize());
-		}
-	}
-
-	private record RefWithSize(MultiPackIndex idx, long size) {
-	}
-
-	private DfsPackFile[] getPacksInMidxIdOrder(String[] packNames) {
-		Map<String, DfsPackFile> byName = packs.stream()
-				.collect(Collectors.toUnmodifiableMap(
-						p -> p.getPackDescription().getPackName(),
-						Function.identity()));
-		DfsPackFile[] result = new DfsPackFile[desc.getCoveredPacks().size()];
-		for (int i = 0; i < packNames.length; i++) {
-			DfsPackFile pack = byName.get(packNames[i]);
-			if (pack == null) {
-				// This should have been checked in the object db
-				// when the pack description was loaded
-				throw new IllegalStateException("Required pack missing"); //$NON-NLS-1$
-			}
-			result[i] = pack;
-		}
-		return result;
-	}
-
-	// Visible for testing
-	VOffsetCalculator getOffsetCalculator() {
-		return offsetCalculator;
-	}
-
-	@Override
-	public PackIndex getPackIndex(DfsReader ctx) {
-		throw new IllegalStateException(
-				"Shouldn't use multipack index if the primary index is needed"); //$NON-NLS-1$
-	}
-
-	@Override
-	public ObjectIdSet asObjectIdSet(DfsReader ctx) throws IOException {
-		MultiPackIndex multiPackIndex = midx(ctx);
-		return objectId -> multiPackIndex.hasObject(objectId);
-	}
-
-	@Override
-	public PackReverseIndex getReverseIdx(DfsReader ctx) {
-		throw new IllegalStateException(
-				"Shouldn't use multipack index if the reverse index is needed"); //$NON-NLS-1$
-	}
-
-	@Override
-	public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
-		// TODO(ifrade): at some point we will have bitmaps over the multipack
-		// index
-		// At the moment bitmap is in GC, at the end of the chain
-		if (base != null) {
-			return base.getBitmapIndex(ctx);
-		}
-
-		for (DfsPackFile pack : packsInIdOrder) {
-			PackBitmapIndex bitmapIndex = pack.getBitmapIndex(ctx);
-			if (bitmapIndex != null) {
-				return bitmapIndex;
-			}
-		}
-		return null;
-	}
-
-	@Override
-	List<DfsPackFile> fullyIncludedIn(DfsReader ctx,
-			BitmapIndex.BitmapBuilder need) throws IOException {
-		List<DfsPackFile> fullyIncluded = new ArrayList<>();
-		for (DfsPackFile pack : packs) {
-			List<DfsPackFile> includedPacks = pack.fullyIncludedIn(ctx, need);
-			if (!includedPacks.isEmpty()) {
-				fullyIncluded.addAll(includedPacks);
-			}
-		}
-
-		if (base != null) {
-			fullyIncluded.addAll(base.fullyIncludedIn(ctx, need));
-		}
-
-		return fullyIncluded;
-	}
-
-	@Override
-	public CommitGraph getCommitGraph(DfsReader ctx) throws IOException {
-		for (DfsPackFile pack : packs) {
-			CommitGraph cg = pack.getCommitGraph(ctx);
-			if (cg != null) {
-				return cg;
-			}
-		}
-		return null;
+	/**
+	 * Create a midx pack
+	 *
+	 * @param cache
+	 *            dfs block cache
+	 * @param desc
+	 *            description of the pack, covering at least one other pack
+	 * @param requiredPacks
+	 *            DfsPackFile instances of the covered packs
+	 * @param base
+	 *            midx acting a base of this
+	 * @return a midx pack
+	 */
+	public static DfsPackFileMidx create(DfsBlockCache cache,
+			DfsPackDescription desc, List<DfsPackFile> requiredPacks,
+			@Nullable DfsPackFileMidx base) {
+		return new DfsPackFileMidxNPacks(cache, desc, requiredPacks, base);
 	}
 
 	/**
-	 * Count of objects in this <b>pack</> (i.e. including, recursively, its
-	 * base)
+	 * Default constructor
 	 *
-	 * @param ctx
-	 *            a reader
-	 * @return count of objects in this pack, including its bases
-	 * @throws IOException
-	 *             an error reading a midx in the chain
+	 * @param cache
+	 *            dfs block cache
+	 * @param desc
+	 *            midx pack description
 	 */
-	private int getObjectCount(DfsReader ctx) throws IOException {
-		int baseObjectCount = base == null ? 0 : base.getObjectCount(ctx);
-		return midx(ctx).getObjectCount() + baseObjectCount;
+	protected DfsPackFileMidx(DfsBlockCache cache, DfsPackDescription desc) {
+		super(cache, desc);
 	}
 
 	/**
+	 * Base of this multipack index
+	 * <p>
+	 * If this midx is part of a chain, this is its parent
+	 *
+	 * @return the base of this multipack index
+	 */
+	public abstract DfsPackFileMidx getMultipackIndexBase();
+
+	/**
 	 * Packs indexed by this multipack index (base NOT included)
 	 *
 	 * @return packs indexed by this multipack index
 	 */
-	public List<DfsPackFile> getCoveredPacks() {
-		return packs;
-	}
+	public abstract List<DfsPackFile> getCoveredPacks();
 
 	/**
 	 * All packs indexed by this multipack index and its chain
@@ -240,7 +89,7 @@ public List<DfsPackFile> getCoveredPacks() {
 	 * @return packs indexed by this multipack index and its parents.
 	 */
 	public List<DfsPackFile> getAllCoveredPacks() {
-		List<DfsPackFile> coveredPacks = new ArrayList<>(packs);
+		List<DfsPackFile> coveredPacks = new ArrayList<>(getCoveredPacks());
 		DfsPackFileMidx base = getMultipackIndexBase();
 		while (base != null) {
 			coveredPacks.addAll(base.getCoveredPacks());
@@ -251,62 +100,34 @@ public List<DfsPackFile> getAllCoveredPacks() {
 	}
 
 	/**
-	 * Base of this multipack index
-	 * <p>
-	 * If this midx is part of a chain, this is its parent
+	 * Count of objects in this <b>pack</b> (i.e. including, recursively, its
+	 * base)
 	 *
-	 * @return the base of this multipack index
+	 * @param ctx
+	 *            a reader
+	 * @return count of objects in this pack, including its bases
+	 * @throws IOException
+	 *             an error reading a midx in the chain
 	 */
-	public DfsPackFileMidx getMultipackIndexBase() {
-		return base;
+	protected int getObjectCount(DfsReader ctx) throws IOException {
+		return (int) getPackDescription().getObjectCount();
 	}
 
 	@Override
-	public int findIdxPosition(DfsReader ctx, AnyObjectId id)
-			throws IOException {
-		int p = midx(ctx).findPosition(id);
-		if (p >= 0) {
-			int baseObjects = base == null ? 0 : base.getObjectCount(ctx);
-			return p + baseObjects;
-		}
-
-		if (base == null) {
-			return -1;
-		}
-
-		return base.findIdxPosition(ctx, id);
+	public PackIndex getPackIndex(DfsReader ctx) {
+		throw new IllegalStateException(
+				"Shouldn't use multipack index if the primary index is needed"); //$NON-NLS-1$
 	}
 
 	@Override
-	public boolean hasObject(DfsReader ctx, AnyObjectId id) throws IOException {
-		if (midx(ctx).hasObject(id)) {
-			return true;
-		}
-
-		if (base == null) {
-			return false;
-		}
-
-		return base.hasObject(ctx, id);
-	}
-
-	@Override
-	ObjectLoader get(DfsReader ctx, AnyObjectId id) throws IOException {
-		PackOffset location = midx(ctx).find(id);
-		if (location != null) {
-			return packsInIdOrder[location.getPackId()].get(ctx, id);
-		}
-
-		if (base == null) {
-			return null;
-		}
-
-		return base.get(ctx, id);
+	public PackReverseIndex getReverseIdx(DfsReader ctx) {
+		throw new IllegalStateException(
+				"Shouldn't use multipack index if the reverse index is needed"); //$NON-NLS-1$
 	}
 
 	@Override
 	ObjectLoader load(DfsReader ctx, long midxOffset) throws IOException {
-		DfsPackOffset location = offsetCalculator.decode(midxOffset);
+		DfsPackOffset location = getOffsetCalculator().decode(midxOffset);
 		if (location == null) {
 			return null;
 		}
@@ -314,41 +135,6 @@ ObjectLoader load(DfsReader ctx, long midxOffset) throws IOException {
 	}
 
 	@Override
-	long findOffset(DfsReader ctx, AnyObjectId id) throws IOException {
-		PackOffset location = midx(ctx).find(id);
-		if (location != null) {
-			return offsetCalculator.encode(location);
-		}
-
-		if (base == null) {
-			return -1;
-		}
-
-		return base.findOffset(ctx, id);
-	}
-
-	@Override
-	void resolve(DfsReader ctx, Set<ObjectId> matches, AbbreviatedObjectId id,
-			int matchLimit) throws IOException {
-		midx(ctx).resolve(matches, id, matchLimit);
-		if (matches.size() < matchLimit && base != null) {
-			base.resolve(ctx, matches, id, matchLimit);
-		}
-	}
-
-	@Override
-	void copyPackAsIs(PackOutputStream out, DfsReader ctx) throws IOException {
-		// Assumming the order of the packs does not really matter
-		for (DfsPackFile pack : packs) {
-			pack.copyPackAsIs(out, ctx);
-		}
-
-		if (base != null) {
-			base.copyPackAsIs(out, ctx);
-		}
-	}
-
-	@Override
 	void copyAsIs(PackOutputStream out, DfsObjectToPack src, boolean validate,
 			DfsReader ctx) throws IOException,
 			StoredObjectRepresentationNotAvailableException {
@@ -357,7 +143,7 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, boolean validate,
 					"pack mismatch in object description"); //$NON-NLS-1$
 		}
 
-		DfsPackOffset location = offsetCalculator.decode(src.offset);
+		DfsPackOffset location = getOffsetCalculator().decode(src.offset);
 		// The real pack requires the real offset
 		src.offset = location.getPackOffset();
 		location.getPack().copyAsIs(out, src, validate, ctx);
@@ -366,90 +152,31 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, boolean validate,
 	}
 
 	@Override
-	byte[] getDeltaHeader(DfsReader ctx, long pos)
+	final byte[] getDeltaHeader(DfsReader ctx, long pos)
 			throws IOException, DataFormatException {
-		DfsPackOffset location = offsetCalculator.decode(pos);
+		DfsPackOffset location = getOffsetCalculator().decode(pos);
 		return location.getPack().getDeltaHeader(ctx, location.getPackOffset());
 	}
 
 	@Override
-	int getObjectType(DfsReader ctx, long pos) throws IOException {
-		DfsPackOffset location = offsetCalculator.decode(pos);
+	final int getObjectType(DfsReader ctx, long pos) throws IOException {
+		DfsPackOffset location = getOffsetCalculator().decode(pos);
 		return location.getPack().getObjectType(ctx, location.getPackOffset());
 	}
 
 	@Override
-	long getObjectSize(DfsReader ctx, AnyObjectId id) throws IOException {
-		PackOffset local = midx(ctx).find(id);
-		if (local != null) {
-			return packsInIdOrder[local.getPackId()].getObjectSize(ctx, id);
-		}
-
-		if (base == null) {
-			return -1;
-		}
-
-		return base.getObjectSize(ctx, id);
-	}
-
-	@Override
-	long getObjectSize(DfsReader ctx, long pos) throws IOException {
+	final long getObjectSize(DfsReader ctx, long pos) throws IOException {
 		if (pos < 0) {
 			return -1;
 		}
-		DfsPackOffset location = offsetCalculator.decode(pos);
+		DfsPackOffset location = getOffsetCalculator().decode(pos);
 		return location.getPack().getObjectSize(ctx, location.getPackOffset());
 	}
 
 	@Override
-	boolean hasObjectSizeIndex(DfsReader ctx) {
-		return false;
-	}
-
-	@Override
-	int getObjectSizeIndexThreshold(DfsReader ctx) {
-		return Integer.MAX_VALUE;
-	}
-
-	@Override
-	long getIndexedObjectSize(DfsReader ctx, int idxPosition) {
-		// TODO(ifrade): if we forward to the pack, it reads its primary index
-		return -1;
-	}
-
-	@Override
-	List<DfsObjectToPack> findAllFromPack(DfsReader ctx,
-			Iterable<ObjectToPack> objects, boolean skipFound)
-			throws IOException {
-		List<DfsObjectToPack> tmp = new BlockList<>();
-		List<ObjectToPack> notFoundHere = new BlockList<>();
-		for (ObjectToPack obj : objects) {
-			DfsObjectToPack otp = (DfsObjectToPack) obj;
-			if (skipFound && otp.isFound()) {
-				continue;
-			}
-			long p = offsetCalculator.encode(midx(ctx).find(otp));
-			if (p < 0) {
-				notFoundHere.add(otp);
-				continue;
-			}
-			otp.setOffset(p);
-			tmp.add(otp);
-		}
-
-		if (base != null && !notFoundHere.isEmpty()) {
-			List<DfsObjectToPack> inChain = base.findAllFromPack(ctx,
-					notFoundHere, skipFound);
-			tmp.addAll(inChain);
-		}
-		tmp.sort(OFFSET_SORT);
-		return tmp;
-	}
-
-	@Override
-	void fillRepresentation(DfsObjectRepresentation r, long offset,
+	final void fillRepresentation(DfsObjectRepresentation r, long offset,
 			DfsReader ctx) throws IOException {
-		DfsPackOffset location = offsetCalculator.decode(offset);
+		DfsPackOffset location = getOffsetCalculator().decode(offset);
 		if (location == null) {
 			throw new IllegalArgumentException("Invalid offset in midx"); //$NON-NLS-1$
 		}
@@ -462,16 +189,16 @@ void fillRepresentation(DfsObjectRepresentation r, long offset,
 	}
 
 	@Override
-	void fillRepresentation(DfsObjectRepresentation r, long offset,
+	final void fillRepresentation(DfsObjectRepresentation r, long offset,
 			DfsReader ctx, PackReverseIndex rev) {
 		// This method shouldn't be called on the midx pack
 		throw new UnsupportedOperationException();
 	}
 
 	@Override
-	boolean isCorrupt(long offset) {
+	final boolean isCorrupt(long offset) {
 		// The index must have been loaded before to have this offset
-		DfsPackOffset location = offsetCalculator.decode(offset);
+		DfsPackOffset location = getOffsetCalculator().decode(offset);
 		if (location == null) {
 			throw new IllegalArgumentException("Invalid offset in midx"); //$NON-NLS-1$
 		}
@@ -479,105 +206,102 @@ boolean isCorrupt(long offset) {
 	}
 
 	@Override
-	DfsBlock readOneBlock(long pos, DfsReader ctx, ReadableChannel rc)
+	final DfsBlock readOneBlock(long pos, DfsReader ctx, ReadableChannel rc)
 			throws IOException {
 		// The index must have been loaded before to have this offset
-		DfsPackOffset location = offsetCalculator.decode(pos);
+		DfsPackOffset location = getOffsetCalculator().decode(pos);
 		return new DfsBlockMidx(location.getPack().readOneBlock(
 				location.getPackOffset(), ctx, rc), location.getPackStart());
 	}
 
 	@Override
-	DfsBlock getOrLoadBlock(long pos, DfsReader ctx) throws IOException {
+	final DfsBlock getOrLoadBlock(long pos, DfsReader ctx) throws IOException {
 		// The index must have been loaded before to have this offset
-		DfsPackOffset location = offsetCalculator.decode(pos);
+		DfsPackOffset location = getOffsetCalculator().decode(pos);
 		return new DfsBlockMidx(location.getPack().getOrLoadBlock(
 				location.getPackOffset(), ctx), location.getPackStart());
 	}
 
-	// Visible for testing
-	static class VOffsetCalculator {
-		private final DfsPackFile[] packs;
+	/**
+	 * Get the object calculator of this midx
+	 *
+	 * @return an offset calculator for this midx (including its chain)
+	 */
+	protected abstract VOffsetCalculator getOffsetCalculator();
 
-		private final long[] accSizes;
+	/**
+	 * Translates from midx-offset (considering all packs concatenated in midx
+	 * order) to (pack, offset) pair. This covers the whole midx chain.
+	 *
+	 * @implNote implementations take care of the encoding and chaining offset
+	 *           calculators.
+	 */
+	protected interface VOffsetCalculator {
+		/**
+		 * Return the pair of pack and offset from a midx offset
+		 *
+		 * @param voffset
+		 *            an offset in the midx chain
+		 * @return the corresponding pack and offset pair
+		 */
+		DfsPackOffset decode(long voffset);
 
-		private final long baseMaxOffset;
-
-		private final VOffsetCalculator baseOffsetCalculator;
-
-		private final DfsPackOffset poBuffer = new DfsPackOffset();
-
-		static VOffsetCalculator fromPacks(DfsPackFile[] packsInIdOrder,
-				VOffsetCalculator baseOffsetCalculator) {
-			long[] accSizes = new long[packsInIdOrder.length + 1];
-			accSizes[0] = 0;
-			for (int i = 0; i < packsInIdOrder.length; i++) {
-				accSizes[i + 1] = accSizes[i] + packsInIdOrder[i]
-						.getPackDescription().getFileSize(PACK);
-			}
-			return new VOffsetCalculator(packsInIdOrder, accSizes,
-					baseOffsetCalculator);
-		}
-
-		VOffsetCalculator(DfsPackFile[] packs, long[] packSizes,
-				VOffsetCalculator baseOffsetCalculator) {
-			this.packs = packs;
-			this.baseOffsetCalculator = baseOffsetCalculator;
-			this.baseMaxOffset = baseOffsetCalculator != null
-					? baseOffsetCalculator.getMaxOffset()
-					: 0;
-			accSizes = packSizes;
-		}
-
-		long encode(PackOffset location) {
-			if (location == null) {
-				return -1;
-			}
-			return location.getOffset() + accSizes[location.getPackId()]
-					+ baseMaxOffset;
-		}
-
-		DfsPackOffset decode(long voffset) {
-			if (voffset == -1) {
-				return null;
-			}
-
-			if (voffset < baseMaxOffset) {
-				return baseOffsetCalculator.decode(voffset);
-			}
-
-			long localOffset = voffset - baseMaxOffset;
-			for (int i = 0; i < accSizes.length; i++) {
-				if (localOffset <= accSizes[i]) {
-					return poBuffer.setValues(packs[i - 1],
-							accSizes[i - 1] + baseMaxOffset, voffset);
-				}
-			}
-			throw new IllegalArgumentException("Asking offset beyond limits"); //$NON-NLS-1$
-		}
-
-		long getMaxOffset() {
-			return accSizes[accSizes.length - 1] + baseMaxOffset;
-		}
+		/**
+		 * Max offset for this DfsPackFileMidx
+		 *
+		 * @return max offset for this pack (including its parents)
+		 */
+		long getMaxOffset();
 	}
 
-	static class DfsPackOffset {
+	/**
+	 * Data object that keeps a location readable as midx-offset or as
+	 * (pack/offset).
+	 * <p>
+	 * midx-offset is the offset considering the concatenation of all covered
+	 * packs in midx order. Only in the first pack of the base of the midx
+	 * chain, the pack offsets match the midx offsets.
+	 */
+	protected static final class DfsPackOffset {
 		private DfsPackFile pack;
 
 		private long packStart;
 
-		private long offset;
+		private long midxOffset;
 
-		private DfsPackOffset setValues(DfsPackFile pack, long packStart,
-				long globalOffset) {
+		/**
+		 * Set a location in this instance
+		 *
+		 * @param pack
+		 *            the pack that contains the object
+		 * @param packStart
+		 *            midx-offset where the pack starts
+		 * @param midxOffset
+		 *            midx-offset
+		 * @return an instance with this data
+		 */
+		DfsPackOffset setValues(DfsPackFile pack, long packStart,
+				long midxOffset) {
 			this.pack = pack;
 			this.packStart = packStart;
-			this.offset = globalOffset;
+			this.midxOffset = midxOffset;
 			return this;
 		}
 
 		/**
-		 * The pack
+		 * Set only the midx-offset
+		 *
+		 * @param midxOffset
+		 *            offset in the midx
+		 * @return and updated DfsPackOffset instance
+		 */
+		DfsPackOffset setMidxOffset(long midxOffset) {
+			this.midxOffset = midxOffset;
+			return this;
+		}
+
+		/**
+		 * The pack containing the object
 		 *
 		 * @return the pack
 		 */
@@ -601,10 +325,10 @@ long getPackStart() {
 		/**
 		 * Offset inside the pack (regular offset)
 		 *
-		 * @return offset inside this pack
+		 * @return offset inside the pack
 		 */
 		long getPackOffset() {
-			return offset - packStart;
+			return midxOffset - packStart;
 		}
 	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacks.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacks.java
new file mode 100644
index 0000000..6ff078a
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFileMidxNPacks.java
@@ -0,0 +1,434 @@
+/*
+ * Copyright (C) 2025, Google LLC.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.dfs;
+
+import static org.eclipse.jgit.internal.storage.pack.PackExt.MULTI_PACK_INDEX;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
+
+import java.io.IOException;
+import java.nio.channels.Channels;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import org.eclipse.jgit.annotations.Nullable;
+import org.eclipse.jgit.internal.storage.commitgraph.CommitGraph;
+import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
+import org.eclipse.jgit.internal.storage.midx.MultiPackIndex;
+import org.eclipse.jgit.internal.storage.midx.MultiPackIndex.PackOffset;
+import org.eclipse.jgit.internal.storage.midx.MultiPackIndexLoader;
+import org.eclipse.jgit.internal.storage.pack.ObjectToPack;
+import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
+import org.eclipse.jgit.lib.AbbreviatedObjectId;
+import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.BitmapIndex;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectIdSet;
+import org.eclipse.jgit.lib.ObjectLoader;
+import org.eclipse.jgit.util.BlockList;
+
+/**
+ * Implementation of a DfsPackfile that tries to solve the queries in a
+ * multipack index before resorting to the real packs.
+ * <p>
+ * It uses the position in the multipack index of the objects as their "offset".
+ */
+public final class DfsPackFileMidxNPacks extends DfsPackFileMidx {
+
+	private static final int REF_POSITION = 0;
+
+	private final List<DfsPackFile> packs;
+
+	// The required packs, in the order specified in the multipack index
+	// Initialized lazily, when the midx is loaded
+	private final DfsPackFile[] packsInIdOrder;
+
+	private MultiPackIndex midx;
+
+	private final DfsPackFileMidx base;
+
+	private final VOffsetCalculatorNPacks offsetCalculator;
+
+	DfsPackFileMidxNPacks(DfsBlockCache cache, DfsPackDescription desc,
+			List<DfsPackFile> requiredPacks, @Nullable DfsPackFileMidx base) {
+		super(cache, desc);
+		this.base = base;
+		this.packs = requiredPacks;
+		String[] coveredPackNames = desc.getCoveredPacks().stream()
+				.map(DfsPackDescription::getPackName).toArray(String[]::new);
+		packsInIdOrder = getPacksInMidxIdOrder(coveredPackNames);
+		offsetCalculator = VOffsetCalculatorNPacks.fromPacks(packsInIdOrder,
+				base != null ? base.getOffsetCalculator() : null);
+		this.length = offsetCalculator.getMaxOffset();
+	}
+
+	private MultiPackIndex midx(DfsReader ctx) throws IOException {
+		if (midx != null) {
+			return midx;
+		}
+
+		DfsStreamKey revKey = desc.getStreamKey(MULTI_PACK_INDEX);
+		// Keep the value parsed in the loader, in case the Ref<> is
+		// nullified in ClockBlockCacheTable#reserveSpace
+		// before we read its value.
+		AtomicReference<MultiPackIndex> loadedRef = new AtomicReference<>(null);
+		DfsBlockCache.Ref<MultiPackIndex> cachedRef = cache.getOrLoadRef(revKey,
+				REF_POSITION, () -> {
+					RefWithSize midx1 = loadMultiPackIndex(ctx, desc);
+					loadedRef.set(midx1.idx);
+					return new DfsBlockCache.Ref<>(revKey, REF_POSITION,
+							midx1.size, midx1.idx);
+				});
+		// if (loadedRef.get() == null) {
+		// ctx.stats.ridxCacheHit;
+		// }
+		midx = cachedRef.get() != null ? cachedRef.get() : loadedRef.get();
+		return midx;
+	}
+
+	private static RefWithSize loadMultiPackIndex(DfsReader ctx,
+			DfsPackDescription desc) throws IOException {
+		try (ReadableChannel rc = ctx.db.openFile(desc, MULTI_PACK_INDEX)) {
+			MultiPackIndex midx = MultiPackIndexLoader
+					.read(Channels.newInputStream(rc));
+			// ctx.stats.readIdxBytes += rc.position();
+			return new RefWithSize(midx, midx.getMemorySize());
+		}
+	}
+
+	private record RefWithSize(MultiPackIndex idx, long size) {
+	}
+
+	private DfsPackFile[] getPacksInMidxIdOrder(String[] packNames) {
+		Map<String, DfsPackFile> byName = packs.stream()
+				.collect(Collectors.toUnmodifiableMap(
+						p -> p.getPackDescription().getPackName(),
+						Function.identity()));
+		DfsPackFile[] result = new DfsPackFile[desc.getCoveredPacks().size()];
+		for (int i = 0; i < packNames.length; i++) {
+			DfsPackFile pack = byName.get(packNames[i]);
+			if (pack == null) {
+				// This should have been checked in the object db
+				// when the pack description was loaded
+				throw new IllegalStateException("Required pack missing"); //$NON-NLS-1$
+			}
+			result[i] = pack;
+		}
+		return result;
+	}
+
+	// Visible for testing
+	@Override
+	protected VOffsetCalculator getOffsetCalculator() {
+		return offsetCalculator;
+	}
+
+	@Override
+	public ObjectIdSet asObjectIdSet(DfsReader ctx) throws IOException {
+		MultiPackIndex multiPackIndex = midx(ctx);
+		return multiPackIndex::hasObject;
+	}
+
+
+	@Override
+	public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
+		// TODO(ifrade): at some point we will have bitmaps over the multipack
+		// index
+		// At the moment bitmap is in GC, at the end of the chain
+		if (base != null) {
+			return base.getBitmapIndex(ctx);
+		}
+
+		for (DfsPackFile pack : packsInIdOrder) {
+			PackBitmapIndex bitmapIndex = pack.getBitmapIndex(ctx);
+			if (bitmapIndex != null) {
+				return bitmapIndex;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	List<DfsPackFile> fullyIncludedIn(DfsReader ctx,
+			BitmapIndex.BitmapBuilder need) throws IOException {
+		List<DfsPackFile> fullyIncluded = new ArrayList<>();
+		for (DfsPackFile pack : packs) {
+			List<DfsPackFile> includedPacks = pack.fullyIncludedIn(ctx, need);
+			if (!includedPacks.isEmpty()) {
+				fullyIncluded.addAll(includedPacks);
+			}
+		}
+
+		if (base != null) {
+			fullyIncluded.addAll(base.fullyIncludedIn(ctx, need));
+		}
+
+		return fullyIncluded;
+	}
+
+	@Override
+	public CommitGraph getCommitGraph(DfsReader ctx) throws IOException {
+		for (DfsPackFile pack : packs) {
+			CommitGraph cg = pack.getCommitGraph(ctx);
+			if (cg != null) {
+				return cg;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Count of objects in this <b>pack</b> (i.e. including, recursively, its
+	 * base)
+	 *
+	 * @param ctx
+	 *            a reader
+	 * @return count of objects in this pack, including its bases
+	 * @throws IOException
+	 *             an error reading a midx in the chain
+	 */
+	@Override
+	protected int getObjectCount(DfsReader ctx) throws IOException {
+		int baseObjectCount = base == null ? 0 : base.getObjectCount(ctx);
+		return midx(ctx).getObjectCount() + baseObjectCount;
+	}
+
+	/**
+	 * Packs indexed by this multipack index (base NOT included)
+	 *
+	 * @return packs indexed by this multipack index
+	 */
+	@Override
+	public List<DfsPackFile> getCoveredPacks() {
+		return packs;
+	}
+
+	/**
+	 * Base of this multipack index
+	 * <p>
+	 * If this midx is part of a chain, this is its parent
+	 *
+	 * @return the base of this multipack index
+	 */
+	@Override
+	public DfsPackFileMidx getMultipackIndexBase() {
+		return base;
+	}
+
+	@Override
+	public int findIdxPosition(DfsReader ctx, AnyObjectId id)
+			throws IOException {
+		int p = midx(ctx).findPosition(id);
+		if (p >= 0) {
+			int baseObjects = base == null ? 0 : base.getObjectCount(ctx);
+			return p + baseObjects;
+		}
+
+		if (base == null) {
+			return -1;
+		}
+
+		return base.findIdxPosition(ctx, id);
+	}
+
+	@Override
+	public boolean hasObject(DfsReader ctx, AnyObjectId id) throws IOException {
+		if (midx(ctx).hasObject(id)) {
+			return true;
+		}
+
+		if (base == null) {
+			return false;
+		}
+
+		return base.hasObject(ctx, id);
+	}
+
+	@Override
+	ObjectLoader get(DfsReader ctx, AnyObjectId id) throws IOException {
+		PackOffset location = midx(ctx).find(id);
+		if (location != null) {
+			return packsInIdOrder[location.getPackId()].get(ctx, id);
+		}
+
+		if (base == null) {
+			return null;
+		}
+
+		return base.get(ctx, id);
+	}
+
+	@Override
+	long findOffset(DfsReader ctx, AnyObjectId id) throws IOException {
+		PackOffset location = midx(ctx).find(id);
+		if (location != null) {
+			return offsetCalculator.encode(location);
+		}
+
+		if (base == null) {
+			return -1;
+		}
+
+		return base.findOffset(ctx, id);
+	}
+
+	@Override
+	void resolve(DfsReader ctx, Set<ObjectId> matches, AbbreviatedObjectId id,
+			int matchLimit) throws IOException {
+		midx(ctx).resolve(matches, id, matchLimit);
+		if (matches.size() < matchLimit && base != null) {
+			base.resolve(ctx, matches, id, matchLimit);
+		}
+	}
+
+	@Override
+	void copyPackAsIs(PackOutputStream out, DfsReader ctx) throws IOException {
+		// Assumming the order of the packs does not really matter
+		for (DfsPackFile pack : packs) {
+			pack.copyPackAsIs(out, ctx);
+		}
+
+		if (base != null) {
+			base.copyPackAsIs(out, ctx);
+		}
+	}
+
+	@Override
+	long getObjectSize(DfsReader ctx, AnyObjectId id) throws IOException {
+		PackOffset local = midx(ctx).find(id);
+		if (local != null) {
+			return packsInIdOrder[local.getPackId()].getObjectSize(ctx, id);
+		}
+
+		if (base == null) {
+			return -1;
+		}
+
+		return base.getObjectSize(ctx, id);
+	}
+
+	@Override
+	boolean hasObjectSizeIndex(DfsReader ctx) {
+		return false;
+	}
+
+	@Override
+	int getObjectSizeIndexThreshold(DfsReader ctx) {
+		return Integer.MAX_VALUE;
+	}
+
+	@Override
+	long getIndexedObjectSize(DfsReader ctx, int idxPosition) {
+		// TODO(ifrade): if we forward to the pack, it reads its primary index
+		return -1;
+	}
+
+	@Override
+	List<DfsObjectToPack> findAllFromPack(DfsReader ctx,
+			Iterable<ObjectToPack> objects, boolean skipFound)
+			throws IOException {
+		List<DfsObjectToPack> tmp = new BlockList<>();
+		List<ObjectToPack> notFoundHere = new BlockList<>();
+		for (ObjectToPack obj : objects) {
+			DfsObjectToPack otp = (DfsObjectToPack) obj;
+			if (skipFound && otp.isFound()) {
+				continue;
+			}
+			long p = offsetCalculator.encode(midx(ctx).find(otp));
+			if (p < 0) {
+				notFoundHere.add(otp);
+				continue;
+			}
+			otp.setOffset(p);
+			tmp.add(otp);
+		}
+
+		if (base != null && !notFoundHere.isEmpty()) {
+			List<DfsObjectToPack> inChain = base.findAllFromPack(ctx,
+					notFoundHere, skipFound);
+			tmp.addAll(inChain);
+		}
+		tmp.sort(OFFSET_SORT);
+		return tmp;
+	}
+
+
+	// Visible for testing
+	static class VOffsetCalculatorNPacks implements VOffsetCalculator {
+		private final DfsPackFile[] packs;
+
+		private final long[] accSizes;
+
+		private final long baseMaxOffset;
+
+		private final VOffsetCalculator baseOffsetCalculator;
+
+		private final DfsPackOffset poBuffer = new DfsPackOffset();
+
+		static VOffsetCalculatorNPacks fromPacks(DfsPackFile[] packsInIdOrder,
+				VOffsetCalculator baseOffsetCalculator) {
+			long[] accSizes = new long[packsInIdOrder.length + 1];
+			accSizes[0] = 0;
+			for (int i = 0; i < packsInIdOrder.length; i++) {
+				accSizes[i + 1] = accSizes[i] + packsInIdOrder[i]
+						.getPackDescription().getFileSize(PACK);
+			}
+			return new VOffsetCalculatorNPacks(packsInIdOrder, accSizes,
+					baseOffsetCalculator);
+		}
+
+		VOffsetCalculatorNPacks(DfsPackFile[] packs, long[] packSizes,
+				VOffsetCalculator baseOffsetCalculator) {
+			this.packs = packs;
+			this.baseOffsetCalculator = baseOffsetCalculator;
+			this.baseMaxOffset = baseOffsetCalculator != null
+					? baseOffsetCalculator.getMaxOffset()
+					: 0;
+			accSizes = packSizes;
+		}
+
+		long encode(MultiPackIndex.PackOffset location) {
+			if (location == null) {
+				return -1;
+			}
+			return location.getOffset() + accSizes[location.getPackId()]
+					+ baseMaxOffset;
+		}
+
+		@Override
+		public DfsPackOffset decode(long voffset) {
+			if (voffset == -1) {
+				return null;
+			}
+
+			if (voffset < baseMaxOffset) {
+				return baseOffsetCalculator.decode(voffset);
+			}
+
+			long localOffset = voffset - baseMaxOffset;
+			for (int i = 0; i < accSizes.length; i++) {
+				if (localOffset <= accSizes[i]) {
+					return poBuffer.setValues(packs[i - 1],
+							accSizes[i - 1] + baseMaxOffset, voffset);
+				}
+			}
+			throw new IllegalArgumentException("Asking offset beyond limits"); //$NON-NLS-1$
+		}
+
+		@Override
+		public long getMaxOffset() {
+			return accSizes[accSizes.length - 1] + baseMaxOffset;
+		}
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
index d26b157..f485725 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
@@ -17,10 +17,13 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Queue;
 import java.util.Set;
 import java.util.TreeSet;
 
+import org.eclipse.jgit.annotations.Nullable;
+
 /**
  * Helper class to manipulate a list of packs with (maybe) midxs.
  **/
@@ -152,6 +155,51 @@ public Set<DfsPackFileMidx> findAllCoveringMidxs(
 		return impactedMidxs;
 	}
 
+	/**
+	 * Return the top midx of the chain in the repo
+	 *
+	 * <p>
+	 * In the unlikely case of multiple unconnected midxs, take the most recent.
+	 *
+	 * @return top midx
+	 */
+	public DfsPackFileMidx getTopMidxPack() {
+		List<DfsPackFileMidx> topLevelMidxs = packs.stream().filter(
+				p -> p.getPackDescription().hasFileExt(MULTI_PACK_INDEX))
+				.map(p -> (DfsPackFileMidx) p).toList();
+		if (topLevelMidxs.isEmpty()) {
+			return null;
+		}
+
+		if (topLevelMidxs.size() == 1) {
+			return topLevelMidxs.get(0);
+		}
+
+		Optional<DfsPackFileMidx> newest = topLevelMidxs.stream().max(Comparator
+				.comparingLong(p -> p.getPackDescription().getLastModified()));
+		return newest.orElse(null);
+	}
+
+	/**
+	 * Return all the plain packs not covered by this midx or its parents.
+	 *
+	 * @param midx
+	 *            a multipack index. Null midx returns all packs in db.
+	 * @return all the packs in the db that are not covered by this midx or its
+	 *         parents.
+	 */
+	public List<DfsPackFile> getPlainPacksNotCoveredBy(
+			@Nullable DfsPackFileMidx midx) {
+		if (midx == null) {
+			return getAllPlainPacks();
+		}
+		TreeSet<DfsPackFile> covered = asSet(midx.getAllCoveredPacks());
+		// We cannot just take "all packs that are not midx" from the list
+		// because this midx could be the middle in a chain.
+		return getAllPlainPacks().stream().filter(p -> !covered.contains(p))
+				.toList();
+	}
+
 	private static boolean containsAny(List<DfsPackFile> inMidx,
 			List<DfsPackFile> queryPacks) {
 		Set<DfsPackFile> inMidxSet = asSet(inMidx);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java
index 5f2015b..01f9a07 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java
@@ -189,7 +189,7 @@ private static PackExt getPackExt(String endsWithExtension) {
 				return ext;
 			}
 
-			if (endsWithExtension.equals("old-" + ext.getExtension())) {
+			if (endsWithExtension.equals("old-" + ext.getExtension())) { //$NON-NLS-1$
 				return ext;
 			}
 		}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
index 5584f13..4b5566e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackedBatchRefUpdate.java
@@ -172,7 +172,7 @@ public void execute(RevWalk walk, ProgressMonitor monitor,
 			}
 
 			packedRefsLock = refdb.lockPackedRefsOrThrow();
-			PackedRefList oldPackedList = refdb.refreshPackedRefs();
+			PackedRefList oldPackedList = refdb.getLockedPackedRefs(packedRefsLock);
 			RefList<Ref> newRefs = applyUpdates(walk, oldPackedList, pending);
 			if (newRefs == null) {
 				return;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
index a439f43..9c262e9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
@@ -720,7 +720,7 @@ void delete(RefDirectoryUpdate update) throws IOException {
 				PackedRefList packed = getPackedRefs();
 				if (packed.contains(name)) {
 					// Force update our packed-refs snapshot before writing
-					packed = refreshPackedRefs();
+					packed = getLockedPackedRefs(lck);
 					int idx = packed.find(name);
 					if (0 <= idx) {
 						commitPackedRefs(lck, packed.remove(idx), packed, true);
@@ -788,7 +788,7 @@ private void pack(Collection<String> refs,
 		try {
 			LockFile lck = lockPackedRefsOrThrow();
 			try {
-				PackedRefList oldPacked = refreshPackedRefs();
+				PackedRefList oldPacked = getLockedPackedRefs(lck);
 				RefList<Ref> newPacked = oldPacked;
 
 				// Iterate over all refs to be packed
@@ -971,6 +971,15 @@ else if (0 <= (idx = packed.find(dst.getName())))
 	}
 
 	PackedRefList getPackedRefs() throws IOException {
+		return refreshPackedRefsIfNeeded();
+	}
+
+	PackedRefList getLockedPackedRefs(LockFile packedRefsFileLock) throws IOException {
+		packedRefsFileLock.requireLock();
+		return refreshPackedRefsIfNeeded();
+	}
+
+	PackedRefList refreshPackedRefsIfNeeded() throws IOException {
 		PackedRefList curList = packedRefs.get();
 		if (!curList.shouldRefresh()) {
 			return curList;
@@ -985,23 +994,29 @@ private PackedRefsRefresher getPackedRefsRefresher(PackedRefList curList)
 			return refresher;
 		}
 		// This synchronized is NOT needed for correctness. Instead it is used
-		// as a throttling mechanism to ensure that only one "read" thread does
-		// the work to refresh the file. In order to avoid stalling writes which
-		// must already be serialized and tend to be a bottleneck,
-		// the refreshPackedRefs() need not be synchronized.
+		// as a mechanism to try to avoid parallel reads of the same file content
+		// since repeating work, even in parallel, hurts performance.
+		// Unfortunately, this approach can still lead to some unnecessary re-reads
+		// during the "racy" window of the snapshot timestamp.
 		synchronized (this) {
 			if (packedRefsRefresher.get() != refresher) {
 				refresher = packedRefsRefresher.get();
 				if (refresher != null) {
-					// Refresher now guaranteed to have been created after the
-					// current thread entered getPackedRefsRefresher(), even if
-					// it's currently out of date.
+					// Refresher now guaranteed to have not started refreshing until
+					// after the current thread entered getPackedRefsRefresher(),
+					// even if it's currently out of date. And if the packed-refs
+					// lock is held before calling this method, then it is also
+					// guaranteed to not be out-of date even during the "racy"
+					// window of the snapshot timestamp.
 					return refresher;
 				}
 			}
-			refresher = createPackedRefsRefresherAsLatest(curList);
+			refresher = new PackedRefsRefresher(curList);
+			packedRefsRefresher.set(refresher);
 		}
-		return runAndClear(refresher);
+		refresher.run();
+		packedRefsRefresher.compareAndSet(refresher, null);
+		return refresher;
 	}
 
 	private boolean shouldRefreshPackedRefs(FileSnapshot snapshot) throws IOException {
@@ -1027,23 +1042,6 @@ private boolean shouldRefreshPackedRefs(FileSnapshot snapshot) throws IOExceptio
 		return true;
 	}
 
-	PackedRefList refreshPackedRefs() throws IOException {
-		return runAndClear(createPackedRefsRefresherAsLatest(packedRefs.get()))
-				.getOrThrowIOException();
-	}
-
-	private PackedRefsRefresher createPackedRefsRefresherAsLatest(PackedRefList curList) {
-		PackedRefsRefresher refresher = new PackedRefsRefresher(curList);
-		packedRefsRefresher.set(refresher);
-		return refresher;
-	}
-
-	private PackedRefsRefresher runAndClear(PackedRefsRefresher refresher) {
-		refresher.run();
-		packedRefsRefresher.compareAndSet(refresher, null);
-		return refresher;
-	}
-
 	private PackedRefList refreshPackedRefs(PackedRefList curList)
 			throws IOException {
 		final PackedRefList newList = readPackedRefs();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java
index c9f0dec..5e9ac97 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java
@@ -375,7 +375,7 @@ receivedNonce, sentNonce(), db, stateless, nonceSlopLimit)
 			// Read push-option lines (if any) before the empty line separator
 			String line;
 			while (!(line = reader.read()).isEmpty()) {
-				if (line.startsWith(PUSH_OPTION + " ")) {
+				if (line.startsWith(PUSH_OPTION + " ")) { //$NON-NLS-1$
 					pushOptions.add(parseHeader(line, PUSH_OPTION));
 				} else {
 					// Not a push-option, should be empty line
diff --git a/pom.xml b/pom.xml
index 3f918c7..f84160c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>org.eclipse.jgit-parent</artifactId>
   <packaging>pom</packaging>
-  <version>7.5.0-SNAPSHOT</version>
+  <version>7.6.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
@@ -118,7 +118,7 @@
 
     <project.build.outputTimestamp>${commit.time.iso}</project.build.outputTimestamp>
 
-    <jgit-last-release-version>7.4.0.202509020913-r</jgit-last-release-version>
+    <jgit-last-release-version>7.5.0.202512021534-r</jgit-last-release-version>
     <ant-version>1.10.15</ant-version>
     <apache-sshd-version>2.16.0</apache-sshd-version>
     <jsch-version>0.1.55</jsch-version>
@@ -130,25 +130,25 @@
     <commons-compress-version>1.28.0</commons-compress-version>
     <osgi-core-version>6.0.0</osgi-core-version>
     <servlet-api-version>4.0.4</servlet-api-version>
-    <jetty-version>12.1.3</jetty-version>
-    <japicmp-version>0.24.1</japicmp-version>
+    <jetty-version>12.1.5</jetty-version>
+    <japicmp-version>0.24.2</japicmp-version>
     <httpclient-version>4.5.14</httpclient-version>
     <httpcore-version>4.4.16</httpcore-version>
     <slf4j-version>2.0.17</slf4j-version>
     <maven-javadoc-plugin-version>3.12.0</maven-javadoc-plugin-version>
     <gson-version>2.13.2</gson-version>
-    <bouncycastle-version>1.82</bouncycastle-version>
-    <spotbugs-maven-plugin-version>4.9.6.0</spotbugs-maven-plugin-version>
+    <bouncycastle-version>1.83</bouncycastle-version>
+    <spotbugs-maven-plugin-version>4.9.8.1</spotbugs-maven-plugin-version>
     <maven-project-info-reports-plugin-version>3.9.0</maven-project-info-reports-plugin-version>
     <maven-jxr-plugin-version>3.6.0</maven-jxr-plugin-version>
     <maven-surefire-plugin-version>3.5.4</maven-surefire-plugin-version>
     <maven-surefire-report-plugin-version>${maven-surefire-plugin-version}</maven-surefire-report-plugin-version>
     <maven-compiler-plugin-version>3.14.1</maven-compiler-plugin-version>
-    <plexus-compiler-version>2.13.0</plexus-compiler-version>
+    <plexus-compiler-version>2.16.0</plexus-compiler-version>
     <hamcrest-version>3.0</hamcrest-version>
     <assertj-version>3.27.6</assertj-version>
     <jna-version>5.18.1</jna-version>
-    <byte-buddy-version>1.17.8</byte-buddy-version>
+    <byte-buddy-version>1.18.2</byte-buddy-version>
 
     <!-- Properties to enable jacoco code coverage analysis -->
     <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
@@ -300,12 +300,12 @@
         <plugin>
           <groupId>org.eclipse.cbi.maven.plugins</groupId>
           <artifactId>eclipse-jarsigner-plugin</artifactId>
-          <version>1.5.2</version>
+          <version>1.5.3</version>
         </plugin>
         <plugin>
           <groupId>org.jacoco</groupId>
           <artifactId>jacoco-maven-plugin</artifactId>
-          <version>0.8.13</version>
+          <version>0.8.14</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -609,7 +609,7 @@
         <artifactId>cyclonedx-maven-plugin</artifactId>
         <configuration>
           <projectType>library</projectType>
-          <schemaVersion>1.4</schemaVersion>
+          <schemaVersion>1.6</schemaVersion>
           <includeBomSerialNumber>true</includeBomSerialNumber>
           <includeCompileScope>true</includeCompileScope>
           <includeProvidedScope>true</includeProvidedScope>
@@ -899,7 +899,7 @@
       <dependency>
         <groupId>commons-codec</groupId>
         <artifactId>commons-codec</artifactId>
-        <version>1.19.0</version>
+        <version>1.20.0</version>
       </dependency>
 
       <dependency>
@@ -911,7 +911,7 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-io</artifactId>
-        <version>2.20.0</version>
+        <version>2.21.0</version>
       </dependency>
 
       <dependency>
@@ -923,7 +923,7 @@
       <dependency>
         <groupId>org.tukaani</groupId>
         <artifactId>xz</artifactId>
-        <version>1.10</version>
+        <version>1.11</version>
         <optional>true</optional>
       </dependency>
 
@@ -1129,7 +1129,7 @@
               <dependency>
                 <groupId>org.eclipse.jdt</groupId>
                 <artifactId>ecj</artifactId>
-                <version>3.40.0</version>
+                <version>3.43.0</version>
               </dependency>
             </dependencies>
           </plugin>
diff --git a/tools/bazlets.bzl b/tools/bazlets.bzl
deleted file mode 100644
index f089af4..0000000
--- a/tools/bazlets.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
-        commit,
-        local_path = None):
-    if not local_path:
-        git_repository(
-            name = NAME,
-            remote = "https://gerrit.googlesource.com/bazlets",
-            commit = commit,
-        )
-    else:
-        native.local_repository(
-            name = NAME,
-            path = local_path,
-        )
diff --git a/tools/remote-bazelrc b/tools/remote-bazelrc
index f8aabd2..39797b8 100644
--- a/tools/remote-bazelrc
+++ b/tools/remote-bazelrc
@@ -30,11 +30,11 @@
 
 # Set several flags related to specifying the platform, toolchain and java
 # properties.
-build:remote --crosstool_top=@ubuntu2204_jdk17//cc:toolchain
-build:remote --extra_toolchains=@ubuntu2204_jdk17//config:cc-toolchain
-build:remote --extra_execution_platforms=@ubuntu2204_jdk17//config:platform
-build:remote --host_platform=@ubuntu2204_jdk17//config:platform
-build:remote --platforms=@ubuntu2204_jdk17//config:platform
+build:remote --crosstool_top=@rbe_autoconfig//cc:toolchain
+build:remote --extra_toolchains=@rbe_autoconfig//config:cc-toolchain
+build:remote --extra_execution_platforms=@rbe_autoconfig//config:platform
+build:remote --host_platform=@rbe_autoconfig//config:platform
+build:remote --platforms=@rbe_autoconfig//config:platform
 
 # Set various strategies so that all actions execute remotely. Mixing remote
 # and local execution will lead to errors unless the toolchain and remote