diff --git a/.gitattributes b/.gitattributes
index f57840b..70de594 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,14 @@
+* text=auto
+
+*.asc binary
+*.gif binary
+*.gitindex.dat binary
+*.key binary
+*.patch binary
+*.pdf binary
+*.png binary
+org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/** binary
+org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/** binary
+org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/util/io/** binary
+
 *.java diff=java
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000..402d077
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,61 @@
+name: Bug Report
+description: File a bug report.
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for taking the time to fill out this bug report!
+  - type: input
+    id: version
+    attributes:
+      label: Version
+      description: With what version(s) of Eclipse JGit do you observe the problem?
+      placeholder: a version, like 5.13.0 or 6.8.0
+    validations:
+      required: true
+  - type: dropdown
+    id: operatingSystem
+    attributes:
+      label: Operating System
+      description: On what Operating System(s) do you observe the problem?
+      multiple: true
+      options:
+        - "Linux/Unix"
+        - MacOS
+        - Windows
+    validations:
+      required: true
+  - type: textarea
+    id: description
+    attributes:
+      label: Bug description
+      description: Explain the buggy behavior, and how to reproduce it.
+    validations:
+      required: true
+  - type: textarea
+    id: actual
+    attributes:
+      label: Actual behavior
+      description: What happened?
+      placeholder: Enclose exception stack traces by backticks, or paste them in the "Relevant log output" field below.
+    validations:
+      required: true
+  - type: textarea
+    id: expected
+    attributes:
+      label: Expected behavior
+      description: What did you expect?
+    validations:
+      required: true
+  - type: textarea
+    id: logs
+    attributes:
+      label: Relevant log output
+      description: Please copy and paste any relevant log output or exception stack traces. This will be automatically formatted into code, so no need for backticks.
+      render: Shell
+  - type: textarea
+    id: other
+    attributes:
+      label: Other information
+      description: Any other relevant information.
+      placeholder: "For instance if you're reporting a cloning or fetching/pushing problem, what git server is used, and if the repository is public, what's its URL?"
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000..84a0122
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,32 @@
+name: Feature Request
+description: Suggest an enhancement or a new feature.
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for helping making Eclipse JGit better!
+  - type: textarea
+    id: description
+    attributes:
+      label: Description
+      description: What feature or enhancement you would like to have in Eclipse JGit?
+    validations:
+      required: true
+  - type: textarea
+    id: motivation
+    attributes:
+      label: Motivation
+      description: Explain the use case for the new feature.
+      placeholder: Explain why it would be good to have the new feature or enhancement. What problem would it solve?
+    validations:
+      required: true
+  - type: textarea
+    id: alternatives
+    attributes:
+      label: Alternatives considered
+      description: What alternatives did you consider? What work-around, if any, are you using currently?
+  - type: textarea
+    id: other
+    attributes:
+      label: Additional context
+      description: Any other information that may be relevant.
diff --git a/Documentation/config-options.md b/Documentation/config-options.md
index ec9d86b..78930e6 100644
--- a/Documentation/config-options.md
+++ b/Documentation/config-options.md
@@ -56,6 +56,7 @@
 | `core.symlinks` | Auto detect if filesystem supports symlinks| &#x2705; | If false, symbolic links are checked out as small plain files that contain the link text. |
 | `core.trustFolderStat` | `true` | &#x20DE; | Whether to trust the pack folder's, packed-refs file's and loose-objects folder's file attributes (Java equivalent of stat command on *nix). When looking for pack files, if `false` JGit will always scan the `.git/objects/pack` folder and if set to `true` it assumes that pack files are unchanged if the file attributes of the pack folder are unchanged. When getting the list of packed refs, if `false` JGit will always read the packed-refs file and if set to `true` it uses the file attributes of the packed-refs file and will only read it if a file attribute has changed. When looking for loose objects, if `false` and if a loose object is not found, JGit will open and close a stream to `.git/objects` folder (which can refresh its directory listing, at least on some NFS clients) and retry looking for that loose object. Setting this option to `false` can help to workaround caching issues on NFS, but reduces performance. |
 | `core.trustPackedRefsStat` | `unset` | &#x20DE; | Whether to trust the file attributes (Java equivalent of stat command on *nix) of the packed-refs file. If `never` JGit will ignore the file attributes of the packed-refs file and always read it. If `always` JGit will trust the file attributes of the packed-refs file and will only read it if a file attribute has changed. `after_open` behaves the same as `always`, except that the packed-refs file is opened and closed before its file attributes are considered. An open/close of the packed-refs file is known to refresh its file attributes, at least on some NFS clients. If `unset`, JGit will use the behavior described in `trustFolderStat`. |
+| `core.trustLooseRefStat` | `always` | &#x20DE; | Whether to trust the file attributes (Java equivalent of stat command on *nix) of the loose ref. If `always` JGit will trust the file attributes of the loose ref and its parent directories. `after_open` behaves similar to `always`, except that all parent directories of the loose ref up to the repository root are opened and closed before its file attributes are considered. An open/close of these parent directories is known to refresh the file attributes, at least on some NFS clients. |
 | `core.worktree` | Root directory of the working tree if it is not the parent directory of the `.git` directory | &#x2705; | The path to the root of the working tree. |
 
 ## __fetch__ options
@@ -77,6 +78,7 @@
 | `gc.pruneExpire` | `2.weeks.ago` | &#x2705; | Grace period after which unreachable objects will be pruned. |
 | `gc.prunePackExpire` | `1.hour.ago` |  &#x20DE; | Grace period after which packfiles only containing unreachable objects will be pruned. |
 | `gc.writeChangedPaths` | `false`| &#x20DE; | Whether bloom filter should be written to commit-graph during a gc operation. |
+| `gc.writeCommitGraph`| `false` | &#x20DE; | If true, then gc will rewrite the commit-graph file when jgit gc is run. |
 
 ## __http__ options
 
diff --git a/SECURITY.md b/SECURITY.md
index e6f57c6..468a1db 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -2,48 +2,41 @@
 _ISO 27005 defines vulnerability as:
  "A weakness of an asset or group of assets that can be exploited by one or more threats."_
 
-## The Eclipse Security Team
+## Reporting a Security Vulnerability
 
-The Eclipse Security Team provides help and advice to Eclipse projects
-on vulnerability issues and is the first point of contact
-for handling security vulnerabilities.
-Members of the Security Team are committers on Eclipse Projects
-and members of the Eclipse Architecture Council.
+Vulnerabilities can be reported either via
+[email to the Eclipse Security Team](security@eclipse-foundation.org)
+or using the
+[dedicated security issue tracker](https://gitlab.eclipse.org/security/vulnerability-reports/-/issues/new?issuable_template=new_vulnerability).
 
-Contact the [Eclipse Security Team](mailto:security@eclipse.org).
+## Additional Information
+
+**The Eclipse Foundation Security Team** provides help and advice to Eclipse Foundation projects on
+vulnerability issues and is the first point of contact for handling security vulnerabilities.
+Members of the Eclipse Foundation Security Team are selected amongs committers on Eclipse Projects,
+members of the Eclipse Architecture Council, and Eclipse Foundation staff.
+
+The general security mailing list address is security@eclipse-foundation.org. Members of the Eclipse
+Foundation Security Team will receive messages sent to this address. This address should be used
+only for reporting undisclosed vulnerabilities; regular issue reports and questions unrelated to
+vulnerabilities in Eclipse Foundation software will be ignored. Note that this email set to this
+address is not encrypted.
 
 **Note that, as a matter of policy, the security team does not open attachments.**
 
-## Reporting a Security Vulnerability
-
-Vulnerabilities can be reported either via email to the Eclipse Security Team
-or directly with a project via the Eclipse Foundation's Bugzilla instance.
-
-The general security mailing list address is security@eclipse.org.
-Members of the Eclipse Security Team will receive messages sent to this address.
-This address should be used only for reporting undisclosed vulnerabilities;
-regular issue reports and questions unrelated to vulnerabilities in Eclipse software
-will be ignored.
-Note that this email address is not encrypted.
-
 The community is also encouraged to report vulnerabilities using the
-[Eclipse Foundation's Bugzilla instance](https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&component=Vulnerability%20Reports&keywords=security&groups=Security_Advisories).
-Note that you will require an Eclipse Foundation account to create an issue report,
+[Eclipse Foundation’s issue tracker](https://gitlab.eclipse.org/security/vulnerability-reports/-/issues/new?issuable_template=new_vulnerability).
+Note that you will need an Eclipse Foundation account to create an issue report
+([create an account here if you do not have one](https://accounts.eclipse.org/user/register?destination=user)),
 but by doing so you will be able to participate directly in the resolution of the issue.
 
-Issue reports related to vulnerabilities must be marked as "committers-only",
-either automatically by clicking the provided link, by the reporter,
-or by a committer during the triage process.
-Note that issues marked "committers-only" are visible to all Eclipse committers.
-By default, a "committers-only" issue is also accessible to the reporter
-and individuals explicitly indicated in the "cc" list.
+Issue reports related to vulnerabilities must be marked as “confidential”, either automatically by
+clicking the provided link by the reporter, or by a committer during the triage process.
 
 ## Disclosure
 
-Disclosure is initially limited to the reporter and all Eclipse Committers,
-but is expanded to include other individuals, and the general public.
 The timing and manner of disclosure is governed by the
-[Eclipse Security Policy](https://www.eclipse.org/security/policy.php).
+[Eclipse Foundation Vulnerability Reporting Policy](https://www.eclipse.org/security/policy).
 
 Publicly disclosed issues are listed on the
-[Disclosed Vulnerabilities Page](https://www.eclipse.org/security/known.php).
\ No newline at end of file
+[Disclosed Vulnerabilities page](https://www.eclipse.org/security/known).
\ No newline at end of file
diff --git a/WORKSPACE b/WORKSPACE
index 71a27c2..21ebc72 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -90,30 +90,32 @@
     sha1 = "51cf043c87253c9f58b539c9f7e44c8894223850",
 )
 
-SSHD_VERS = "2.11.0"
+SSHD_VERS = "2.12.0"
 
 maven_jar(
     name = "sshd-osgi",
     artifact = "org.apache.sshd:sshd-osgi:" + SSHD_VERS,
-    sha1 = "7ec6b14ab789fc4b1ce9fdcd0e13d22b5c940e7b",
+    sha1 = "32b8de1cbb722ba75bdf9898e0c41d42af00ce57",
 )
 
 maven_jar(
     name = "sshd-sftp",
     artifact = "org.apache.sshd:sshd-sftp:" + SSHD_VERS,
-    sha1 = "3a293bba303c486a9ff6be8e11c9c68fd56b63c7",
+    sha1 = "0f96f00a07b186ea62838a6a4122e8f4cad44df6",
 )
 
+JNA_VERS = "5.14.0"
+
 maven_jar(
     name = "jna",
-    artifact = "net.java.dev.jna:jna:5.13.0",
-    sha1 = "1200e7ebeedbe0d10062093f32925a912020e747",
+    artifact = "net.java.dev.jna:jna:" + JNA_VERS,
+    sha1 = "67bf3eaea4f0718cb376a181a629e5f88fa1c9dd",
 )
 
 maven_jar(
     name = "jna-platform",
-    artifact = "net.java.dev.jna:jna-platform:5.13.0",
-    sha1 = "88e9a306715e9379f3122415ef4ae759a352640d",
+    artifact = "net.java.dev.jna:jna-platform:" + JNA_VERS,
+    sha1 = "28934d48aed814f11e4c584da55c49fa7032b31b",
 )
 
 maven_jar(
@@ -148,8 +150,14 @@
 
 maven_jar(
     name = "commons-compress",
-    artifact = "org.apache.commons:commons-compress:1.25.0",
-    sha1 = "9d35aec423da6c8a7f93d7e9e1c6b1d9fe14bb5e",
+    artifact = "org.apache.commons:commons-compress:1.26.0",
+    sha1 = "659feffdd12280201c8aacb8f7be94f9a883c824",
+)
+
+maven_jar(
+    name = "commons-io",
+    artifact = "commons-io:commons-io:2.15.1",
+    sha1 = "f11560da189ab563a5c8e351941415430e9304ea",
 )
 
 maven_jar(
@@ -178,28 +186,28 @@
 
 maven_jar(
     name = "mockito",
-    artifact = "org.mockito:mockito-core:5.7.0",
-    sha1 = "a1c258331ab91d66863c983aff7136357e9de056",
+    artifact = "org.mockito:mockito-core:5.10.0",
+    sha1 = "b3812fa2ee069f1d0b41c1c0155da79d0e1dcde0",
 )
 
 maven_jar(
     name = "assertj-core",
-    artifact = "org.assertj:assertj-core:3.24.2",
-    sha1 = "ebbf338e33f893139459ce5df023115971c2786f",
+    artifact = "org.assertj:assertj-core:3.25.3",
+    sha1 = "792b270e73aa1cfc28fa135be0b95e69ea451432",
 )
 
-BYTE_BUDDY_VERSION = "1.14.8"
+BYTE_BUDDY_VERSION = "1.14.12"
 
 maven_jar(
     name = "bytebuddy",
     artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
-    sha1 = "505d7d8937ff00cc55db79723e26c94069b87d66",
+    sha1 = "6e37f743dc15a8d7a4feb3eb0025cbc612d5b9e1",
 )
 
 maven_jar(
     name = "bytebuddy-agent",
     artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
-    sha1 = "ae6ebe485f3bcd0a1e20241488a32e6400a501ef",
+    sha1 = "be4984cb6fd1ef1d11f218a648889dfda44b8a15",
 )
 
 maven_jar(
@@ -214,55 +222,55 @@
     sha1 = "b3add478d4382b78ea20b1671390a858002feb6c",
 )
 
-JETTY_VER = "10.0.18"
+JETTY_VER = "10.0.20"
 
 maven_jar(
     name = "jetty-servlet",
     artifact = "org.eclipse.jetty:jetty-servlet:" + JETTY_VER,
-    sha1 = "cc0acde71a3b04db8fcde2ad60a00dfd4effab23",
-    src_sha1 = "b038debaa2c0c4674fa1bc6e96bcf8bf283be0e8",
+    sha1 = "e3661d28d5f2e2185fb085ce5560b2969e8f7c1e",
+    src_sha1 = "23b97219833769e3e69a071abab3811f49077e2e",
 )
 
 maven_jar(
     name = "jetty-security",
     artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VER,
-    sha1 = "399601ef4e649b3be6f9fd6176b208914f9fd171",
-    src_sha1 = "b203e58304afe23d8820af6abe3ca39696fe7530",
+    sha1 = "f082f9198038e4781ff4cdf4d32db9f90fa8f38a",
+    src_sha1 = "a1acb8cb40bd495ba67562cb342f371425dba47b",
 )
 
 maven_jar(
     name = "jetty-server",
     artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VER,
-    sha1 = "b59b7df009bbb85be455e42524e9a11944fb3ba1",
-    src_sha1 = "d45709036a573843cd57daeb3112f00f8bf4f753",
+    sha1 = "66deea078236e21ae9dd7443716b7642766526aa",
+    src_sha1 = "e2ddea07b6c85dbc7cf078e408f68d69e504b33c",
 )
 
 maven_jar(
     name = "jetty-http",
     artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VER,
-    sha1 = "9b7f2b580bdcf2a9c27168eac58276c7e6e99ccf",
-    src_sha1 = "4bbede666e912c8abb60c04022b84225fe9ce369",
+    sha1 = "d76bf933db81e9f530f1e59f1858bceddb7c4a43",
+    src_sha1 = "5fd939e4e5000ac76eb686e68e978747802c8a5f",
 )
 
 maven_jar(
     name = "jetty-io",
     artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VER,
-    sha1 = "a622527216b27f72744daf849aa2fa0c6f3db131",
-    src_sha1 = "402c5aa958a734576f13898e63f7ca7f73360b76",
+    sha1 = "269cea7949f739e41707f3d574782c9f227fe188",
+    src_sha1 = "1d30687503a0256da23706e1ebf597658d8c0011",
 )
 
 maven_jar(
     name = "jetty-util",
     artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VER,
-    sha1 = "1ee6a71c2249d5596ba578f015121c99b2b7591a",
-    src_sha1 = "cbba373f654f22e0f0c10c02938e2df8ec2f0fd3",
+    sha1 = "c628108266e75f17dffee34191b74a696fe21746",
+    src_sha1 = "63c17b20a8ca5c3bc1740bd807ad446f842749b4",
 )
 
 maven_jar(
     name = "jetty-util-ajax",
     artifact = "org.eclipse.jetty:jetty-util-ajax:" + JETTY_VER,
-    sha1 = "3560c8a15f920e24daf8ad4196e23ec21610f7d6",
-    src_sha1 = "4b4966b125c586795e425b7b561bcd5b223d6617",
+    sha1 = "049dcc0ad4190786e17389b257195fe936ed3d27",
+    src_sha1 = "b012c053d25d902cc64a5c4432a8eedab3241d94",
 )
 
 BOUNCYCASTLE_VER = "1.77"
diff --git a/lib/BUILD b/lib/BUILD
index 29669b5..8806217 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -20,6 +20,16 @@
 )
 
 java_library(
+    name = "commons-io",
+    visibility = [
+        "//org.eclipse.jgit.archive:__pkg__",
+        "//org.eclipse.jgit.pgm.test:__pkg__",
+        "//org.eclipse.jgit.test:__pkg__",
+    ],
+    exports = ["@commons-io//jar"],
+)
+
+java_library(
     name = "commons-codec",
     visibility = [
         "//org.eclipse.jgit:__pkg__",
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 849da13..44cf7b0 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -5,13 +5,13 @@
 Automatic-Module-Name: org.eclipse.jgit.ant.test
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.ant.tasks;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.hamcrest.core;version="[1.1.0,3.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 26b4268..f4049af 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 54ea3d5..7d416da 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ant
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)"
+  org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)"
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="6.8.1",
- org.eclipse.jgit.ant.tasks;version="6.8.1";
+Export-Package: org.eclipse.jgit.ant;version="6.9.1",
+ org.eclipse.jgit.ant.tasks;version="6.9.1";
   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 856c782..1ec6d78 100644
--- a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ant - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ant.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 387dc1a..6639067 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant</artifactId>
diff --git a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
index 74d38d8..ec7df3c 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -13,17 +13,17 @@
  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="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="6.8.1";
+Export-Package: org.eclipse.jgit.archive;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.api,
    org.apache.commons.compress.archivers,
    org.osgi.framework",
- org.eclipse.jgit.archive.internal;version="6.8.1";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="6.9.1";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 441cbf6..f816946 100644
--- a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.archive - Sources
 Bundle-SymbolicName: org.eclipse.jgit.archive.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 0705e5f..ed2a64c 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 56c6c4c..614f346 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.benchmarks</artifactId>
@@ -60,7 +60,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>3.3.0</version>
         <executions>
           <execution>
             <id>enforce-maven</id>
@@ -80,7 +79,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.11.0</version>
+        <version>${maven-compiler-plugin-version}</version>
         <configuration>
           <encoding>UTF-8</encoding>
           <release>${java.version}</release>
@@ -117,7 +116,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
-        <version>3.4.1</version>
         <executions>
           <execution>
             <phase>package</phase>
@@ -203,7 +201,6 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>4.0.0-M9</version>
           <dependencies>
             <dependency><!-- add support for ssh/scp -->
               <groupId>org.apache.maven.wagon</groupId>
@@ -215,17 +212,16 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-report-plugin</artifactId>
-          <version>3.0.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jxr-plugin</artifactId>
-          <version>3.3.0</version>
+          <version>${maven-jxr-plugin-version}</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-project-info-reports-plugin</artifactId>
-          <version>3.4.3</version>
+          <version>${maven-project-info-reports-plugin-version}</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index 0718c34..8c97734 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,88 +27,88 @@
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.archive</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.apache</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.server</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ui</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
-      <version>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-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 cae7b85..ba4acf1 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -13,9 +13,9 @@
  org.bouncycastle.openpgp.operator;version="[1.65.0,2.0.0)",
  org.bouncycastle.openpgp.operator.jcajce;version="[1.65.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.65.0,2.0.0)",
- org.eclipse.jgit.gpg.bc.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.gpg.bc.internal.keys;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.sha1;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.gpg.bc.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.sha1;version="[6.9.1,6.10.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)"
diff --git a/org.eclipse.jgit.gpg.bc.test/pom.xml b/org.eclipse.jgit.gpg.bc.test/pom.xml
index 0078381..d62beda 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 e5ba18a..d27c9de 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="[6.8.1,6.9.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.9.1,6.10.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/gpg_bc
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.bouncycastle.asn1;version="[1.69.0,2.0.0)",
  org.bouncycastle.asn1.cryptlib;version="[1.69.0,2.0.0)",
@@ -29,9 +29,9 @@
  org.bouncycastle.util;version="[1.69.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.69.0,2.0.0)",
  org.bouncycastle.util.io;version="[1.69.0,2.0.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.gpg.bc;version="6.8.1",
- org.eclipse.jgit.gpg.bc.internal;version="6.8.1";x-friends:="org.eclipse.jgit.gpg.bc.test",
- org.eclipse.jgit.gpg.bc.internal.keys;version="6.8.1";x-friends:="org.eclipse.jgit.gpg.bc.test"
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.slf4j;version="[1.7.0,3.0.0)"
+Export-Package: org.eclipse.jgit.gpg.bc;version="6.9.1",
+ org.eclipse.jgit.gpg.bc.internal;version="6.9.1";x-friends:="org.eclipse.jgit.gpg.bc.test",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="6.9.1";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 29c6a18..2e1149a 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.gpg.bc - Sources
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.gpg.bc/pom.xml b/org.eclipse.jgit.gpg.bc/pom.xml
index 5088657..191a6cf 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgSignatureVerifier.java b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgSignatureVerifier.java
index 7161895..f4fed40 100644
--- a/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgSignatureVerifier.java
+++ b/org.eclipse.jgit.gpg.bc/src/org/eclipse/jgit/gpg/bc/internal/BouncyCastleGpgSignatureVerifier.java
@@ -15,7 +15,6 @@
 import java.security.Security;
 import java.text.MessageFormat;
 import java.time.Instant;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Locale;
@@ -33,21 +32,18 @@
 import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider;
 import org.bouncycastle.util.encoders.Hex;
 import org.eclipse.jgit.annotations.NonNull;
-import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.api.errors.JGitInternalException;
+import org.eclipse.jgit.lib.AbstractGpgSignatureVerifier;
 import org.eclipse.jgit.lib.GpgConfig;
 import org.eclipse.jgit.lib.GpgSignatureVerifier;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.revwalk.RevObject;
-import org.eclipse.jgit.revwalk.RevTag;
 import org.eclipse.jgit.util.LRUMap;
-import org.eclipse.jgit.util.RawParseUtils;
 import org.eclipse.jgit.util.StringUtils;
 
 /**
  * A {@link GpgSignatureVerifier} to verify GPG signatures using BouncyCastle.
  */
-public class BouncyCastleGpgSignatureVerifier implements GpgSignatureVerifier {
+public class BouncyCastleGpgSignatureVerifier
+		extends AbstractGpgSignatureVerifier {
 
 	private static void registerBouncyCastleProviderIfNecessary() {
 		if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
@@ -77,50 +73,6 @@ public String getName() {
 		return "bc"; //$NON-NLS-1$
 	}
 
-	@Override
-	@Nullable
-	public SignatureVerification verifySignature(@NonNull RevObject object,
-			@NonNull GpgConfig config) throws IOException {
-		if (object instanceof RevCommit) {
-			RevCommit commit = (RevCommit) object;
-			byte[] signatureData = commit.getRawGpgSignature();
-			if (signatureData == null) {
-				return null;
-			}
-			byte[] raw = commit.getRawBuffer();
-			// Now remove the GPG signature
-			byte[] header = { 'g', 'p', 'g', 's', 'i', 'g' };
-			int start = RawParseUtils.headerStart(header, raw, 0);
-			if (start < 0) {
-				return null;
-			}
-			int end = RawParseUtils.headerEnd(raw, start);
-			// start is at the beginning of the header's content
-			start -= header.length + 1;
-			// end is on the terminating LF; we need to skip that, too
-			if (end < raw.length) {
-				end++;
-			}
-			byte[] data = new byte[raw.length - (end - start)];
-			System.arraycopy(raw, 0, data, 0, start);
-			System.arraycopy(raw, end, data, start, raw.length - end);
-			return verify(data, signatureData);
-		} else if (object instanceof RevTag) {
-			RevTag tag = (RevTag) object;
-			byte[] signatureData = tag.getRawGpgSignature();
-			if (signatureData == null) {
-				return null;
-			}
-			byte[] raw = tag.getRawBuffer();
-			// The signature is just tacked onto the end of the message, which
-			// is last in the buffer.
-			byte[] data = Arrays.copyOfRange(raw, 0,
-					raw.length - signatureData.length);
-			return verify(data, signatureData);
-		}
-		return null;
-	}
-
 	static PGPSignature parseSignature(InputStream in)
 			throws IOException, PGPException {
 		try (InputStream sigIn = PGPUtil.getDecoderStream(in)) {
@@ -138,7 +90,8 @@ static PGPSignature parseSignature(InputStream in)
 	}
 
 	@Override
-	public SignatureVerification verify(byte[] data, byte[] signatureData)
+	public SignatureVerification verify(@NonNull GpgConfig config, byte[] data,
+			byte[] signatureData)
 			throws IOException {
 		PGPSignature signature = null;
 		String fingerprint = null;
@@ -280,6 +233,13 @@ public SignatureVerification verify(byte[] data, byte[] signatureData)
 				verified, expired, trust, null);
 	}
 
+	@Override
+	public SignatureVerification verify(byte[] data, byte[] signatureData)
+			throws IOException {
+		throw new UnsupportedOperationException(
+				"Call verify(GpgConfig, byte[], byte[]) instead."); //$NON-NLS-1$
+	}
+
 	private TrustLevel parseGpgTrustPacket(byte[] packet) {
 		if (packet == null || packet.length < 6) {
 			// A GPG trust packet has at least 6 bytes.
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index b2dcb68..82e6a04 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -3,12 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.apache
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
-Import-Package: org.apache.http;version="[4.3.0,5.0.0)",
+Import-Package: javax.net.ssl,
+ org.apache.http;version="[4.3.0,5.0.0)",
  org.apache.http.client;version="[4.4.0,5.0.0)",
  org.apache.http.client.config;version="[4.4.0,5.0.0)",
  org.apache.http.client.methods;version="[4.4.0,5.0.0)",
@@ -25,11 +26,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="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="6.8.1";
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="6.9.1";
   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 296d4b7..db19ed1 100644
--- a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.http.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index b45a95d..0353fdf 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.apache</artifactId>
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index de0d61a..fb8e105 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.http.server;version="6.8.1",
- org.eclipse.jgit.http.server.glue;version="6.8.1";
+Export-Package: org.eclipse.jgit.http.server;version="6.9.1",
+ org.eclipse.jgit.http.server.glue;version="6.9.1";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="6.8.1";
+ org.eclipse.jgit.http.server.resolver;version="6.9.1";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -18,14 +18,14 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
  javax.servlet.http;version="[2.5.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.resolver;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)"
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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 741f9f2..b765631 100644
--- a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.http.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index e819792..3637292 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.http.test/.settings/org.eclipse.core.resources.prefs
index ceaec82..4e2aba5 100644
--- a/org.eclipse.jgit.http.test/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.http.test/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:29 CEST 2010
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+#Fri Jun 18 23:33:29 CEST 2010
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index e86cee8..cc84aac 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -28,26 +28,26 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.http.server;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.http.server.glue;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.http.server.resolver;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.resolver;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.http.server;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.http.server.glue;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.http.server.resolver;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index ce8c4c1..eba5578 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index 33a37ad..533f170 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -21,17 +21,17 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.ssl;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.http.server;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.resolver;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.http.server;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.9.1,6.10.0)",
  org.junit;version="[4.13,5.0.0)",
- org.slf4j.helpers;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="6.8.1";
+ org.slf4j.helpers;version="[1.7.0,3.0.0)"
+Export-Package: org.eclipse.jgit.junit.http;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.junit,
    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 7d25044..2da4567 100644
--- a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit.http - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.http.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 63fe58d..e6206e2 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 cc6afda..e7f8972 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -3,46 +3,46 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.ssh
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.apache.sshd.common;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.file.virtualfs;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.helpers;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.io;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.kex;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.keyprovider;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.session;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.signature;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.buffer;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.logging;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.security;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.threads;version="[2.11.0,2.12.0)",
- org.apache.sshd.core;version="[2.11.0,2.12.0)",
- org.apache.sshd.server;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.auth;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.auth.gss;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.auth.keyboard;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.auth.password;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.command;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.session;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.shell;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.subsystem;version="[2.11.0,2.12.0)",
- org.apache.sshd.sftp;version="[2.11.0,2.12.0)",
- org.apache.sshd.sftp.server;version="[2.11.0,2.12.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+Import-Package: org.apache.sshd.common;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.file.virtualfs;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.helpers;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.io;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.kex;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.keyprovider;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.session;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.signature;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.buffer;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.logging;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.security;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.threads;version="[2.12.0,2.13.0)",
+ org.apache.sshd.core;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.auth;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.auth.gss;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.auth.keyboard;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.auth.password;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.command;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.session;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.shell;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.subsystem;version="[2.12.0,2.13.0)",
+ org.apache.sshd.sftp;version="[2.12.0,2.13.0)",
+ org.apache.sshd.sftp.server;version="[2.12.0,2.13.0)",
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="6.8.1"
+ org.slf4j;version="[1.7.0,3.0.0)"
+Export-Package: org.eclipse.jgit.junit.ssh;version="6.9.1"
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 5bbf815..24e31eb 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit.ssh - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 0b760f5..7cf78c3 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 c4950f9..bd87460 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,36 +3,36 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.dircache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.merge;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="6.8.1",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.time;version="[6.8.1,6.9.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.dircache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.merge;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="6.9.1",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.time;version="[6.9.1,6.10.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,2.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="6.8.1";
+ org.slf4j;version="[1.7.0,3.0.0)"
+Export-Package: org.eclipse.jgit.junit;version="6.9.1";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -45,4 +45,4 @@
    org.junit.runners.model,
    org.junit.runner,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.junit.time;version="6.8.1";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="6.9.1";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 7e2bbd0..52fc544 100644
--- a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 606a5a6..1638238 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.lfs.server.test/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.lfs.server.test/.settings/org.eclipse.core.resources.prefs
index 4824b80..99f26c0 100644
--- a/org.eclipse.jgit.lfs.server.test/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.lfs.server.test/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,2 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
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 d665852..266d9bb 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -26,24 +26,24 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.server;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.test;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.server;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.test;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.hamcrest.core;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.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index 11e3706..53ee569 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
index 5ad3cc1..f3a5028 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs.server;version="6.8.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="6.9.1";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="6.8.1";
+ org.eclipse.jgit.lfs.server.fs;version="6.9.1";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="6.8.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="6.8.1";
+ org.eclipse.jgit.lfs.server.internal;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="6.9.1";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -24,15 +24,15 @@
  javax.servlet.annotation;version="[3.1.0,5.0.0)",
  javax.servlet.http;version="[3.1.0,5.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.slf4j;version="[1.7.0,2.0.0)"
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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 03c3d46..4a869dd 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.lfs.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index f7cd017..b1eca71 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.test/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.lfs.test/.settings/org.eclipse.core.resources.prefs
index 4824b80..99f26c0 100644
--- a/org.eclipse.jgit.lfs.test/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.lfs.test/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,2 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index 939eb27..4ea3ccb 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,27 +3,27 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.attributes;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.attributes;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.hamcrest.core;version="[1.1.0,3.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="6.8.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="6.9.1";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 a0d8aa1f..667335a 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 4654b2d..442a87c 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,32 +3,32 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs;version="6.8.1",
- org.eclipse.jgit.lfs.errors;version="6.8.1",
- org.eclipse.jgit.lfs.internal;version="6.8.1";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
- org.eclipse.jgit.lfs.lib;version="6.8.1"
+Export-Package: org.eclipse.jgit.lfs;version="6.9.1",
+ org.eclipse.jgit.lfs.errors;version="6.9.1",
+ org.eclipse.jgit.lfs.internal;version="6.9.1";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
+ org.eclipse.jgit.lfs.lib;version="6.9.1"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 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="[6.8.1,6.9.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.attributes;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.diff;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.dircache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.hooks;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)"
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.attributes;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.diff;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.dircache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.hooks;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index 605b52c..ad93a57 100644
--- a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.lfs - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index 79c36d4..1dd81e0 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 f443178..53a6d97 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="6.8.1.qualifier"
+      version="6.9.1.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 e3030b8..a8df8d3 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 b67b91e..e12bace 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.9.1" 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 d5aea23..47b6cb2 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 05798c3..fa9758c 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.9.1" 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 f1999d7..7edde81 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.resources.prefs
index f6d7cf3..a666abd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:08 CEST 2010
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+#Fri Jun 18 23:33:08 CEST 2010
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.runtime.prefs
index 039a33c..61f6762 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.runtime.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:08 CEST 2010
-eclipse.preferences.version=1
-line.separator=\n
+#Fri Jun 18 23:33:08 CEST 2010
+eclipse.preferences.version=1
+line.separator=\n
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 321f233..58e0de9 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="6.8.1.qualifier"
+      version="6.9.1.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="6.8.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.9.1" 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 47cdfb8..46f3650 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 0ece0d0..09d8975 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.9.1" 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 725ae80..4273207 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.resources.prefs
index 6f96ce8..14bdc2c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:45 CEST 2010
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+#Fri Jun 18 23:33:45 CEST 2010
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.runtime.prefs
index 1a32dba..898252b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.runtime.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:45 CEST 2010
-eclipse.preferences.version=1
-line.separator=\n
+#Fri Jun 18 23:33:45 CEST 2010
+eclipse.preferences.version=1
+line.separator=\n
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 facc8af..ad85f8e 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="6.8.1.qualifier"
+      version="6.9.1.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="6.8.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="6.8.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.ssh.apache" version="6.8.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.9.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="6.9.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit.ssh.apache" version="6.9.1" 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 0474e37..041fac1 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 6b0febb..58f47b0 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.repository</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.resources.prefs
index 6f96ce8..14bdc2c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:45 CEST 2010
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+#Fri Jun 18 23:33:45 CEST 2010
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.runtime.prefs
index 1a32dba..898252b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.runtime.prefs
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,3 @@
-#Fri Jun 18 23:33:45 CEST 2010
-eclipse.preferences.version=1
-line.separator=\n
+#Fri Jun 18 23:33:45 CEST 2010
+eclipse.preferences.version=1
+line.separator=\n
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 f75dde9..c94d25e 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.9.1" 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 9ec3f88..a962942 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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>6.8.1-SNAPSHOT</version>
+      <version>6.9.1-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 cae8d09..b1e6e9d 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.9.1" 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 323e4fd..361a31e 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 12e8e41..5856a21 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="6.8.1.qualifier"
+      version="6.9.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.8.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.9.1" 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 d3d8b80..d1ed898 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
deleted file mode 100644
index 7017b9e..0000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: JGit Target Platform Bundle
-Bundle-SymbolicName: org.eclipse.jgit.target
-Bundle-Version: 6.8.1.qualifier
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target
index 4879c3a..cf278d8 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.17.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.17" sequenceNumber="1701211970">
+<target name="jgit-4.17" sequenceNumber="1708457973">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target
index 62b6743..c7fdb83 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.18.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.18" sequenceNumber="1701211970">
+<target name="jgit-4.18" sequenceNumber="1708457973">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target
index 269334b..b3f4165 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.19.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.19-staging" sequenceNumber="1701211970">
+<target name="jgit-4.19-staging" sequenceNumber="1708457973">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target
index dab00e8..55b6281 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.20.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.20" sequenceNumber="1701211970">
+<target name="jgit-4.20" sequenceNumber="1708457973">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target
index 2c9689f..45136a7 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.21.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.21" sequenceNumber="1701211970">
+<target name="jgit-4.21" sequenceNumber="1708457973">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target
index adf6fb1..7fe3b68 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.22.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.22" sequenceNumber="1701211970">
+<target name="jgit-4.22" sequenceNumber="1708457972">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target
index 5907d7f..e0786fd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.23.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.23" sequenceNumber="1701211970">
+<target name="jgit-4.23" sequenceNumber="1708457972">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target
index 9df673c..4656b56 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.24.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.24" sequenceNumber="1701211970">
+<target name="jgit-4.24" sequenceNumber="1708457972">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target
index d9c55b6..efa79b3 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.25.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.25" sequenceNumber="1701211970">
+<target name="jgit-4.25" sequenceNumber="1708457972">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target
index 02fa46f..a432bbb 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.26.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.26" sequenceNumber="1701211970">
+<target name="jgit-4.26" sequenceNumber="1708457970">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target
index 3579da4..4b91238 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.27.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.27" sequenceNumber="1701211970">
+<target name="jgit-4.27" sequenceNumber="1708457970">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target
index 1900424..7dc8dd8 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.28.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.28" sequenceNumber="1701211970">
+<target name="jgit-4.28" sequenceNumber="1708457970">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target
index 8c7c1ac..d86ea28 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.29.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.29" sequenceNumber="1701211970">
+<target name="jgit-4.29" sequenceNumber="1708457970">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.30.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.30.target
index 8fbc567..afd4d32 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.30.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.30.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.30" sequenceNumber="1701211970">
+<target name="jgit-4.30" sequenceNumber="1708457970">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -63,13 +63,13 @@
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-osgi</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.apache.sshd</groupId>
     		<artifactId>sshd-sftp</artifactId>
-    		<version>2.11.0</version>
+    		<version>2.12.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -79,7 +79,7 @@
     	<dependency>
     		<groupId>org.mockito</groupId>
     		<artifactId>mockito-core</artifactId>
-    		<version>5.7.0</version>
+    		<version>5.10.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -89,13 +89,13 @@
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.java.dev.jna</groupId>
     		<artifactId>jna-platform</artifactId>
-    		<version>5.13.0</version>
+    		<version>5.14.0</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -105,43 +105,43 @@
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-http</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-io</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-security</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-server</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-servlet</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>org.eclipse.jetty</groupId>
     		<artifactId>jetty-util-ajax</artifactId>
-    		<version>10.0.18</version>
+    		<version>10.0.20</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
@@ -187,13 +187,13 @@
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
     		<groupId>net.bytebuddy</groupId>
     		<artifactId>byte-buddy-agent</artifactId>
-    		<version>1.14.9</version>
+    		<version>1.14.12</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -231,7 +231,7 @@
     	<dependency>
     		<groupId>org.assertj</groupId>
     		<artifactId>assertj-core</artifactId>
-    		<version>3.24.2</version>
+    		<version>3.25.3</version>
     		<type>jar</type>
     	</dependency>
     </dependencies>
@@ -257,7 +257,13 @@
     	<dependency>
     		<groupId>org.apache.commons</groupId>
     		<artifactId>commons-compress</artifactId>
-    		<version>1.25.0</version>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
     		<type>jar</type>
     	</dependency>
     	<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.target
new file mode 100644
index 0000000..d95197a
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.target
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="jgit-4.31" sequenceNumber="1708457970">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
+      <unit id="com.jcraft.jsch.source" version="0.1.55.v20230916-1400"/>
+      <unit id="com.jcraft.jzlib" version="1.1.3.v20230916-1400"/>
+      <unit id="com.jcraft.jzlib.source" version="1.1.3.v20230916-1400"/>
+      <unit id="net.i2p.crypto.eddsa" version="0.3.0"/>
+      <unit id="net.i2p.crypto.eddsa.source" version="0.3.0"/>
+      <unit id="org.apache.ant" version="1.10.14.v20230922-1200"/>
+      <unit id="org.apache.ant.source" version="1.10.14.v20230922-1200"/>
+      <unit id="org.apache.httpcomponents.httpclient" version="4.5.14"/>
+      <unit id="org.apache.httpcomponents.httpclient.source" version="4.5.14"/>
+      <unit id="org.apache.httpcomponents.httpcore" version="4.4.16"/>
+      <unit id="org.apache.httpcomponents.httpcore.source" version="4.4.16"/>
+      <unit id="org.hamcrest.core" version="1.3.0.v20230809-1000"/>
+      <unit id="org.hamcrest.core.source" version="1.3.0.v20230809-1000"/>
+      <unit id="org.hamcrest.library" version="1.3.0.v20230809-1000"/>
+      <unit id="org.hamcrest.library.source" version="1.3.0.v20230809-1000"/>
+      <unit id="org.junit" version="4.13.2.v20230809-1000"/>
+      <unit id="org.junit.source" version="4.13.2.v20230809-1000"/>
+      <unit id="org.objenesis" version="3.3.0"/>
+      <unit id="org.objenesis.source" version="3.3.0"/>
+      <unit id="org.osgi.service.cm" version="1.6.1.202109301733"/>
+      <unit id="org.osgi.service.cm.source" version="1.6.1.202109301733"/>
+      <repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2023-12"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.osgi" version="0.0.0"/>
+      <repository location="https://download.eclipse.org/staging/2024-03/"/>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="xz">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.tukaani</groupId>
+    		<artifactId>xz</artifactId>
+    		<version>1.9</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="slf4j">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.slf4j</groupId>
+    		<artifactId>slf4j-api</artifactId>
+    		<version>1.7.36</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.slf4j</groupId>
+    		<artifactId>slf4j-simple</artifactId>
+    		<version>1.7.36</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="sshd">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.apache.sshd</groupId>
+    		<artifactId>sshd-osgi</artifactId>
+    		<version>2.12.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.apache.sshd</groupId>
+    		<artifactId>sshd-sftp</artifactId>
+    		<version>2.12.0</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="mockito">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.mockito</groupId>
+    		<artifactId>mockito-core</artifactId>
+    		<version>5.10.0</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jna">
+    <dependencies>
+    	<dependency>
+    		<groupId>net.java.dev.jna</groupId>
+    		<artifactId>jna</artifactId>
+    		<version>5.14.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>net.java.dev.jna</groupId>
+    		<artifactId>jna-platform</artifactId>
+    		<version>5.14.0</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="jetty">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-http</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-io</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-security</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-server</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-servlet</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-util</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.eclipse.jetty</groupId>
+    		<artifactId>jetty-util-ajax</artifactId>
+    		<version>10.0.20</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>jakarta.servlet</groupId>
+    		<artifactId>jakarta.servlet-api</artifactId>
+    		<version>4.0.4</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="javaewah">
+    <dependencies>
+    	<dependency>
+    		<groupId>com.googlecode.javaewah</groupId>
+    		<artifactId>JavaEWAH</artifactId>
+    		<version>1.2.3</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="hamcrest">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.hamcrest</groupId>
+    		<artifactId>hamcrest</artifactId>
+    		<version>2.2</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="gson">
+    <dependencies>
+    	<dependency>
+    		<groupId>com.google.code.gson</groupId>
+    		<artifactId>gson</artifactId>
+    		<version>2.10.1</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bytebuddy">
+    <dependencies>
+    	<dependency>
+    		<groupId>net.bytebuddy</groupId>
+    		<artifactId>byte-buddy</artifactId>
+    		<version>1.14.12</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>net.bytebuddy</groupId>
+    		<artifactId>byte-buddy-agent</artifactId>
+    		<version>1.14.12</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="bouncycastle">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.bouncycastle</groupId>
+    		<artifactId>bcpg-jdk18on</artifactId>
+    		<version>1.77</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.bouncycastle</groupId>
+    		<artifactId>bcprov-jdk18on</artifactId>
+    		<version>1.77</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.bouncycastle</groupId>
+    		<artifactId>bcpkix-jdk18on</artifactId>
+    		<version>1.77</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.bouncycastle</groupId>
+    		<artifactId>bcutil-jdk18on</artifactId>
+    		<version>1.77</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="assertj">
+    <dependencies>
+    	<dependency>
+    		<groupId>org.assertj</groupId>
+    		<artifactId>assertj-core</artifactId>
+    		<version>3.25.3</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="args4j">
+    <dependencies>
+    	<dependency>
+    		<groupId>args4j</groupId>
+    		<artifactId>args4j</artifactId>
+    		<version>2.33</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+    <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven" label="apache">
+    <dependencies>
+    	<dependency>
+    		<groupId>commons-codec</groupId>
+    		<artifactId>commons-codec</artifactId>
+    		<version>1.16.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>org.apache.commons</groupId>
+    		<artifactId>commons-compress</artifactId>
+    		<version>1.26.0</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-io</groupId>
+    		<artifactId>commons-io</artifactId>
+    		<version>2.15.1</version>
+    		<type>jar</type>
+    	</dependency>
+    	<dependency>
+    		<groupId>commons-logging</groupId>
+    		<artifactId>commons-logging</artifactId>
+    		<version>1.2</version>
+    		<type>jar</type>
+    	</dependency>
+    </dependencies>
+    </location>
+  </locations>
+</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.tpd
new file mode 100644
index 0000000..58491c8
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.31.tpd
@@ -0,0 +1,8 @@
+target "jgit-4.31" with source configurePhase
+
+include "orbit/orbit-4.31.tpd"
+include "maven/dependencies.tpd"
+
+location "https://download.eclipse.org/staging/2024-03/" {
+	org.eclipse.osgi lazy
+}
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 10d707f..8347389 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
@@ -15,7 +15,12 @@
 	dependency {
 		groupId = "org.apache.commons"
 		artifactId = "commons-compress"
-		version = "1.25.0"
+		version = "1.26.0"
+	}
+	dependency {
+		groupId = "commons-io"
+		artifactId = "commons-io"
+		version = "2.15.1"
 	}
 	dependency {
 		groupId = "commons-logging"
@@ -46,7 +51,7 @@
 	dependency {
 		groupId = "org.assertj"
 		artifactId = "assertj-core"
-		version = "3.24.2"
+		version = "3.25.3"
 	}
 }
 
@@ -87,12 +92,12 @@
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy"
-		version = "1.14.9"
+		version = "1.14.12"
 	}
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy-agent"
-		version = "1.14.9"
+		version = "1.14.12"
 	}
 }
 
@@ -144,37 +149,37 @@
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-http"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-io"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-security"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-server"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-servlet"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util-ajax"
-		version = "10.0.18"
+		version = "10.0.20"
 	}
 	dependency {
 		groupId = "jakarta.servlet"
@@ -192,12 +197,12 @@
 	dependency {
 		groupId = "net.java.dev.jna"
 		artifactId = "jna"
-		version = "5.13.0"
+		version = "5.14.0"
 	}
 	dependency {
 		groupId = "net.java.dev.jna"
 		artifactId = "jna-platform"
-		version = "5.13.0"
+		version = "5.14.0"
 	}
 }
 
@@ -210,7 +215,7 @@
 	dependency {
 		groupId = "org.mockito"
 		artifactId = "mockito-core"
-		version = "5.7.0"
+		version = "5.10.0"
 	}
 }
 
@@ -223,12 +228,12 @@
 	dependency {
 		groupId = "org.apache.sshd"
 		artifactId = "sshd-osgi"
-		version = "2.11.0"
+		version = "2.12.0"
 	}
 	dependency {
 		groupId = "org.apache.sshd"
 		artifactId = "sshd-sftp"
-		version = "2.11.0"
+		version = "2.12.0"
 	}
 }
 
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd
new file mode 100644
index 0000000..0554a85
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.31.tpd
@@ -0,0 +1,27 @@
+target "orbit-4.30" with source configurePhase
+// see https://download.eclipse.org/tools/orbit/downloads/
+
+location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2023-12" {
+	com.jcraft.jsch [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
+	com.jcraft.jsch.source [0.1.55.v20230916-1400,0.1.55.v20230916-1400]
+	com.jcraft.jzlib [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
+	com.jcraft.jzlib.source [1.1.3.v20230916-1400,1.1.3.v20230916-1400]
+	net.i2p.crypto.eddsa [0.3.0,0.3.0]
+	net.i2p.crypto.eddsa.source [0.3.0,0.3.0]
+	org.apache.ant [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
+	org.apache.ant.source [1.10.14.v20230922-1200,1.10.14.v20230922-1200]
+	org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
+	org.apache.httpcomponents.httpclient.source [4.5.14,4.5.14]
+	org.apache.httpcomponents.httpcore [4.4.16,4.4.16]
+	org.apache.httpcomponents.httpcore.source [4.4.16,4.4.16]
+	org.hamcrest.core [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+	org.hamcrest.core.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+	org.hamcrest.library [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+	org.hamcrest.library.source [1.3.0.v20230809-1000,1.3.0.v20230809-1000]
+	org.junit [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
+	org.junit.source [4.13.2.v20230809-1000,4.13.2.v20230809-1000]
+	org.objenesis [3.3,3.3]
+	org.objenesis.source [3.3,3.3]
+	org.osgi.service.cm [1.6.1.202109301733,1.6.1.202109301733]
+	org.osgi.service.cm.source [1.6.1.202109301733,1.6.1.202109301733]
+}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
deleted file mode 100644
index 4e2d990..0000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright (C) 2013, Matthias Sohn <matthias.sohn@sap.com> 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
-  http://www.eclipse.org/org/documents/edl-v10.php.
-
-  SPDX-License-Identifier: BSD-3-Clause
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.eclipse.jgit</groupId>
-    <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.8.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>org.eclipse.jgit.target</artifactId>
-  <packaging>pom</packaging>
-  <name>JGit Target Platform</name>
-</project>
\ No newline at end of file
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 03469db..c06d6e4 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>6.8.1-SNAPSHOT</version>
+  <version>6.9.1-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
@@ -43,7 +43,6 @@
   </pluginRepositories>
 
   <modules>
-    <module>org.eclipse.jgit.target</module>
     <module>org.eclipse.jgit.feature</module>
     <module>org.eclipse.jgit.gpg.bc.feature</module>
     <module>org.eclipse.jgit.http.apache.feature</module>
@@ -175,7 +174,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>3.3.0</version>
+        <version>3.4.1</version>
         <executions>
           <execution>
             <id>enforce-maven</id>
@@ -201,15 +200,11 @@
       <plugin>
         <groupId>org.eclipse.tycho</groupId>
         <artifactId>target-platform-configuration</artifactId>
-        <version>${tycho-version}</version>
-        <configuration>
-          <resolver>p2</resolver>
-        </configuration>
       </plugin>
       <plugin>
         <groupId>org.cyclonedx</groupId>
         <artifactId>cyclonedx-maven-plugin</artifactId>
-        <version>2.7.9</version>
+        <version>2.7.11</version>
         <configuration>
           <projectType>library</projectType>
           <schemaVersion>1.4</schemaVersion>
@@ -238,7 +233,7 @@
       <plugin>
         <groupId>io.github.git-commit-id</groupId>
         <artifactId>git-commit-id-maven-plugin</artifactId>
-        <version>6.0.0</version>
+        <version>7.0.0</version>
         <executions>
           <execution>
             <id>get-the-git-infos</id>
@@ -304,7 +299,6 @@
           <artifactId>target-platform-configuration</artifactId>
           <version>${tycho-version}</version>
           <configuration>
-            <resolver>p2</resolver>
             <pomDependencies>consider</pomDependencies>
             <target>
               <file>${project.basedir}/../org.eclipse.jgit.target/${target-platform}.target</file>
@@ -387,16 +381,16 @@
         <plugin>
           <groupId>org.eclipse.cbi.maven.plugins</groupId>
           <artifactId>eclipse-jarsigner-plugin</artifactId>
-          <version>1.4.2</version>
+          <version>1.4.3</version>
         </plugin>
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>build-helper-maven-plugin</artifactId>
-          <version>3.3.0</version>
+          <version>3.5.0</version>
         </plugin>
         <plugin>
           <artifactId>maven-clean-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.3.2</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -411,7 +405,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.12.1</version>
+          <version>4.0.0-M13</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -434,9 +428,6 @@
           <plugin>
             <groupId>org.eclipse.tycho</groupId>
             <artifactId>target-platform-configuration</artifactId>
-            <configuration>
-              <includePackedArtifacts>true</includePackedArtifacts>
-            </configuration>
           </plugin>
           <plugin>
             <groupId>org.eclipse.cbi.maven.plugins</groupId>
@@ -477,9 +468,6 @@
           <plugin>
             <groupId>org.eclipse.tycho</groupId>
             <artifactId>target-platform-configuration</artifactId>
-            <configuration>
-              <includePackedArtifacts>true</includePackedArtifacts>
-            </configuration>
           </plugin>
           <plugin>
             <groupId>org.eclipse.tycho</groupId>
diff --git a/org.eclipse.jgit.pgm.test/BUILD b/org.eclipse.jgit.pgm.test/BUILD
index 539d666..b8ffa69 100644
--- a/org.eclipse.jgit.pgm.test/BUILD
+++ b/org.eclipse.jgit.pgm.test/BUILD
@@ -15,6 +15,7 @@
     deps = [
         ":helpers",
         "//lib:args4j",
+        "//lib:commons-io",
         "//lib:commons-compress",
         "//lib:javaewah",
         "//lib:junit",
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 94c650a..7232b27 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -3,30 +3,30 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm.test
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.diff;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.dircache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.diffmergetool;version="6.8.1",
- org.eclipse.jgit.internal.storage.file;version="6.8.1",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.merge;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.pgm;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.pgm.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.pgm.opt;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.diff;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.dircache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="6.9.1",
+ org.eclipse.jgit.internal.storage.file;version="6.9.1",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.merge;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.pgm;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.pgm.opt;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.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 c51d553..ae02cdc 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 cc07eb4..825911c 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -14,49 +14,49 @@
  org.eclipse.jetty.servlet;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.component;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.archive;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.awtui;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.blame;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.diff;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.dircache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.gitrepo;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.server;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs.server.s3;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.merge;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.notes;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revplot;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.resolver;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.sshd;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.archive;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.awtui;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.blame;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.diff;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.dircache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.gitrepo;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.server;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.merge;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.notes;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revplot;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.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="6.8.1";
+Export-Package: org.eclipse.jgit.console;version="6.9.1";
  uses:="org.eclipse.jgit.transport,
   org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="6.8.1";
+ org.eclipse.jgit.pgm;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.awtui,
@@ -68,14 +68,14 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.api,
    javax.swing",
- org.eclipse.jgit.pgm.debug;version="6.8.1";
+ org.eclipse.jgit.pgm.debug;version="6.9.1";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm,
    org.eclipse.jetty.servlet",
- org.eclipse.jgit.pgm.internal;version="6.8.1";
+ org.eclipse.jgit.pgm.internal;version="6.9.1";
   x-friends:="org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="6.8.1";
+ org.eclipse.jgit.pgm.opt;version="6.9.1";
   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 8a44aec..cb5e814 100644
--- a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.pgm - Sources
 Bundle-SymbolicName: org.eclipse.jgit.pgm.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 26b9d2a..488b481 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 1bb957e..5011a8e 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
@@ -2,16 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent;singleton:=true
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/agent
 Bundle-Vendor: %Bundle-Vendor
-Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.8.1,6.9.0)"
+Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.9.1,6.10.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.agent
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.transport.sshd;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)"
+Import-Package: org.eclipse.jgit.transport.sshd;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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="6.8.1";x-internal:=true
+Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="6.9.1";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 5f4ea13..e841539 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,5 +3,5 @@
 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: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache.agent/pom.xml b/org.eclipse.jgit.ssh.apache.agent/pom.xml
index b08523f..7da173a 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 e9e5793..7c5b2d7 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -3,35 +3,35 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.test
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
-Import-Package: org.apache.sshd.client.config.hosts;version="[2.11.0,2.12.0)",
- org.apache.sshd.common;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.auth;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.helpers;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.kex;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.keyprovider;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.session;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.signature;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.net;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.security;version="[2.11.0,2.12.0)",
- org.apache.sshd.core;version="[2.11.0,2.12.0)",
- org.apache.sshd.server;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.forward;version="[2.11.0,2.12.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit.ssh;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.sshd;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.sshd.agent;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+Import-Package: org.apache.sshd.client.config.hosts;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.auth;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.helpers;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.kex;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.keyprovider;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.session;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.signature;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.net;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.security;version="[2.12.0,2.13.0)",
+ org.apache.sshd.core;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.forward;version="[2.12.0,2.13.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.junit.runner;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 14b5160..a8598a9 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 98bc78e..ac9d964 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.8.1";x-internal:=true;
+Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.9.1";x-internal:=true;
   uses:="org.apache.sshd.client,
    org.apache.sshd.client.auth,
    org.apache.sshd.client.auth.keyboard,
@@ -23,77 +23,77 @@
    org.apache.sshd.common.signature,
    org.apache.sshd.common.util.buffer,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.agent;version="6.8.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.auth;version="6.8.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.pkcs11;version="6.8.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="6.8.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.transport.sshd;version="6.8.1";
+ org.eclipse.jgit.internal.transport.sshd.agent;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.auth;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.pkcs11;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="6.9.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.transport.sshd;version="6.9.1";
   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="6.8.1",
+ org.eclipse.jgit.transport.sshd.agent;version="6.9.1",
  sun.security.x509
 Import-Package: net.i2p.crypto.eddsa;version="[0.3.0,0.4.0)",
- org.apache.sshd.agent;version="[2.11.0,2.12.0)",
- org.apache.sshd.client;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.auth;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.auth.keyboard;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.auth.password;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.auth.pubkey;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.channel;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.config.hosts;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.config.keys;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.future;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.keyverifier;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.session;version="[2.11.0,2.12.0)",
- org.apache.sshd.client.session.forward;version="[2.11.0,2.12.0)",
- org.apache.sshd.common;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.auth;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.channel;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.compression;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys.loader;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys.loader.openssh.kdf;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.config.keys.u2f;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.digest;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.forward;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.future;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.helpers;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.io;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.kex;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.kex.extension;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.kex.extension.parser;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.keyprovider;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.mac;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.random;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.session;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.session.helpers;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.signature;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.buffer;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.buffer.keys;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.closeable;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.io;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.io.der;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.io.functors;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.io.resource;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.logging;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.net;version="[2.11.0,2.12.0)",
- org.apache.sshd.common.util.security;version="[2.11.0,2.12.0)",
- org.apache.sshd.core;version="[2.11.0,2.12.0)",
- org.apache.sshd.server.auth;version="[2.11.0,2.12.0)",
- org.apache.sshd.sftp;version="[2.11.0,2.12.0)",
- org.apache.sshd.sftp.client;version="[2.11.0,2.12.0)",
- org.apache.sshd.sftp.common;version="[2.11.0,2.12.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.fnmatch;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.slf4j;version="[1.7.0,2.0.0)"
+ org.apache.sshd.agent;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.auth;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.auth.keyboard;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.auth.password;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.auth.pubkey;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.channel;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.config.hosts;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.config.keys;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.future;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.keyverifier;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.session;version="[2.12.0,2.13.0)",
+ org.apache.sshd.client.session.forward;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.auth;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.channel;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.compression;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys.loader;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys.loader.openssh.kdf;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.config.keys.u2f;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.digest;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.forward;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.future;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.helpers;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.io;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.kex;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.kex.extension;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.kex.extension.parser;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.keyprovider;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.mac;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.random;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.session;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.session.helpers;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.signature;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.buffer;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.buffer.keys;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.closeable;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.io;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.io.der;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.io.functors;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.io.resource;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.logging;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.net;version="[2.12.0,2.13.0)",
+ org.apache.sshd.common.util.security;version="[2.12.0,2.13.0)",
+ org.apache.sshd.core;version="[2.12.0,2.13.0)",
+ org.apache.sshd.server.auth;version="[2.12.0,2.13.0)",
+ org.apache.sshd.sftp;version="[2.12.0,2.13.0)",
+ org.apache.sshd.sftp.client;version="[2.12.0,2.13.0)",
+ org.apache.sshd.sftp.common;version="[2.12.0,2.13.0)",
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.fnmatch;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.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 3573437..5e7a06c 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ssh.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index 58144f4..68b2360 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
index eb55ec0..b0b1028 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitPublicKeyAuthentication.java
@@ -48,9 +48,7 @@
 import org.apache.sshd.client.session.ClientSession;
 import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.config.keys.AuthorizedKeyEntry;
 import org.apache.sshd.common.config.keys.KeyUtils;
-import org.apache.sshd.common.config.keys.PublicKeyEntryResolver;
 import org.apache.sshd.common.config.keys.u2f.SecurityKeyPublicKey;
 import org.apache.sshd.common.signature.Signature;
 import org.apache.sshd.common.signature.SignatureFactoriesManager;
@@ -314,6 +312,8 @@ protected void releaseKeys() throws IOException {
 
 	private class KeyIterator extends UserAuthPublicKeyIterator {
 
+		private static final String PUB_KEY_SUFFIX = ".pub"; //$NON-NLS-1$
+
 		public KeyIterator(ClientSession session,
 				SignatureFactoriesManager manager)
 				throws Exception {
@@ -326,22 +326,53 @@ private List<PublicKey> getExplicitKeys(
 				return null;
 			}
 			return explicitFiles.stream().map(s -> {
-				try {
-					Path p = Paths.get(s + ".pub"); //$NON-NLS-1$
-					if (Files.isRegularFile(p, LinkOption.NOFOLLOW_LINKS)) {
-						return AuthorizedKeyEntry.readAuthorizedKeys(p).get(0)
-								.resolvePublicKey(null,
-										PublicKeyEntryResolver.IGNORING);
-					}
-				} catch (InvalidPathException | IOException
-						| GeneralSecurityException e) {
-					log.warn("{}", //$NON-NLS-1$
-							format(SshdText.get().cannotReadPublicKey, s), e);
+				// assume the explicit key is a public key
+				PublicKey publicKey = readPublicKey(s, false);
+				if (publicKey == null && !s.endsWith(PUB_KEY_SUFFIX)) {
+					// if this is not the case, try to lookup public key with
+					// same filename and extension .pub
+					publicKey = readPublicKey(s + PUB_KEY_SUFFIX, true);
 				}
-				return null;
+				return publicKey;
 			}).filter(Objects::nonNull).collect(Collectors.toList());
 		}
 
+		/**
+		 *
+		 * @param keyFile
+		 *            the path to a public key
+		 * @param isDerived
+		 *            {@code false} in case the given {@code keyFile} is set in
+		 *            the SSH config as is, otherwise {@code false}
+		 * @return the public key read from the key file
+		 */
+		private PublicKey readPublicKey(String keyFile, boolean isDerived) {
+			try {
+				Path p = Paths.get(keyFile);
+				if (Files.isRegularFile(p, LinkOption.NOFOLLOW_LINKS)) {
+					return KeyUtils.loadPublicKey(p);
+				}
+				// only warn about non-existing files in case the key file is
+				// not derived
+				if (!isDerived) {
+					log.warn("{}", //$NON-NLS-1$
+						format(SshdText.get().cannotReadPublicKey, keyFile));
+				}
+			} catch (InvalidPathException | IOException e) {
+				log.warn("{}", //$NON-NLS-1$
+						format(SshdText.get().cannotReadPublicKey, keyFile), e);
+			} catch (GeneralSecurityException e) {
+				// ignore in case this is not a derived key path, as in most
+				// cases this specifies a private key
+				if (isDerived) {
+					log.warn("{}", //$NON-NLS-1$
+							format(SshdText.get().cannotReadPublicKey, keyFile),
+							e);
+				}
+			}
+			return null;
+		}
+
 		@Override
 		protected Iterable<KeyAgentIdentity> initializeAgentIdentities(
 				ClientSession session) throws IOException {
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 582d5e6..1af338b 100644
--- a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.test
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
 Import-Package: com.jcraft.jsch;version="[0.1.54,0.2.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit.ssh;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.junit.runner;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 51a9f30..d70dc12 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 2028c76..36e2de2 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@
 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="[6.8.1,6.9.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.9.1,6.10.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/jsch
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.8.1"
+Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.9.1"
 Import-Package: com.jcraft.jsch;version="[0.1.37,0.2.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)",
- org.slf4j;version="[1.7.0,2.0.0)"
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.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 797bca4..50747f6 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ssh.jsch - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.jsch/pom.xml b/org.eclipse.jgit.ssh.jsch/pom.xml
index 1a100ea..bd0ff60 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
diff --git a/org.eclipse.jgit.test/BUILD b/org.eclipse.jgit.test/BUILD
index bb15de0..29f5b36 100644
--- a/org.eclipse.jgit.test/BUILD
+++ b/org.eclipse.jgit.test/BUILD
@@ -78,6 +78,7 @@
     deps = [
         "//lib:assertj-core",
         "//lib:commons-codec",
+        "//lib:commons-io",
         "//lib:junit",
         "//lib:mockito",
         "//lib:slf4j-simple",
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 8845014..fb6255e 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: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -18,65 +18,67 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.15.0,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.15.0,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.15.0,2.0)",
+ org.apache.commons.io;version="[2.15.0,3.0.0)",
+ org.apache.commons.io.output;version="[2.15.0,3.0.0)",
  org.assertj.core.api;version="[3.14.0,4.0.0)",
- org.eclipse.jgit.annotations;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.api.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.archive;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.attributes;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.awtui;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.blame;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.diff;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.dircache;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.events;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.fnmatch;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.gitrepo;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.hooks;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.ignore;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.ignore.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.diff;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.fsck;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.commitgraph;version="6.8.1",
- org.eclipse.jgit.internal.storage.dfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.memory;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.connectivity;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.junit.time;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lfs;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.logging;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.merge;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.notes;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.patch;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.pgm;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.pgm.internal;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revplot;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.file;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.storage.pack;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.submodule;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.http;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport.resolver;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.io;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util.sha1;version="[6.8.1,6.9.0)",
+ org.eclipse.jgit.annotations;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.api.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.archive;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.attributes;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.awtui;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.blame;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.diff;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.dircache;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.events;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.fnmatch;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.gitrepo;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.hooks;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.ignore;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.ignore.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.diff;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.fsck;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.commitgraph;version="6.9.1",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.memory;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.connectivity;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.junit.time;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lfs;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.logging;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.merge;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.notes;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.patch;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.pgm;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revplot;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.file;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.storage.pack;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.submodule;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.http;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.io;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util.sha1;version="[6.9.1,6.10.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.junit.function;version="[4.13.0,5.0.0)",
@@ -88,5 +90,5 @@
  org.mockito.junit;version="[5.4.0,6.0.0)",
  org.mockito.stubbing;version="[5.4.0,6.0.0)",
  org.objenesis;version="[3.3.0,4.0.0)",
- org.slf4j;version="[1.7.0,2.0.0)",
+ org.slf4j;version="[1.7.0,3.0.0)",
  org.tukaani.xz
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 2ff7b7e..fd40586 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java
index 301d6be..be3b33a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java
@@ -9,6 +9,8 @@
  */
 package org.eclipse.jgit.api;
 
+import static org.eclipse.jgit.api.CherryPickCommitMessageProvider.ORIGINAL;
+import static org.eclipse.jgit.api.CherryPickCommitMessageProvider.ORIGINAL_WITH_REFERENCE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -590,4 +592,187 @@ public void testCherryPickMerge() throws Exception {
 			checkFile(new File(db.getWorkTree(), "file"), "a\n2\n3\n");
 		}
 	}
+
+	private void doCherryPickWithCustomProviderBaseTest(Git git,
+			CherryPickCommitMessageProvider commitMessageProvider)
+			throws Exception {
+		writeTrashFile("fileA", "line 1\nline 2\nline 3\n");
+		git.add().addFilepattern("fileA").call();
+		RevCommit commitFirst = git.commit().setMessage("create fileA").call();
+
+		writeTrashFile("fileB", "content from file B\n");
+		git.add().addFilepattern("fileB").call();
+		RevCommit commitCreateFileB = git.commit()
+				.setMessage("create fileB\n\nsome commit details").call();
+
+		writeTrashFile("fileA", "line 1\nline 2\nline 3\nline 4\n");
+		git.add().addFilepattern("fileA").call();
+		RevCommit commitEditFileA1 = git.commit().setMessage("patch fileA 1")
+				.call();
+
+		writeTrashFile("fileA", "line 1\nline 2\nline 3\nline 4\nline 5\n");
+		git.add().addFilepattern("fileA").call();
+		RevCommit commitEditFileA2 = git.commit().setMessage("patch fileA 2")
+				.call();
+
+		git.branchCreate().setName("side").setStartPoint(commitFirst).call();
+		checkoutBranch("refs/heads/side");
+
+		CherryPickResult pickResult = git.cherryPick()
+				.setCherryPickCommitMessageProvider(commitMessageProvider)
+				.include(commitCreateFileB).include(commitEditFileA1)
+				.include(commitEditFileA2).call();
+
+		assertEquals(CherryPickStatus.OK, pickResult.getStatus());
+
+		assertTrue(new File(db.getWorkTree(), "fileA").exists());
+		assertTrue(new File(db.getWorkTree(), "fileB").exists());
+
+		checkFile(new File(db.getWorkTree(), "fileA"),
+				"line 1\nline 2\nline 3\nline 4\nline 5\n");
+		checkFile(new File(db.getWorkTree(), "fileB"), "content from file B\n");
+	}
+
+	@Test
+	public void testCherryPickWithCustomCommitMessageProvider()
+			throws Exception {
+		try (Git git = new Git(db)) {
+			@SuppressWarnings("boxing")
+			CherryPickCommitMessageProvider messageProvider = srcCommit -> {
+				String message = srcCommit.getFullMessage();
+				return String.format("%s (message length: %d)", message,
+						message.length());
+			};
+			doCherryPickWithCustomProviderBaseTest(git, messageProvider);
+
+			Iterator<RevCommit> history = git.log().call().iterator();
+			assertEquals("patch fileA 2 (message length: 13)",
+					history.next().getFullMessage());
+			assertEquals("patch fileA 1 (message length: 13)",
+					history.next().getFullMessage());
+			assertEquals(
+					"create fileB\n\nsome commit details (message length: 33)",
+					history.next().getFullMessage());
+			assertEquals("create fileA", history.next().getFullMessage());
+			assertFalse(history.hasNext());
+		}
+	}
+
+	@Test
+	public void testCherryPickWithCustomCommitMessageProvider_ORIGINAL()
+			throws Exception {
+		try (Git git = new Git(db)) {
+			doCherryPickWithCustomProviderBaseTest(git, ORIGINAL);
+
+			Iterator<RevCommit> history = git.log().call().iterator();
+			assertEquals("patch fileA 2", history.next().getFullMessage());
+			assertEquals("patch fileA 1", history.next().getFullMessage());
+			assertEquals("create fileB\n\nsome commit details",
+					history.next().getFullMessage());
+			assertEquals("create fileA", history.next().getFullMessage());
+			assertFalse(history.hasNext());
+		}
+	}
+
+	@Test
+	public void testCherryPickWithCustomCommitMessageProvider_ORIGINAL_WITH_REFERENCE()
+			throws Exception {
+		try (Git git = new Git(db)) {
+			doCherryPickWithCustomProviderBaseTest(git,
+					ORIGINAL_WITH_REFERENCE);
+
+			Iterator<RevCommit> history = git.log().call().iterator();
+			assertEquals("patch fileA 2\n\n(cherry picked from commit 1ac121e90b0fb6fb18bbb4307e3e9731ceeba9e1)", history.next().getFullMessage());
+			assertEquals("patch fileA 1\n\n(cherry picked from commit 71475239df59076e18564fa360e3a74280926c2a)", history.next().getFullMessage());
+			assertEquals("create fileB\n\nsome commit details\n\n(cherry picked from commit 29b4501297ccf8de9de9f451e7beb384b51f5378)",
+					history.next().getFullMessage());
+			assertEquals("create fileA", history.next().getFullMessage());
+			assertFalse(history.hasNext());
+		}
+	}
+
+	@Test
+	public void testCherryPickWithCustomCommitMessageProvider_ORIGINAL_WITH_REFERENCE_DonNotAddNewLineAfterFooter()
+			throws Exception {
+		try (Git git = new Git(db)) {
+			CherryPickCommitMessageProvider commitMessageProvider = CherryPickCommitMessageProvider.ORIGINAL_WITH_REFERENCE;
+
+			RevCommit commit1 = addFileAndCommit(git, "file1", "content 1",
+					"commit1: no footer line");
+			RevCommit commit2 = addFileAndCommit(git, "file2", "content 2",
+					"commit2: simple single footer line"
+							+ "\n\nSigned-off-by: Alice <alice@example.com>");
+			RevCommit commit3 = addFileAndCommit(git, "file3", "content 3",
+					"commit3: multiple footer lines\n\n"
+							+ "Signed-off-by: Alice <alice@example.com>\n"
+							+ "Signed-off-by: Bob <bob@example.com>");
+			RevCommit commit4 = addFileAndCommit(git, "file4", "content 4",
+					"commit4: extra commit text before footer line\n\n"
+							+ "Commit message details\n\n"
+							+ "Signed-off-by: Alice <alice@example.com>\n"
+							+ "Signed-off-by: Bob <bob@example.com>");
+			RevCommit commit5 = addFileAndCommit(git, "file5", "content 5",
+					"commit5: extra commit text after footer line\n\n"
+							+ "Signed-off-by: Alice <alice@example.com>\n"
+							+ "Signed-off-by: Bob <bob@example.com>\n\n"
+							+ "some extra description after footer");
+
+			git.branchCreate().setName("side").setStartPoint(commit1).call();
+			checkoutBranch("refs/heads/side");
+
+			CherryPickResult pickResult = git.cherryPick()
+					.setCherryPickCommitMessageProvider(commitMessageProvider)
+					.include(commit2).include(commit3).include(commit4)
+					.include(commit5).call();
+
+			assertEquals(CherryPickStatus.OK, pickResult.getStatus());
+
+			assertTrue(new File(db.getWorkTree(), "file1").exists());
+			assertTrue(new File(db.getWorkTree(), "file2").exists());
+			assertTrue(new File(db.getWorkTree(), "file3").exists());
+			assertTrue(new File(db.getWorkTree(), "file4").exists());
+			assertTrue(new File(db.getWorkTree(), "file5").exists());
+
+			Iterator<RevCommit> history = git.log().call().iterator();
+			RevCommit cpCommit1 = history.next();
+			RevCommit cpCommit2 = history.next();
+			RevCommit cpCommit3 = history.next();
+			RevCommit cpCommit4 = history.next();
+			RevCommit cpCommitInit = history.next();
+			assertFalse(history.hasNext());
+
+			assertEquals("commit5: extra commit text after footer line\n\n"
+					+ "Signed-off-by: Alice <alice@example.com>\n"
+					+ "Signed-off-by: Bob <bob@example.com>\n\n"
+					+ "some extra description after footer\n\n"
+					+ "(cherry picked from commit c3c9959207dc7ae7c83da5d36dc14ef2ca42d572)",
+					cpCommit1.getFullMessage());
+			assertEquals("commit4: extra commit text before footer line\n\n"
+					+ "Commit message details\n\n"
+					+ "Signed-off-by: Alice <alice@example.com>\n"
+					+ "Signed-off-by: Bob <bob@example.com>\n"
+					+ "(cherry picked from commit af3e8106c12cb946a37b403ddb2dd6c11a883698)",
+					cpCommit2.getFullMessage());
+			assertEquals("commit3: multiple footer lines\n\n"
+					+ "Signed-off-by: Alice <alice@example.com>\n"
+					+ "Signed-off-by: Bob <bob@example.com>\n"
+					+ "(cherry picked from commit 6d60f1a70a11a32dff4402c157c4ac328c32ce6c)",
+					cpCommit3.getFullMessage());
+			assertEquals("commit2: simple single footer line\n\n"
+					+ "Signed-off-by: Alice <alice@example.com>\n"
+					+ "(cherry picked from commit 92bf0ec458814ecc73da8e050e60547d2ea6cce5)",
+					cpCommit4.getFullMessage());
+
+			assertEquals("commit1: no footer line",
+					cpCommitInit.getFullMessage());
+		}
+	}
+
+	private RevCommit addFileAndCommit(Git git, String fileName,
+			String fileText, String commitMessage)
+			throws IOException, GitAPIException {
+		writeTrashFile(fileName, fileText);
+		git.add().addFilepattern(fileName).call();
+		return git.commit().setMessage(commitMessage).call();
+	}
 }
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
index 16f7cd1..987c98e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
@@ -332,6 +332,40 @@ public void testRebaseNoMergeBase() throws Exception {
 	}
 
 	/**
+	 * Create a commit A and an unrelated commit B creating the same file with
+	 * different content. Then rebase A onto B. The rebase should stop with a
+	 * conflict.
+	 *
+	 * @throws Exception
+	 *             on errors
+	 */
+	@Test
+	public void testRebaseNoMergeBaseConflict() throws Exception {
+		writeTrashFile(FILE1, FILE1);
+		git.add().addFilepattern(FILE1).call();
+		RevCommit first = git.commit().setMessage("Add file").call();
+		File file1 = new File(db.getWorkTree(), FILE1);
+		assertTrue(file1.exists());
+		// Create an independent branch
+		git.checkout().setOrphan(true).setName("orphan").call();
+		git.rm().addFilepattern(FILE1).call();
+		assertFalse(file1.exists());
+		writeTrashFile(FILE1, "something else");
+		git.add().addFilepattern(FILE1).call();
+		git.commit().setMessage("Orphan").call();
+		checkoutBranch("refs/heads/master");
+		assertEquals(first.getId(), db.resolve("HEAD"));
+		RebaseResult res = git.rebase().setUpstream("refs/heads/orphan").call();
+		assertEquals(Status.STOPPED, res.getStatus());
+		assertEquals(first, res.getCurrentCommit());
+		checkFile(file1, "<<<<<<< Upstream, based on orphan\n"
+				+ "something else\n"
+				+ "=======\n"
+				+ "file1\n"
+				+ ">>>>>>> " + first.abbreviate(7).name() + " Add file\n");
+	}
+
+	/**
 	 * Create the following commits and then attempt to rebase topic onto
 	 * master. This will serialize the branches.
 	 *
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
index 77e5b7c..44694ac 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackFileTest.java
@@ -14,6 +14,8 @@
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayOutputStream;
@@ -24,14 +26,18 @@
 
 import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
 import org.eclipse.jgit.internal.storage.dfs.DfsReader.PackLoadListener;
+import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 import org.eclipse.jgit.internal.storage.pack.PackExt;
 import org.eclipse.jgit.internal.storage.pack.PackOutputStream;
 import org.eclipse.jgit.internal.storage.pack.PackWriter;
 import org.eclipse.jgit.junit.JGitTestUtil;
 import org.eclipse.jgit.junit.TestRng;
+import org.eclipse.jgit.lib.BatchRefUpdate;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.NullProgressMonitor;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.transport.ReceiveCommand;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -123,6 +129,41 @@ public void testLoadObjectSizeIndex() throws IOException {
 	}
 
 	@Test
+	public void testGetBitmapIndex() throws IOException {
+		bypassCache = false;
+		clearCache = true;
+		ObjectId objectId = setupPack(512, 800);
+
+		// Add a ref for GC
+		BatchRefUpdate batchRefUpdate = db.getRefDatabase().newBatchUpdate();
+		batchRefUpdate.addCommand(new ReceiveCommand(ObjectId.zeroId(),
+				objectId, "refs/heads/master"));
+		try (RevWalk rw = new RevWalk(db)) {
+			batchRefUpdate.execute(rw, NullProgressMonitor.INSTANCE);
+		}
+		DfsGarbageCollector gc = new DfsGarbageCollector(db);
+		gc.pack(NullProgressMonitor.INSTANCE);
+
+		DfsReader reader = db.getObjectDatabase().newReader();
+		PackBitmapIndex bitmapIndex = db.getObjectDatabase().getPacks()[0]
+				.getBitmapIndex(reader);
+		assertNotNull(bitmapIndex);
+		assertEquals(1, bitmapIndex.getObjectCount());
+	}
+
+	@Test
+	public void testGetBitmapIndex_noBitmaps() throws IOException {
+		bypassCache = false;
+		clearCache = true;
+		setupPack(512, 800);
+
+		DfsReader reader = db.getObjectDatabase().newReader();
+		PackBitmapIndex bitmapIndex = db.getObjectDatabase().getPacks()[0]
+				.getBitmapIndex(reader);
+		assertNull(bitmapIndex);
+	}
+
+	@Test
 	public void testLoadObjectSizeIndex_noIndex() throws IOException {
 		bypassCache = false;
 		clearCache = true;
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java
index eb8ceec..254184e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsReaderTest.java
@@ -12,6 +12,7 @@
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_MIN_BYTES_OBJ_SIZE_INDEX;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_PACK_SECTION;
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
+import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -39,8 +40,56 @@ public void setUp() {
 	}
 
 	@Test
-	public void isNotLargerThan_objAboveThreshold()
-			throws IOException {
+	public void getObjectSize_noIndex_blob() throws IOException {
+		ObjectId obj = insertBlobWithSize(100);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			long size = ctx.getObjectSize(obj, OBJ_BLOB);
+			assertEquals(100, size);
+		}
+	}
+
+	@Test
+	public void getObjectSize_noIndex_commit() throws IOException {
+		ObjectId obj = insertObjectWithSize(OBJ_COMMIT, 110);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			long size = ctx.getObjectSize(obj, OBJ_COMMIT);
+			assertEquals(110, size);
+		}
+	}
+
+	@Test
+	public void getObjectSize_index_indexedBlob() throws IOException {
+		setObjectSizeIndexMinBytes(100);
+		ObjectId obj = insertBlobWithSize(200);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			long size = ctx.getObjectSize(obj, OBJ_BLOB);
+			assertEquals(200, size);
+		}
+	}
+
+	@Test
+	public void getObjectSize_index_nonIndexedBlob() throws IOException {
+		setObjectSizeIndexMinBytes(100);
+		ObjectId obj = insertBlobWithSize(50);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			long size = ctx.getObjectSize(obj, OBJ_BLOB);
+			assertEquals(50, size);
+		}
+	}
+
+	@Test
+	public void getObjectSize_index_commit() throws IOException {
+		setObjectSizeIndexMinBytes(100);
+		insertBlobWithSize(110);
+		ObjectId obj = insertObjectWithSize(OBJ_COMMIT, 120);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			long size = ctx.getObjectSize(obj, OBJ_COMMIT);
+			assertEquals(120, size);
+		}
+	}
+
+	@Test
+	public void isNotLargerThan_objAboveThreshold() throws IOException {
 		setObjectSizeIndexMinBytes(100);
 		ObjectId obj = insertBlobWithSize(200);
 		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
@@ -76,10 +125,8 @@ public void isNotLargerThan_objAboveThreshold()
 		}
 	}
 
-
 	@Test
-	public void isNotLargerThan_objBelowThreshold()
-			throws IOException {
+	public void isNotLargerThan_objBelowThreshold() throws IOException {
 		setObjectSizeIndexMinBytes(100);
 		insertBlobWithSize(1000); // index not empty
 		ObjectId obj = insertBlobWithSize(50);
@@ -168,22 +215,26 @@ public void packLoadListener_has_openIdx() throws IOException {
 			ctx.addPackLoadListener(listener);
 			boolean has = ctx.has(obj);
 			assertTrue(has);
-			assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.INDEX));
+			assertEquals(Integer.valueOf(1),
+					listener.callsPerExt.get(PackExt.INDEX));
 		}
 	}
 
 	@Test
-	public void packLoadListener_notLargerThan_openMultipleIndices() throws IOException {
-			setObjectSizeIndexMinBytes(100);
-			ObjectId obj = insertBlobWithSize(200);
-			try (DfsReader ctx = db.getObjectDatabase().newReader()) {
-				CounterPackLoadListener listener = new CounterPackLoadListener();
-				ctx.addPackLoadListener(listener);
-				boolean notLargerThan = ctx.isNotLargerThan(obj, OBJ_BLOB, 1000);
-				assertTrue(notLargerThan);
-				assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.INDEX));
-				assertEquals(Integer.valueOf(1), listener.callsPerExt.get(PackExt.OBJECT_SIZE_INDEX));
-			}
+	public void packLoadListener_notLargerThan_openMultipleIndices()
+			throws IOException {
+		setObjectSizeIndexMinBytes(100);
+		ObjectId obj = insertBlobWithSize(200);
+		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
+			CounterPackLoadListener listener = new CounterPackLoadListener();
+			ctx.addPackLoadListener(listener);
+			boolean notLargerThan = ctx.isNotLargerThan(obj, OBJ_BLOB, 1000);
+			assertTrue(notLargerThan);
+			assertEquals(Integer.valueOf(1),
+					listener.callsPerExt.get(PackExt.INDEX));
+			assertEquals(Integer.valueOf(1),
+					listener.callsPerExt.get(PackExt.OBJECT_SIZE_INDEX));
+		}
 	}
 
 	@Test
@@ -195,20 +246,24 @@ public void packLoadListener_has_openMultipleIndices() throws IOException {
 		try (DfsReader ctx = db.getObjectDatabase().newReader()) {
 			CounterPackLoadListener listener = new CounterPackLoadListener();
 			ctx.addPackLoadListener(listener);
-			ObjectId oid = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
+			ObjectId oid = ObjectId
+					.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
 			boolean has = ctx.has(oid);
 			assertFalse(has);
 			// Open 3 indices trying to find the pack
-			assertEquals(Integer.valueOf(3), listener.callsPerExt.get(PackExt.INDEX));
+			assertEquals(Integer.valueOf(3),
+					listener.callsPerExt.get(PackExt.INDEX));
 		}
 	}
 
-
 	@Test
-	public void packLoadListener_has_repeatedCalls_openMultipleIndices() throws IOException {
+	public void packLoadListener_has_repeatedCalls_openMultipleIndices()
+			throws IOException {
 		// Two objects NOT in the repo
-		ObjectId oid = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
-		ObjectId oid2 = ObjectId.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f130");
+		ObjectId oid = ObjectId
+				.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f129");
+		ObjectId oid2 = ObjectId
+				.fromString("aa48de2aa61d9dffa8a05439dc115fe82f10f130");
 
 		setObjectSizeIndexMinBytes(100);
 		insertBlobWithSize(200);
@@ -222,7 +277,8 @@ public void packLoadListener_has_repeatedCalls_openMultipleIndices() throws IOEx
 			ctx.has(oid2);
 			assertFalse(has);
 			// The 3 indices were loaded only once each
-			assertEquals(Integer.valueOf(3), listener.callsPerExt.get(PackExt.INDEX));
+			assertEquals(Integer.valueOf(3),
+					listener.callsPerExt.get(PackExt.INDEX));
 		}
 	}
 
@@ -231,8 +287,8 @@ private static class CounterPackLoadListener implements PackLoadListener {
 
 		@SuppressWarnings("boxing")
 		@Override
-		public void onIndexLoad(String packName, PackSource src, PackExt ext, long size,
-				Object loadedIdx) {
+		public void onIndexLoad(String packName, PackSource src, PackExt ext,
+				long size, Object loadedIdx) {
 			callsPerExt.merge(ext, 1, Integer::sum);
 		}
 
@@ -243,13 +299,16 @@ public void onBlockLoad(String packName, PackSource src, PackExt ext,
 		}
 	}
 
-	private ObjectId insertBlobWithSize(int size)
+	private ObjectId insertBlobWithSize(int size) throws IOException {
+		return insertObjectWithSize(OBJ_BLOB, size);
+	}
+
+	private ObjectId insertObjectWithSize(int object_type, int size)
 			throws IOException {
 		TestRng testRng = new TestRng(JGitTestUtil.getName());
 		ObjectId oid;
 		try (ObjectInserter ins = db.newObjectInserter()) {
-				oid = ins.insert(OBJ_BLOB,
-						testRng.nextBytes(size));
+			oid = ins.insert(object_type, testRng.nextBytes(size));
 			ins.flush();
 		}
 		return oid;
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndexTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndexTest.java
new file mode 100644
index 0000000..f47c385
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndexTest.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2023, Google LLC  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
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.storage.file;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.jgit.internal.storage.file.BasePackBitmapIndex.StoredBitmap;
+import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectIdOwnerMap;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.googlecode.javaewah.EWAHCompressedBitmap;
+
+public class BasePackBitmapIndexTest {
+
+	private ObjectId baseOid;
+
+	private StoredBitmap baseBitmap;
+
+	private ObjectId xorOid;
+
+	private StoredBitmap xorBitmap;
+
+	private ObjectIdOwnerMap<StoredBitmap> bitmaps;
+
+	@Before
+	public void setUp() {
+		baseOid = ObjectId
+				.fromString("c46f36f2bfc96d6d6f75bd71ee33625293aee690");
+		baseBitmap = newBaseStoredBitmap(baseOid, bitmapOf(100));
+		xorOid = ObjectId
+				.fromString("52c18ae15f8fa3787f920e68791367dae2e1af2d");
+		xorBitmap = newXorStoredBitmap(xorOid, bitmapOf(200, 300), baseBitmap);
+		bitmaps = new ObjectIdOwnerMap<>();
+		bitmaps.add(baseBitmap);
+		bitmaps.add(xorBitmap);
+	}
+
+	@Test
+	public void testBitmapCounts() {
+		TestPackBitmapIndex index = new TestPackBitmapIndex(bitmaps);
+
+		assertEquals(1, index.getBaseBitmapCount());
+		assertEquals(1, index.getXorBitmapCount());
+		assertEquals(2, index.getBitmapCount());
+	}
+
+	@Test
+	public void testBitmapCounts_xorResolved() {
+		TestPackBitmapIndex index = new TestPackBitmapIndex(bitmaps);
+		index.getBitmap(xorOid);
+
+		assertEquals(2, index.getBaseBitmapCount());
+		assertEquals(0, index.getXorBitmapCount());
+		assertEquals(2, index.getBitmapCount());
+	}
+
+	@Test
+	public void testBitmapSizes() {
+		TestPackBitmapIndex index = new TestPackBitmapIndex(bitmaps);
+
+		assertEquals(baseBitmap.getCurrentSizeInBytes(),
+				index.getBaseBitmapSizeInBytes());
+		assertEquals(xorBitmap.getCurrentSizeInBytes(),
+				index.getXorBitmapSizeInBytes());
+	}
+
+	@Test
+	public void testBitmapSizes_xorResolved() {
+		TestPackBitmapIndex index = new TestPackBitmapIndex(bitmaps);
+		index.getBitmap(xorOid);
+
+		assertTrue(baseBitmap.getCurrentSizeInBytes() < index
+				.getBaseBitmapSizeInBytes());
+		assertEquals(0, index.getXorBitmapSizeInBytes());
+	}
+
+	private static final StoredBitmap newBaseStoredBitmap(ObjectId oid,
+			EWAHCompressedBitmap base) {
+		return new StoredBitmap(oid, base, null, 0);
+	}
+
+	private static StoredBitmap newXorStoredBitmap(ObjectId oid,
+			EWAHCompressedBitmap xorMask, StoredBitmap base) {
+		return new StoredBitmap(oid, xorMask, base, 0);
+	}
+
+	private static final EWAHCompressedBitmap bitmapOf(int... bits) {
+		EWAHCompressedBitmap b = new EWAHCompressedBitmap();
+		for (int bit : bits)
+			b.set(bit);
+		return b;
+	}
+
+	private static class TestPackBitmapIndex extends BasePackBitmapIndex {
+		TestPackBitmapIndex(ObjectIdOwnerMap<StoredBitmap> bitmaps) {
+			super(bitmaps);
+		}
+
+		@Override
+		public int findPosition(AnyObjectId objectId) {
+			throw new IllegalStateException();
+		}
+
+		@Override
+		public ObjectId getObject(int position)
+				throws IllegalArgumentException {
+			throw new IllegalStateException();
+		}
+
+		@Override
+		public EWAHCompressedBitmap ofObjectType(EWAHCompressedBitmap bitmap,
+				int type) {
+			throw new IllegalStateException();
+		}
+
+		@Override
+		public int getObjectCount() {
+			throw new IllegalStateException();
+		}
+
+		@Override
+		public int getBitmapCount() {
+			return getBitmaps().size();
+		}
+	}
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/StoredBitmapTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/StoredBitmapTest.java
index f5c7c67..684ee52 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/StoredBitmapTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/StoredBitmapTest.java
@@ -11,6 +11,8 @@
 package org.eclipse.jgit.internal.storage.file;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import org.eclipse.jgit.internal.storage.file.BasePackBitmapIndex.StoredBitmap;
 import org.eclipse.jgit.lib.ObjectId;
@@ -44,6 +46,33 @@ public void testGetBitmapWithThreeXor() {
 		assertEquals(bitmapOf(50, 90), sb.getBitmap());
 	}
 
+	@Test
+	public void testGetSizeWithoutXor() {
+		EWAHCompressedBitmap base = bitmapOf(100);
+		StoredBitmap sb = newStoredBitmap(base);
+		assertEquals(base.sizeInBytes(), sb.getCurrentSizeInBytes());
+		sb.getBitmap();
+		assertEquals(base.sizeInBytes(), sb.getCurrentSizeInBytes());
+	}
+
+	@Test
+	public void testGetSizeWithOneXor() {
+		EWAHCompressedBitmap base = bitmapOf(100, 101);
+		EWAHCompressedBitmap xor = bitmapOf(100);
+		StoredBitmap sb = newStoredBitmap(base, xor);
+		assertEquals(xor.sizeInBytes(), sb.getCurrentSizeInBytes());
+	}
+
+	@Test
+	public void testIsBase() {
+		EWAHCompressedBitmap one = bitmapOf(100, 101);
+		EWAHCompressedBitmap two = bitmapOf(100);
+		StoredBitmap baseBitmap = newStoredBitmap(one);
+		StoredBitmap xoredBitmap = newStoredBitmap(one, two);
+		assertTrue(baseBitmap.isBase());
+		assertFalse(xoredBitmap.isBase());
+	}
+
 	private static final StoredBitmap newStoredBitmap(
 			EWAHCompressedBitmap... bitmaps) {
 		StoredBitmap sb = null;
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/BitmapWalkerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/BitmapWalkerTest.java
new file mode 100644
index 0000000..a59a71d
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/BitmapWalkerTest.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2023, Google Inc.
+ *
+ * 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.revwalk;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.List;
+
+import org.eclipse.jgit.internal.storage.file.FileRepository;
+import org.eclipse.jgit.internal.storage.file.GC;
+import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
+import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.BitmapIndex;
+import org.eclipse.jgit.lib.BitmapIndex.Bitmap;
+import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
+import org.eclipse.jgit.lib.BitmapIndex.BitmapLookupListener;
+import org.eclipse.jgit.lib.NullProgressMonitor;
+import org.eclipse.jgit.lib.ObjectReader;
+import org.junit.Before;
+import org.junit.Test;
+
+public class BitmapWalkerTest extends LocalDiskRepositoryTestCase {
+
+	private static final String MAIN = "refs/heads/main";
+
+	TestRepository<FileRepository> repo;
+
+	RevCommit tipWithBitmap;
+
+	@Override
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		FileRepository db = createWorkRepository();
+		repo = new TestRepository<>(db);
+
+		RevCommit base = repo.commit().create();
+		RevCommit one = repo.commit().parent(base).create();
+		tipWithBitmap = repo.commit().parent(one).create();
+		repo.update(MAIN, tipWithBitmap);
+
+		GC gc = new GC(repo.getRepository());
+		gc.setAuto(false);
+		gc.gc().get();
+
+		assertNotNull(repo.getRevWalk().getObjectReader().getBitmapIndex());
+	}
+
+	private static class BitmapWalkCounter implements BitmapLookupListener {
+		int withBitmap;
+
+		int withoutBitmap;
+
+		@Override
+		public void onBitmapFound(AnyObjectId oid) {
+			withBitmap += 1;
+		}
+
+		@Override
+		public void onBitmapNotFound(AnyObjectId oid) {
+			withoutBitmap += 1;
+		}
+	}
+
+	@Test
+	public void counters_bitmapAtTip() throws Exception {
+		try (RevWalk rw = repo.getRevWalk();
+				ObjectReader or = rw.getObjectReader()) {
+			BitmapWalkCounter counter = new BitmapWalkCounter();
+			BitmapIndex bitmapIndex = or.getBitmapIndex();
+			bitmapIndex.addBitmapLookupListener(counter);
+			BitmapWalker bw = new BitmapWalker(rw.toObjectWalkWithSameObjects(),
+					bitmapIndex, NullProgressMonitor.INSTANCE);
+			BitmapBuilder bitmap = bw.findObjects(List.of(tipWithBitmap), null,
+					true);
+			// First commit has a tree, so in total 4 objects
+			assertEquals(4, bitmap.cardinality());
+			assertEquals(1, counter.withBitmap);
+			assertEquals(0, counter.withoutBitmap);
+			assertEquals(0, bw.getCountOfBitmapIndexMisses());
+		}
+	}
+
+	@Test
+	public void counters_bitmapAfterAStep() throws Exception {
+		System.out.println("Old tip: " + tipWithBitmap);
+		RevCommit newTip = repo.commit().parent(tipWithBitmap).create();
+		System.out.println("New tip: " + newTip);
+		try (RevWalk rw = repo.getRevWalk();
+				ObjectReader or = rw.getObjectReader()) {
+			BitmapWalkCounter counter = new BitmapWalkCounter();
+			BitmapIndex bitmapIndex = or.getBitmapIndex();
+			bitmapIndex.addBitmapLookupListener(counter);
+			BitmapWalker bw = new BitmapWalker(rw.toObjectWalkWithSameObjects(),
+					bitmapIndex, NullProgressMonitor.INSTANCE);
+
+			bw.findObjects(List.of(newTip), null, true);
+
+			assertEquals(1, counter.withBitmap);
+			// It checks bitmap before marking as interesting, and again in the
+			// walk
+			assertEquals(2, counter.withoutBitmap);
+			assertEquals(1, bw.getCountOfBitmapIndexMisses());
+		}
+	}
+
+	@Test
+	public void counters_bitmapAfterThreeSteps() throws Exception {
+		RevCommit newOne = repo.commit().parent(tipWithBitmap).create();
+		RevCommit newTwo = repo.commit().parent(newOne).create();
+		RevCommit newTip = repo.commit().parent(newTwo).create();
+
+		try (RevWalk rw = repo.getRevWalk();
+				ObjectReader or = rw.getObjectReader()) {
+			BitmapWalkCounter counter = new BitmapWalkCounter();
+			BitmapIndex bitmapIndex = or.getBitmapIndex();
+			bitmapIndex.addBitmapLookupListener(counter);
+			BitmapWalker bw = new BitmapWalker(rw.toObjectWalkWithSameObjects(),
+					bitmapIndex, NullProgressMonitor.INSTANCE);
+
+			bw.findObjects(List.of(newTip), null, true);
+
+			assertEquals(1, counter.withBitmap);
+			assertEquals(4, counter.withoutBitmap);
+			assertEquals(3, bw.getCountOfBitmapIndexMisses());
+		}
+	}
+
+	@Test
+	public void counters_bitmapAfterThreeStepsWithSeen() throws Exception {
+		RevCommit newOne = repo.commit().parent(tipWithBitmap).create();
+		RevCommit newTwo = repo.commit().parent(newOne).create();
+		RevCommit newTip = repo.commit().parent(newTwo).create();
+
+		try (RevWalk rw = repo.getRevWalk();
+				ObjectReader or = rw.getObjectReader()) {
+			BitmapIndex bitmapIndex = or.getBitmapIndex();
+			Bitmap seen = bitmapIndex.getBitmap(tipWithBitmap);
+			BitmapBuilder seenBB = bitmapIndex.newBitmapBuilder().or(seen);
+			BitmapWalkCounter counter = new BitmapWalkCounter();
+			bitmapIndex.addBitmapLookupListener(counter);
+			BitmapWalker bw = new BitmapWalker(rw.toObjectWalkWithSameObjects(),
+					bitmapIndex, NullProgressMonitor.INSTANCE);
+
+			bw.findObjects(List.of(newTip), seenBB, true);
+
+			assertEquals(0, counter.withBitmap);
+			assertEquals(4, counter.withoutBitmap);
+			assertEquals(3, bw.getCountOfBitmapIndexMisses());
+		}
+	}
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
index 303aedc..657c3d2 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
@@ -80,6 +80,33 @@ public void testNoFooters_ShortBodyWithLF() {
 	}
 
 	@Test
+	public void testNoFooters_noRawMsg_SingleLineNoHeaders() {
+		String noRawMsg = "commit message with no header lines\n";
+		List<FooterLine> footers = FooterLine.fromMessage(noRawMsg);
+		assertNotNull(footers);
+		assertEquals(0, footers.size());
+	}
+
+	@Test
+	public void testOneFooter_noRawMsg_MultiParagraphNoHeaders() {
+		String noRawMsg = "subject\n\n"
+			+ "Not: footer\n\n"
+			+ "Footer: value\n";
+		List<FooterLine> footers = FooterLine.fromMessage(noRawMsg);
+		assertNotNull(footers);
+		assertEquals(1, footers.size());
+	}
+
+	@Test
+	public void testOneFooter_longSubject_NoHeaders() {
+		String noRawMsg = "50+ chars loooooooooooooong custom commit message.\n\n"
+				+ "Footer: value\n";
+		List<FooterLine> footers = FooterLine.fromMessage(noRawMsg);
+		assertNotNull(footers);
+		assertEquals(1, footers.size());
+	}
+
+	@Test
 	public void testSignedOffBy_OneUserNoLF() {
 		String msg = buildMessage("subject\n\nbody of commit\n" + "\n"
 			+ "Signed-off-by: A. U. Thor <a@example.com>");
@@ -264,18 +291,26 @@ public void testSignedOffBy_SkipNonFooter() {
 		f = footers.get(0);
 		assertEquals("Signed-off-by", f.getKey());
 		assertEquals("A. U. Thor <a@example.com>", f.getValue());
+		assertEquals(217, f.getStartOffset());
+		assertEquals(258, f.getEndOffset());
 
 		f = footers.get(1);
 		assertEquals("CC", f.getKey());
 		assertEquals("<some.mailing.list@example.com>", f.getValue());
+		assertEquals(259, f.getStartOffset());
+		assertEquals(305, f.getEndOffset());
 
 		f = footers.get(2);
 		assertEquals("Acked-by", f.getKey());
 		assertEquals("Some Reviewer <sr@example.com>", f.getValue());
+		assertEquals(356, f.getStartOffset());
+		assertEquals(396, f.getEndOffset());
 
 		f = footers.get(3);
 		assertEquals("Signed-off-by", f.getKey());
 		assertEquals("Main Tain Er <mte@example.com>", f.getValue());
+		assertEquals(397, f.getStartOffset());
+		assertEquals(442, f.getEndOffset());
 	}
 
 	@Test
@@ -369,6 +404,26 @@ public void testMultilineFooters_multipleWhitespaceAreAllowed() {
 				f.getValue());
 	}
 
+	@Test
+	public void testFirstLineNeverFooter() {
+		String msg = buildMessage(
+				String.join("\n", "First-Line: is never a footer", "Foo: ter",
+						"1-is: also a footer"));
+		List<FooterLine> footers = FooterLine.fromMessage(msg);
+		assertNotNull(footers);
+		assertEquals(2, footers.size());
+	}
+
+	@Test
+	public void testLineAfterFooters() {
+		String msg = buildMessage(
+				String.join("\n", "Subject line: is never a footer", "Foo: ter",
+						"1-is: also a footer", "this is not a footer"));
+		List<FooterLine> footers = FooterLine.fromMessage(msg);
+		assertNotNull(footers);
+		assertEquals(2, footers.size());
+	}
+
 	private String buildMessage(String msg) {
 		StringBuilder buf = new StringBuilder();
 		buf.append("tree " + ObjectId.zeroId().name() + "\n");
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FSTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FSTest.java
index 51236e1..3a7fa23 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FSTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FSTest.java
@@ -29,8 +29,12 @@
 import java.time.Duration;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
 import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
 import org.eclipse.jgit.errors.CommandFailedException;
@@ -196,6 +200,23 @@ public void testReadPipeCommandStartFailure()
 	}
 
 	@Test
+	@SuppressWarnings("boxing")
+	public void testConcurrentSymlinkSupport()
+			throws ExecutionException, InterruptedException {
+		Assume.assumeTrue(FS.DETECTED.supportsSymlinks());
+		int n = 3;
+		List<CompletableFuture<Boolean>> futures = new ArrayList<>();
+		for (int i = 0; i < n; i++) {
+			futures.add(CompletableFuture.supplyAsync(
+					() -> FS.DETECTED.newInstance().supportsSymlinks()));
+		}
+
+		for (int i = 0; i < n; i++) {
+			assertTrue(futures.get(i).get());
+		}
+	}
+
+	@Test
 	public void testFsTimestampResolution() throws Exception {
 		DateTimeFormatter formatter = DateTimeFormatter
 				.ofPattern("uuuu-MMM-dd HH:mm:ss.nnnnnnnnn", Locale.ENGLISH)
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/RawParseUtilsTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/RawParseUtilsTest.java
index e80c075..e4ef302 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/RawParseUtilsTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/RawParseUtilsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011, Leonard Broman <leonard.broman@gmail.com> and others
+ * Copyright (C) 2011, 2024 Leonard Broman <leonard.broman@gmail.com> 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,6 +15,7 @@
 
 import java.nio.charset.Charset;
 import java.nio.charset.UnsupportedCharsetException;
+import java.util.List;
 
 import org.eclipse.jgit.lib.Constants;
 import org.junit.Test;
@@ -24,7 +25,7 @@
 public class RawParseUtilsTest {
 	String commit = "tree e3a1035abd2b319bb01e57d69b0ba6cab289297e\n" +
 		"parent 54e895b87c0768d2317a2b17062e3ad9f76a8105\n" +
-		"committer A U Thor <author@xample.com 1528968566 +0200\n" +
+			"committer A U Thor <author@example.com> 1528968566 +0200\n" +
 		"gpgsig -----BEGIN PGP SIGNATURE-----\n" +
 		" \n" +
 		" wsBcBAABCAAQBQJbGB4pCRBK7hj4Ov3rIwAAdHIIAENrvz23867ZgqrmyPemBEZP\n" +
@@ -67,21 +68,24 @@ public void testParseEncoding_badEncoding() {
 	public void testHeaderStart() {
 		byte[] headerName = "some".getBytes(UTF_8);
 		byte[] commitBytes = commit.getBytes(UTF_8);
-		assertEquals(625, RawParseUtils.headerStart(headerName, commitBytes, 0));
-		assertEquals(625, RawParseUtils.headerStart(headerName, commitBytes, 4));
+		assertEquals(627,
+				RawParseUtils.headerStart(headerName, commitBytes, 0));
+		assertEquals(627,
+				RawParseUtils.headerStart(headerName, commitBytes, 4));
 
 		byte[] missingHeaderName = "missing".getBytes(UTF_8);
 		assertEquals(-1, RawParseUtils.headerStart(missingHeaderName,
 							   commitBytes, 0));
 
 		byte[] fauxHeaderName = "other".getBytes(UTF_8);
-		assertEquals(-1, RawParseUtils.headerStart(fauxHeaderName, commitBytes, 625 + 4));
+		assertEquals(-1, RawParseUtils.headerStart(fauxHeaderName, commitBytes,
+				627 + 4));
 	}
 
 	@Test
 	public void testHeaderEnd() {
 		byte[] commitBytes = commit.getBytes(UTF_8);
-		int[] expected = new int[] {45, 93, 148, 619, 637};
+		int[] expected = new int[] { 45, 93, 150, 621, 639 };
 		int start = 0;
 		for (int i = 0; i < expected.length; i++) {
 			start = RawParseUtils.headerEnd(commitBytes, start);
@@ -89,4 +93,44 @@ public void testHeaderEnd() {
 			start += 1;
 		}
 	}
+
+	@Test
+	public void testHeaderValue() {
+		byte[] commitBytes = commit.getBytes(UTF_8);
+		List<String> headers = List.of(
+				"e3a1035abd2b319bb01e57d69b0ba6cab289297e",
+				"54e895b87c0768d2317a2b17062e3ad9f76a8105",
+				"A U Thor <author@example.com> 1528968566 +0200",
+				"-----BEGIN PGP SIGNATURE-----\n"
+						+ "\n"
+						+ "wsBcBAABCAAQBQJbGB4pCRBK7hj4Ov3rIwAAdHIIAENrvz23867ZgqrmyPemBEZP\n"
+						+ "U24B1Tlq/DWvce2buaxmbNQngKZ0pv2s8VMc11916WfTIC9EKvioatmpjduWvhqj\n"
+						+ "znQTFyiMor30pyYsfrqFuQZvqBW01o8GEWqLg8zjf9Rf0R3LlOEw86aT8CdHRlm6\n"
+						+ "wlb22xb8qoX4RB+LYfz7MhK5F+yLOPXZdJnAVbuyoMGRnDpwdzjL5Hj671+XJxN5\n"
+						+ "SasRdhxkkfw/ZnHxaKEc4juMz8Nziz27elRwhOQqlTYoXNJnsV//wy5Losd7aKi1\n"
+						+ "xXXyUpndEOmT0CIcKHrN/kbYoVL28OJaxoBuva3WYQaRrzEe3X02NMxZe9gkSqA=\n"
+						+ "=TClh\n"
+						+ "-----END PGP SIGNATURE-----",
+				"other header");
+		int start = 0;
+		for (String header : headers) {
+			int endOfTag = RawParseUtils.next(commitBytes, start, ' ');
+			int end = RawParseUtils.headerEnd(commitBytes, start);
+
+			assertEquals(header, new String(
+					RawParseUtils.headerValue(commitBytes, endOfTag, end),
+					UTF_8));
+			start = end + 1;
+		}
+	}
+
+	@Test
+	public void testLastHeaderEnd() {
+		byte[] raw = "headerA A header\nheaderB Another header".getBytes(UTF_8);
+		int bStart = RawParseUtils.headerStart("headerB".getBytes(UTF_8), raw,
+				0);
+		assertEquals(25, bStart);
+		int bEnd = RawParseUtils.nextLfSkippingSplitLines(raw, bStart);
+		assertEquals(raw.length, bEnd);
+	}
 }
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index f9b6a84..00e7f53 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -4,14 +4,14 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ui
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.awtui;version="6.8.1"
-Import-Package: org.eclipse.jgit.errors;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.lib;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.nls;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revplot;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.revwalk;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.transport;version="[6.8.1,6.9.0)",
- org.eclipse.jgit.util;version="[6.8.1,6.9.0)"
+Export-Package: org.eclipse.jgit.awtui;version="6.9.1"
+Import-Package: org.eclipse.jgit.errors;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.lib;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.nls;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revplot;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.revwalk;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.transport;version="[6.9.1,6.10.0)",
+ org.eclipse.jgit.util;version="[6.9.1,6.10.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index a4e59a2..8462fb0 100644
--- a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ui - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ui.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index b051ad5..9f7cfad 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
index 506a89a..dda62f2 100644
--- a/org.eclipse.jgit/.settings/.api_filters
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -1,32 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.jgit" version="2">
-    <resource path="src/org/eclipse/jgit/api/GarbageCollectCommand.java" type="org.eclipse.jgit.api.GarbageCollectCommand">
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="setPackKeptObjects(boolean)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/lib/BitmapIndex.java" type="org.eclipse.jgit.lib.BitmapIndex">
+    <resource path="src/org/eclipse/jgit/lib/GpgSignatureVerifier.java" type="org.eclipse.jgit.lib.GpgSignatureVerifier">
         <filter id="404000815">
             <message_arguments>
-                <message_argument value="org.eclipse.jgit.lib.BitmapIndex"/>
-                <message_argument value="addBitmapLookupListener(BitmapIndex.BitmapLookupListener)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/lib/ConfigConstants.java" type="org.eclipse.jgit.lib.ConfigConstants">
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="CONFIG_KEY_PACK_KEPT_OBJECTS"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="CONFIG_REPACK_SECTION"/>
+                <message_argument value="org.eclipse.jgit.lib.GpgSignatureVerifier"/>
+                <message_argument value="verify(GpgConfig, byte[], byte[])"/>
             </message_arguments>
         </filter>
     </resource>
@@ -34,25 +12,7 @@
         <filter id="336658481">
             <message_arguments>
                 <message_argument value="org.eclipse.jgit.storage.pack.PackConfig"/>
-                <message_argument value="DEFAULT_PACK_KEPT_OBJECTS"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="DEFAULT_PACK_KEPT_OBJECTS"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="isPackKeptObjects()"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.13.3"/>
-                <message_argument value="setPackKeptObjects(boolean)"/>
+                <message_argument value="DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT"/>
             </message_arguments>
         </filter>
     </resource>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index b0215f5..b2b01fd 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 6.8.1.qualifier
+Bundle-Version: 6.9.1.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Eclipse-ExtensibleAPI: true
-Export-Package: org.eclipse.jgit.annotations;version="6.8.1",
- org.eclipse.jgit.api;version="6.8.1";
+Export-Package: org.eclipse.jgit.annotations;version="6.9.1",
+ org.eclipse.jgit.api;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.notes,
    org.eclipse.jgit.dircache,
@@ -23,18 +23,18 @@
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.blame,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="6.8.1";
+ org.eclipse.jgit.api.errors;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="6.8.1";
+ org.eclipse.jgit.attributes;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.blame;version="6.8.1";
+ org.eclipse.jgit.blame;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="6.8.1";
+ org.eclipse.jgit.diff;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.revwalk,
@@ -42,53 +42,53 @@
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="6.8.1";
+ org.eclipse.jgit.dircache;version="6.9.1";
   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="6.8.1";
+ org.eclipse.jgit.errors;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.internal.storage.pack",
- org.eclipse.jgit.events;version="6.8.1";
+ org.eclipse.jgit.events;version="6.9.1";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="6.8.1",
- org.eclipse.jgit.gitrepo;version="6.8.1";
+ org.eclipse.jgit.fnmatch;version="6.9.1",
+ org.eclipse.jgit.gitrepo;version="6.9.1";
   uses:="org.xml.sax.helpers,
    org.eclipse.jgit.api,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="6.8.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="6.8.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="6.8.1",
- org.eclipse.jgit.ignore.internal;version="6.8.1";
+ org.eclipse.jgit.gitrepo.internal;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.hooks;version="6.9.1";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="6.9.1",
+ org.eclipse.jgit.ignore.internal;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="6.8.1";
+ org.eclipse.jgit.internal;version="6.9.1";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.diff;version="6.8.1";
+ org.eclipse.jgit.internal.diff;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.diffmergetool;version="6.8.1";
+ org.eclipse.jgit.internal.diffmergetool;version="6.9.1";
   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="6.8.1";
+ org.eclipse.jgit.internal.fsck;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.revwalk;version="6.8.1";
+ org.eclipse.jgit.internal.revwalk;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.commitgraph;version="6.8.1";
+ org.eclipse.jgit.internal.storage.commitgraph;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.dfs;version="6.8.1";
+ org.eclipse.jgit.internal.storage.dfs;version="6.9.1";
   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="6.8.1";
+ org.eclipse.jgit.internal.storage.file;version="6.9.1";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -97,36 +97,36 @@
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.internal.storage.io;version="6.8.1";
+ org.eclipse.jgit.internal.storage.io;version="6.9.1";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.memory;version="6.8.1";
+ org.eclipse.jgit.internal.storage.memory;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.pack;version="6.8.1";
+ org.eclipse.jgit.internal.storage.pack;version="6.9.1";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="6.8.1";
+ org.eclipse.jgit.internal.storage.reftable;version="6.9.1";
   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="6.8.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.connectivity;version="6.8.1";
+ org.eclipse.jgit.internal.submodule;version="6.9.1";x-internal:=true,
+ org.eclipse.jgit.internal.transport.connectivity;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.http;version="6.8.1";
+ org.eclipse.jgit.internal.transport.http;version="6.9.1";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="6.8.1";
+ org.eclipse.jgit.internal.transport.parser;version="6.9.1";
   x-friends:="org.eclipse.jgit.http.server,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="6.8.1";
+ org.eclipse.jgit.internal.transport.ssh;version="6.9.1";
   x-friends:="org.eclipse.jgit.ssh.apache,
    org.eclipse.jgit.ssh.jsch,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.util;version="6.8.1";
+ org.eclipse.jgit.internal.util;version="6.9.1";
   x-friends:=" org.eclipse.jgit.junit",
- org.eclipse.jgit.lib;version="6.8.1";
+ org.eclipse.jgit.lib;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.sha1,
    org.eclipse.jgit.dircache,
@@ -140,12 +140,12 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.lib.internal;version="6.8.1";
+ org.eclipse.jgit.lib.internal;version="6.9.1";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.pgm,
    org.eclipse.egit.ui",
- org.eclipse.jgit.logging;version="6.8.1",
- org.eclipse.jgit.merge;version="6.8.1";
+ org.eclipse.jgit.logging;version="6.9.1",
+ org.eclipse.jgit.merge;version="6.9.1";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -154,40 +154,40 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.api,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.nls;version="6.8.1",
- org.eclipse.jgit.notes;version="6.8.1";
+ org.eclipse.jgit.nls;version="6.9.1",
+ org.eclipse.jgit.notes;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="6.8.1";
+ org.eclipse.jgit.patch;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="6.8.1";
+ org.eclipse.jgit.revplot;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="6.8.1";
+ org.eclipse.jgit.revwalk;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.revwalk.filter;version="6.8.1";
+ org.eclipse.jgit.revwalk.filter;version="6.9.1";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="6.8.1";
+ org.eclipse.jgit.storage.file;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="6.8.1";
+ org.eclipse.jgit.storage.pack;version="6.9.1";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="6.8.1";
+ org.eclipse.jgit.submodule;version="6.9.1";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.transport;version="6.8.1";
+ org.eclipse.jgit.transport;version="6.9.1";
   uses:="javax.crypto,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.lib,
@@ -200,21 +200,21 @@
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.storage.pack,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.transport.http;version="6.8.1";
+ org.eclipse.jgit.transport.http;version="6.9.1";
   uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="6.8.1";
+ org.eclipse.jgit.transport.resolver;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.treewalk;version="6.8.1";
+ org.eclipse.jgit.treewalk;version="6.9.1";
   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="6.8.1";
+ org.eclipse.jgit.treewalk.filter;version="6.9.1";
   uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="6.8.1";
+ org.eclipse.jgit.util;version="6.9.1";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.revwalk,
@@ -227,18 +227,18 @@
    org.eclipse.jgit.treewalk,
    javax.net.ssl,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.util.io;version="6.8.1";
+ org.eclipse.jgit.util.io;version="6.9.1";
   uses:="org.eclipse.jgit.attributes,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util.sha1;version="6.8.1",
- org.eclipse.jgit.util.time;version="6.8.1"
+ org.eclipse.jgit.util.sha1;version="6.9.1",
+ org.eclipse.jgit.util.time;version="6.9.1"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  javax.crypto,
  javax.management,
  javax.net.ssl,
  org.apache.commons.codec.digest;version="1.15.0",
- org.slf4j;version="[1.7.0,2.0.0)",
+ org.slf4j;version="[1.7.0,3.0.0)",
  org.xml.sax,
  org.xml.sax.helpers
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index 4db2870..70e1e49 100644
--- a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.8.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="6.8.1.qualifier";roots="."
+Bundle-Version: 6.9.1.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="6.9.1.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 8e18b4c..49a6092 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>6.8.1-SNAPSHOT</version>
+    <version>6.9.1-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 19c9008..bbfd0b0 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -716,7 +716,6 @@
 shortReadOfOptionalDIRCExtensionExpectedAnotherBytes=Short read of optional DIRC extension {0}; expected another {1} bytes within the section.
 shortSkipOfBlock=Short skip of block.
 shutdownCleanup=Cleanup {} during JVM shutdown
-shutdownCleanupFailed=Cleanup during JVM shutdown failed
 shutdownCleanupListenerFailed=Cleanup of {0} during JVM shutdown failed
 signatureVerificationError=Signature verification failed
 signatureVerificationUnavailable=No signature verifier registered
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
index 38e795b..a1c6478 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommand.java
@@ -9,6 +9,7 @@
  */
 package org.eclipse.jgit.api;
 
+import static org.eclipse.jgit.api.CherryPickCommitMessageProvider.ORIGINAL;
 import static org.eclipse.jgit.lib.Constants.OBJECT_ID_ABBREV_STRING_LENGTH;
 
 import java.io.IOException;
@@ -66,6 +67,8 @@ public class CherryPickCommand extends GitCommand<CherryPickResult> {
 
 	private String ourCommitName = null;
 
+	private CherryPickCommitMessageProvider messageProvider = ORIGINAL;
+
 	private MergeStrategy strategy = MergeStrategy.RECURSIVE;
 
 	private ContentMergeStrategy contentStrategy;
@@ -168,8 +171,10 @@ public CherryPickResult call() throws GitAPIException, NoMessageException,
 					dco.checkout();
 					if (!noCommit) {
 						try (Git git = new Git(getRepository())) {
+							String commitMessage = messageProvider
+									.getCherryPickedCommitMessage(srcCommit);
 							newHead = git.commit()
-									.setMessage(srcCommit.getFullMessage())
+									.setMessage(commitMessage)
 									.setReflogComment(reflogPrefix + " " //$NON-NLS-1$
 											+ srcCommit.getShortMessage())
 									.setAuthor(srcCommit.getAuthorIdent())
@@ -297,6 +302,22 @@ public CherryPickCommand setOurCommitName(String ourCommitName) {
 	}
 
 	/**
+	 * Set a message provider for a target cherry-picked commit<br>
+	 * By default original commit message is used (see
+	 * {@link CherryPickCommitMessageProvider#ORIGINAL})
+	 *
+	 * @param messageProvider
+	 *            the commit message provider
+	 * @return {@code this}
+	 * @since 6.9
+	 */
+	public CherryPickCommand setCherryPickCommitMessageProvider(
+			CherryPickCommitMessageProvider messageProvider) {
+		this.messageProvider = messageProvider;
+		return this;
+	}
+
+	/**
 	 * Set the prefix to use in the reflog.
 	 * <p>
 	 * This is primarily needed for implementing rebase in terms of
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommitMessageProvider.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommitMessageProvider.java
new file mode 100644
index 0000000..50d65b6
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CherryPickCommitMessageProvider.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2023 Dmitrii Naumenko <dmitrii.naumenko@jetbrains.com>
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is aailable at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.api;
+
+import java.util.List;
+
+import org.eclipse.jgit.revwalk.FooterLine;
+import org.eclipse.jgit.revwalk.RevCommit;
+
+/**
+ * The interface is used to construct a cherry-picked commit message based on
+ * the original commit
+ *
+ * @see #ORIGINAL
+ * @see #ORIGINAL_WITH_REFERENCE
+ * @since 6.9
+ */
+public interface CherryPickCommitMessageProvider {
+
+	/**
+	 * This provider returns the original commit message
+	 */
+	static final CherryPickCommitMessageProvider ORIGINAL = RevCommit::getFullMessage;
+
+	/**
+	 * This provider returns the original commit message with original commit
+	 * hash in SHA-1 form.<br>
+	 * Example:
+	 *
+	 * <pre>
+	 * <code>my original commit message
+	 *
+	 * (cherry picked from commit 75355897dc28e9975afed028c1a6d8c6b97b2a3c)</code>
+	 * </pre>
+	 *
+	 * This is similar to <code>-x</code> flag in git-scm (see <a href=
+	 * "https://git-scm.com/docs/git-cherry-pick#_options">https://git-scm.com/docs/git-cherry-pick#_options</a>)
+	 */
+	static final CherryPickCommitMessageProvider ORIGINAL_WITH_REFERENCE = srcCommit -> {
+		String fullMessage = srcCommit.getFullMessage();
+
+		// Don't add extra new line after footer (aka trailer)
+		// https://stackoverflow.com/questions/70007405/git-log-exclude-cherry-pick-messages-for-trailers
+		// https://lore.kernel.org/git/7vmx136cdc.fsf@alter.siamese.dyndns.org
+		String separator = messageEndsWithFooter(srcCommit) ? "\n" : "\n\n"; //$NON-NLS-1$//$NON-NLS-2$
+		String revisionString = srcCommit.getName();
+		return String.format("%s%s(cherry picked from commit %s)", //$NON-NLS-1$
+				fullMessage, separator, revisionString);
+	};
+
+	/**
+	 * @param srcCommit
+	 *            original cherry-picked commit
+	 * @return target cherry-picked commit message
+	 */
+	String getCherryPickedCommitMessage(RevCommit srcCommit);
+
+	private static boolean messageEndsWithFooter(RevCommit srcCommit) {
+		byte[] rawBuffer = srcCommit.getRawBuffer();
+		List<FooterLine> footers = srcCommit.getFooterLines();
+		int maxFooterEnd = footers.stream().mapToInt(FooterLine::getEndOffset)
+				.max().orElse(-1);
+		return rawBuffer.length == maxFooterEnd;
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
index 0f7b8af..757aff8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
@@ -1064,12 +1064,16 @@ private RebaseResult stop(RevCommit commitToPick, RebaseResult.Status status)
 		String authorScript = toAuthorScript(author);
 		rebaseState.createFile(AUTHOR_SCRIPT, authorScript);
 		rebaseState.createFile(MESSAGE, commitToPick.getFullMessage());
-		ByteArrayOutputStream bos = new ByteArrayOutputStream();
-		try (DiffFormatter df = new DiffFormatter(bos)) {
-			df.setRepository(repo);
-			df.format(commitToPick.getParent(0), commitToPick);
+		if (commitToPick.getParentCount() > 0) {
+			ByteArrayOutputStream bos = new ByteArrayOutputStream();
+			try (DiffFormatter df = new DiffFormatter(bos)) {
+				df.setRepository(repo);
+				df.format(commitToPick.getParent(0), commitToPick);
+			}
+			rebaseState.createFile(PATCH, new String(bos.toByteArray(), UTF_8));
+		} else {
+			rebaseState.createFile(PATCH, ""); //$NON-NLS-1$
 		}
-		rebaseState.createFile(PATCH, new String(bos.toByteArray(), UTF_8));
 		rebaseState.createFile(STOPPED_SHA,
 				repo.newObjectReader()
 				.abbreviate(
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 700b54a..ef464e3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -745,7 +745,6 @@ public static JGitText get() {
 	/***/ public String shortReadOfOptionalDIRCExtensionExpectedAnotherBytes;
 	/***/ public String shortSkipOfBlock;
 	/***/ public String shutdownCleanup;
-	/***/ public String shutdownCleanupFailed;
 	/***/ public String shutdownCleanupListenerFailed;
 	/***/ public String signatureVerificationError;
 	/***/ public String signatureVerificationUnavailable;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java
index 53d921e..ad3ce50 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/ChangedPathFilter.java
@@ -87,6 +87,7 @@ private ChangedPathFilter(byte[] data, int offset, int length) {
 	 *            the paths that the filter must match
 	 * @return the corresponding filter
 	 */
+	@SuppressWarnings("ByteBufferBackingArray")
 	public static ChangedPathFilter fromPaths(Set<ByteBuffer> paths) {
 		if (paths.isEmpty()) {
 			return EMPTY;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
index 2f8d964..a07d841 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
@@ -83,6 +83,8 @@ public class DfsInserter extends ObjectInserter {
 	private boolean rollback;
 	private boolean checkExisting = true;
 
+	private int minBytesForObjectSizeIndex = -1;
+
 	/**
 	 * Initialize a new inserter.
 	 *
@@ -91,6 +93,8 @@ public class DfsInserter extends ObjectInserter {
 	 */
 	protected DfsInserter(DfsObjDatabase db) {
 		this.db = db;
+		PackConfig pc = new PackConfig(db.getRepository().getConfig());
+		this.minBytesForObjectSizeIndex = pc.getMinBytesForObjSizeIndex();
 	}
 
 	/**
@@ -109,6 +113,20 @@ void setCompressionLevel(int compression) {
 		this.compression = compression;
 	}
 
+	/**
+	 * Set minimum size for an object to be included in the object size index.
+	 *
+	 * <p>
+	 * Use 0 for all and -1 for nothing (the pack won't have object size index).
+	 *
+	 * @param minBytes
+	 *            only objects with size bigger or equal to this are included in
+	 *            the index.
+	 */
+	protected void setMinBytesForObjectSizeIndex(int minBytes) {
+		this.minBytesForObjectSizeIndex = minBytes;
+	}
+
 	@Override
 	public DfsPackParser newPackParser(InputStream in) throws IOException {
 		return new DfsPackParser(db, this, in);
@@ -195,15 +213,11 @@ public void flush() throws IOException {
 		sortObjectsById();
 
 		PackIndex index = writePackIndex(packDsc, packHash, objectList);
-		PackConfig pConfig = new PackConfig(db.getRepository().getConfig());
-		if (pConfig.isWriteObjSizeIndex()) {
-			writeObjectSizeIndex(packDsc, objectList,
-					pConfig.getMinBytesForObjSizeIndex());
-		}
+		writeObjectSizeIndex(packDsc, objectList);
 		db.commitPack(Collections.singletonList(packDsc), null);
 		rollback = false;
 
-		DfsPackFile p = new DfsPackFile(cache, packDsc);
+		DfsPackFile p = db.createDfsPackFile(cache, packDsc);
 		if (index != null)
 			p.setPackIndex(index);
 		db.addPack(p);
@@ -323,10 +337,14 @@ private static void index(OutputStream out, byte[] packHash,
 	}
 
 	void writeObjectSizeIndex(DfsPackDescription pack,
-			List<PackedObjectInfo> packedObjs, int minSize) throws IOException {
+			List<PackedObjectInfo> packedObjs) throws IOException {
+		if (minBytesForObjectSizeIndex < 0) {
+			return;
+		}
 		try (DfsOutputStream os = db.writeFile(pack, PackExt.OBJECT_SIZE_INDEX);
 				CountingOutputStream cnt = new CountingOutputStream(os)) {
-			PackObjectSizeIndexWriter.createWriter(os, minSize)
+			PackObjectSizeIndexWriter
+					.createWriter(os, minBytesForObjectSizeIndex)
 					.write(packedObjs);
 			pack.addFileExt(OBJECT_SIZE_INDEX);
 			pack.setBlockSize(OBJECT_SIZE_INDEX, os.blockSize());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
index 2375698..9f6eb10 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
@@ -592,7 +592,7 @@ private PackList scanPacksImpl(PackList old) throws IOException {
 			if (oldPack != null) {
 				newPacks.add(oldPack);
 			} else if (dsc.hasFileExt(PackExt.PACK)) {
-				newPacks.add(new DfsPackFile(cache, dsc));
+				newPacks.add(createDfsPackFile(cache, dsc));
 				foundNew = true;
 			}
 
@@ -617,6 +617,23 @@ private PackList scanPacksImpl(PackList old) throws IOException {
 				newReftables.toArray(new DfsReftable[0]));
 	}
 
+	/**
+	 * Create instances of DfsPackFile
+	 *
+	 * Implementors can decide to construct or wrap DfsPackFile in different
+	 * ways.
+	 *
+	 * @param cache
+	 *            block cache
+	 * @param dsc
+	 *            pack description
+	 * @return the dfs packfile
+	 */
+	protected DfsPackFile createDfsPackFile(DfsBlockCache cache,
+			DfsPackDescription dsc) {
+		return new DfsPackFile(cache, dsc);
+	}
+
 	private static Map<DfsPackDescription, DfsPackFile> packMap(PackList old) {
 		Map<DfsPackDescription, DfsPackFile> forReuse = new HashMap<>();
 		for (DfsPackFile p : old.packs) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
index e0f0e13..42b1d23 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
@@ -65,8 +65,11 @@
  */
 public final class DfsPackFile extends BlockBasedFile {
 	private static final int REC_SIZE = Constants.OBJECT_ID_LENGTH + 8;
+
 	private static final long REF_POSITION = 0;
 
+	private static final PackBitmapIndexLoader DEFAULT_BITMAP_LOADER = new StreamPackBitmapIndexLoader();
+
 	/** Index mapping {@link ObjectId} to position within the pack stream. */
 	private volatile PackIndex index;
 
@@ -79,6 +82,8 @@ public final class DfsPackFile extends BlockBasedFile {
 	/** Index of compressed commit graph mapping entire object graph. */
 	private volatile CommitGraph commitGraph;
 
+	private final PackBitmapIndexLoader bitmapLoader;
+
 	/** Index by size */
 	private boolean objectSizeIndexLoadAttempted;
 
@@ -105,6 +110,10 @@ public final class DfsPackFile extends BlockBasedFile {
 	 *            description of the pack within the DFS.
 	 */
 	DfsPackFile(DfsBlockCache cache, DfsPackDescription desc) {
+		this(cache, desc, DEFAULT_BITMAP_LOADER);
+	}
+
+	DfsPackFile(DfsBlockCache cache, DfsPackDescription desc, PackBitmapIndexLoader bitmapLoader) {
 		super(cache, desc, PACK);
 
 		int bs = desc.getBlockSize(PACK);
@@ -114,6 +123,8 @@ public final class DfsPackFile extends BlockBasedFile {
 
 		long sz = desc.getFileSize(PACK);
 		length = sz > 0 ? sz : -1;
+
+		this.bitmapLoader = bitmapLoader;
 	}
 
 	/**
@@ -206,7 +217,7 @@ final boolean isGarbage() {
 	 *             the bitmap index is not available, or is corrupt.
 	 */
 	public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
-		if (invalid || isGarbage() || !desc.hasFileExt(BITMAP_INDEX)) {
+		if (invalid || isGarbage() || !bitmapLoader.hasBitmaps(desc)) {
 			return null;
 		}
 
@@ -214,6 +225,15 @@ public PackBitmapIndex getBitmapIndex(DfsReader ctx) throws IOException {
 			return bitmapIndex;
 		}
 
+		if (!bitmapLoader.keepInDfs(desc)) {
+			PackBitmapIndexLoader.LoadResult result = bitmapLoader
+					.loadPackBitmapIndex(ctx, this);
+			if (bitmapIndex == null && result.bitmapIndex != null) {
+				bitmapIndex = result.bitmapIndex;
+			}
+			return bitmapIndex;
+		}
+
 		DfsStreamKey bitmapKey = desc.getStreamKey(BITMAP_INDEX);
 		AtomicBoolean cacheHit = new AtomicBoolean(true);
 		DfsBlockCache.Ref<PackBitmapIndex> idxref = cache
@@ -1252,31 +1272,11 @@ private DfsBlockCache.Ref<PackObjectSizeIndex> loadObjectSizeIndex(
 	private DfsBlockCache.Ref<PackBitmapIndex> loadBitmapIndex(DfsReader ctx,
 			DfsStreamKey bitmapKey) throws IOException {
 		ctx.stats.readBitmap++;
-		long start = System.nanoTime();
-		try (ReadableChannel rc = ctx.db.openFile(desc, BITMAP_INDEX)) {
-			long size;
-			PackBitmapIndex bmidx;
-			try {
-				bmidx = PackBitmapIndex.read(alignTo8kBlocks(rc),
-						() -> idx(ctx), () -> getReverseIdx(ctx),
-						ctx.getOptions().shouldLoadRevIndexInParallel());
-			} finally {
-				size = rc.position();
-				ctx.stats.readBitmapIdxBytes += size;
-				ctx.stats.readBitmapIdxMicros += elapsedMicros(start);
-			}
-			bitmapIndex = bmidx;
-			return new DfsBlockCache.Ref<>(
-					bitmapKey, REF_POSITION, size, bmidx);
-		} catch (EOFException e) {
-			throw new IOException(MessageFormat.format(
-					DfsText.get().shortReadOfIndex,
-					desc.getFileName(BITMAP_INDEX)), e);
-		} catch (IOException e) {
-			throw new IOException(MessageFormat.format(
-					DfsText.get().cannotReadIndex,
-					desc.getFileName(BITMAP_INDEX)), e);
-		}
+		PackBitmapIndexLoader.LoadResult result = bitmapLoader
+				.loadPackBitmapIndex(ctx, this);
+		bitmapIndex = result.bitmapIndex;
+		return new DfsBlockCache.Ref<>(bitmapKey, REF_POSITION,
+				result.bytesRead, result.bitmapIndex);
 	}
 
 	private DfsBlockCache.Ref<CommitGraph> loadCommitGraph(DfsReader ctx,
@@ -1317,4 +1317,105 @@ private static InputStream alignTo8kBlocks(ReadableChannel rc) {
 		}
 		return new BufferedInputStream(in, bs);
 	}
+
+	/**
+	 * Loads the PackBitmapIndex associated with this packfile
+	 */
+	public interface PackBitmapIndexLoader {
+		/**
+		 * Does this pack has bitmaps associated?
+		 *
+		 * @param desc
+		 *            the pack
+		 * @return true if the pack has bitmaps
+		 */
+		boolean hasBitmaps(DfsPackDescription desc);
+
+		/**
+		 * If the returned instance must be kept in DFS cache
+		 *
+		 * It should be true when the instance is expensive to load and can be
+		 * reused.
+		 *
+		 * @param desc
+		 *            the pack
+		 * @return true if the returned bitmap index should be kept in DFS
+		 */
+		boolean keepInDfs(DfsPackDescription desc);
+
+		/**
+		 * Returns a PackBitmapIndex for this pack, if the pack has bitmaps
+		 * associated.
+		 *
+		 * @param ctx
+		 *            the reader
+		 * @param pack
+		 *            the pack
+		 * @return the pack bitmap index and bytes size (when applicable)
+		 * @throws IOException
+		 *             error accessing storage
+		 */
+		LoadResult loadPackBitmapIndex(DfsReader ctx, DfsPackFile pack)
+				throws IOException;
+
+		/**
+		 * The instance of the pack bitmap index and the amount of bytes loaded.
+		 *
+		 * The bytes can be 0, if the implementation doesn't do any initial
+		 * loading.
+		 */
+		class LoadResult {
+			final PackBitmapIndex bitmapIndex;
+
+			final long bytesRead;
+
+			LoadResult(PackBitmapIndex packBitmapIndex, long bytesRead) {
+				this.bitmapIndex = packBitmapIndex;
+				this.bytesRead = bytesRead;
+			}
+		}
+	}
+
+	/**
+	 * Load the packbitmapindex from the BITMAP_INDEX pack extension
+	 */
+	private static final class StreamPackBitmapIndexLoader implements PackBitmapIndexLoader {
+		@Override
+		public boolean hasBitmaps(DfsPackDescription desc) {
+			return desc.hasFileExt(BITMAP_INDEX);
+		}
+
+		@Override
+		public boolean keepInDfs(DfsPackDescription desc) {
+			return true;
+		}
+
+		@Override
+		public LoadResult loadPackBitmapIndex(DfsReader ctx, DfsPackFile pack)
+				throws IOException {
+			DfsPackDescription desc = pack.getPackDescription();
+			try (ReadableChannel rc = ctx.db.openFile(desc, BITMAP_INDEX)) {
+				long size;
+				PackBitmapIndex bmidx;
+				try {
+					bmidx = PackBitmapIndex.read(alignTo8kBlocks(rc),
+							() -> pack.idx(ctx), () -> pack.getReverseIdx(ctx),
+							ctx.getOptions().shouldLoadRevIndexInParallel());
+				} finally {
+					size = rc.position();
+				}
+				return new LoadResult(bmidx, size);
+			} catch (EOFException e) {
+				throw new IOException(
+						MessageFormat.format(DfsText.get().shortReadOfIndex,
+								desc.getFileName(BITMAP_INDEX)),
+						e);
+			} catch (IOException e) {
+				throw new IOException(
+						MessageFormat.format(DfsText.get().cannotReadIndex,
+								desc.getFileName(BITMAP_INDEX)),
+						e);
+			}
+		}
+	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
index 8c7b0ec..b19f65c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackParser.java
@@ -26,7 +26,6 @@
 import org.eclipse.jgit.lib.AnyObjectId;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ProgressMonitor;
-import org.eclipse.jgit.storage.pack.PackConfig;
 import org.eclipse.jgit.transport.PackLock;
 import org.eclipse.jgit.transport.PackParser;
 import org.eclipse.jgit.transport.PackedObjectInfo;
@@ -123,15 +122,11 @@ public PackLock parse(ProgressMonitor receiving, ProgressMonitor resolving)
 			packDsc.setBlockSize(PACK, blockSize);
 
 			writePackIndex();
-			PackConfig pConfig = new PackConfig(objdb.getRepository().getConfig());
-			if (pConfig.isWriteObjSizeIndex()) {
-				objins.writeObjectSizeIndex(packDsc, getSortedObjectList(null),
-						pConfig.getMinBytesForObjSizeIndex());
-			}
+			objins.writeObjectSizeIndex(packDsc, getSortedObjectList(null));
 			objdb.commitPack(Collections.singletonList(packDsc), null);
 			rollback = false;
 
-			DfsPackFile p = new DfsPackFile(blockCache, packDsc);
+			DfsPackFile p = objdb.createDfsPackFile(blockCache, packDsc);
 			p.setBlockSize(blockSize);
 			if (packIndex != null)
 				p.setPackIndex(packIndex);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
index 3f0adcb..a342796 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
@@ -28,6 +28,7 @@
 import java.util.zip.DataFormatException;
 import java.util.zip.Inflater;
 
+import org.eclipse.jgit.annotations.NonNull;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException;
@@ -120,11 +121,23 @@ public BitmapIndex getBitmapIndex() throws IOException {
 		for (DfsPackFile pack : db.getPacks()) {
 			PackBitmapIndex bitmapIndex = pack.getBitmapIndex(this);
 			if (bitmapIndex != null)
-				return new BitmapIndexImpl(bitmapIndex);
+				return createBitmapIndex(bitmapIndex);
 		}
 		return null;
 	}
 
+	/**
+	 * Give subclasses a chance to record pack index stats
+	 *
+	 * @param packBitmapIndex
+	 *            packBitmapIndex found in a pack (never null)
+	 * @return an instance of BitmapIndex
+	 */
+	protected BitmapIndex createBitmapIndex(
+			@NonNull PackBitmapIndex packBitmapIndex) {
+		return new BitmapIndexImpl(packBitmapIndex);
+	}
+
 	@Override
 	public Optional<CommitGraph> getCommitGraph() throws IOException {
 		for (DfsPackFile pack : db.getPacks()) {
@@ -490,30 +503,28 @@ public void release() {
 	public long getObjectSize(AnyObjectId objectId, int typeHint)
 			throws MissingObjectException, IncorrectObjectTypeException,
 			IOException {
-		if (last != null && !skipGarbagePack(last)) {
-			long sz = last.getObjectSize(this, objectId);
-			if (0 <= sz) {
-				return sz;
+		DfsPackFile pack = findPackWithObject(objectId);
+		if (pack == null) {
+			if (typeHint == OBJ_ANY) {
+				throw new MissingObjectException(objectId.copy(),
+						JGitText.get().unknownObjectType2);
 			}
+			throw new MissingObjectException(objectId.copy(), typeHint);
 		}
 
-		PackList packList = db.getPackList();
-		long sz = getObjectSizeImpl(packList, objectId);
-		if (0 <= sz) {
+		if (typeHint != Constants.OBJ_BLOB || !pack.hasObjectSizeIndex(this)) {
+			return pack.getObjectSize(this, objectId);
+		}
+
+		long sz = pack.getIndexedObjectSize(this, objectId);
+		if (sz >= 0) {
+			stats.objectSizeIndexHit += 1;
 			return sz;
 		}
-		if (packList.dirty()) {
-			sz = getObjectSizeImpl(packList, objectId);
-			if (0 <= sz) {
-				return sz;
-			}
-		}
 
-		if (typeHint == OBJ_ANY) {
-			throw new MissingObjectException(objectId.copy(),
-					JGitText.get().unknownObjectType2);
-		}
-		throw new MissingObjectException(objectId.copy(), typeHint);
+		// Object wasn't in the index
+		stats.objectSizeIndexMiss += 1;
+		return pack.getObjectSize(this, objectId);
 	}
 
 
@@ -569,21 +580,6 @@ private DfsPackFile findPackWithObject(AnyObjectId objectId)
 		return null;
 	}
 
-	private long getObjectSizeImpl(PackList packList, AnyObjectId objectId)
-			throws IOException {
-		for (DfsPackFile pack : packList.packs) {
-			if (pack == last || skipGarbagePack(pack)) {
-				continue;
-			}
-			long sz = pack.getObjectSize(this, objectId);
-			if (0 <= sz) {
-				last = pack;
-				return sz;
-			}
-		}
-		return -1;
-	}
-
 	@Override
 	public DfsObjectToPack newObjectToPack(AnyObjectId objectId, int type) {
 		return new DfsObjectToPack(objectId, type);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
index 906fade..c2b3926 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/BasePackBitmapIndex.java
@@ -35,6 +35,50 @@ ObjectIdOwnerMap<StoredBitmap> getBitmaps() {
 		return bitmaps;
 	}
 
+	@Override
+	public int getBaseBitmapCount() {
+		int bases = 0;
+		for (StoredBitmap sb : getBitmaps()) {
+			if (sb.isBase()) {
+				bases += 1;
+			}
+		}
+		return bases;
+	}
+
+	@Override
+	public long getBaseBitmapSizeInBytes() {
+		long baseSize = 0;
+		for (StoredBitmap sb : getBitmaps()) {
+			if (sb.isBase()) {
+				baseSize += sb.getCurrentSizeInBytes();
+			}
+		}
+		return baseSize;
+	}
+
+	@Override
+	public int getXorBitmapCount() {
+		int xored = 0;
+		for (StoredBitmap sb : getBitmaps()) {
+			if (!sb.isBase()) {
+				xored += 1;
+			}
+		}
+		return xored;
+	}
+
+	@Override
+	public long getXorBitmapSizeInBytes() {
+		long xorSize = 0;
+		for (StoredBitmap sb : getBitmaps()) {
+			if (!sb.isBase()) {
+				xorSize += sb.getCurrentSizeInBytes();
+			}
+		}
+		return xorSize;
+	}
+
 	/**
 	 * Data representation of the bitmap entry restored from a pack index. The
 	 * commit of the bitmap is the map key.
@@ -74,8 +118,9 @@ EWAHCompressedBitmap getBitmap() {
 		EWAHCompressedBitmap getBitmapWithoutCaching() {
 			// Fast path to immediately return the expanded result.
 			Object r = bitmapContainer;
-			if (r instanceof EWAHCompressedBitmap)
+			if (r instanceof EWAHCompressedBitmap) {
 				return (EWAHCompressedBitmap) r;
+			}
 
 			// Expand the bitmap but not cache the result.
 			XorCompressedBitmap xb = (XorCompressedBitmap) r;
@@ -100,10 +145,38 @@ EWAHCompressedBitmap getBitmapWithoutCaching() {
 		int getFlags() {
 			return flags;
 		}
+
+		/**
+		 * This bitmap is (currently) a base or a XOR mask
+		 *
+		 * @return true if this bitmap is a base (a ready map).
+		 */
+		boolean isBase() {
+			return bitmapContainer instanceof EWAHCompressedBitmap;
+		}
+
+		/**
+		 * Size in bytes of this bitmap in its current representation
+		 *
+		 * If this is a XOR'ed bitmap, size is different before/after
+		 * {@link #getBitmap()}. Before is the byte size of the xor mask,
+		 * afterwards is the size of the "ready" bitmap
+		 *
+		 * @return size in bytes of the bitmap in its current representation
+		 */
+		long getCurrentSizeInBytes() {
+			Object r = bitmapContainer;
+			if (r instanceof EWAHCompressedBitmap) {
+				return ((EWAHCompressedBitmap) r).sizeInBytes();
+			}
+			XorCompressedBitmap xor = ((XorCompressedBitmap) r);
+			return xor.bitmap.sizeInBytes();
+		}
 	}
 
 	private static final class XorCompressedBitmap {
 		final EWAHCompressedBitmap bitmap;
+
 		final StoredBitmap xorBitmap;
 
 		XorCompressedBitmap(EWAHCompressedBitmap b, StoredBitmap xb) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
index 5409c4f..fc058ab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
@@ -1934,7 +1934,7 @@ public void close() {
 					token.close();
 				}
 				if (wasLocked) {
-					FileUtils.delete(pidFile.toFile(), FileUtils.RETRY);
+					FileUtils.delete(pidFile.toFile(), FileUtils.RETRY | FileUtils.SKIP_MISSING);
 				}
 			} catch (IOException e) {
 				LOG.error(MessageFormat
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
index 278c846..b4bb2a9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LooseObjects.java
@@ -167,6 +167,9 @@ ObjectLoader open(WindowCursor curs, AnyObjectId id) throws IOException {
 		while (readAttempts < MAX_LOOSE_OBJECT_STALE_READ_ATTEMPTS) {
 			readAttempts++;
 			File path = fileFor(id);
+			if (trustFolderStat && !path.exists()) {
+				break;
+			}
 			try {
 				return getObjectLoader(curs, path, id);
 			} catch (FileNotFoundException noFile) {
@@ -279,7 +282,7 @@ InsertLooseObjectResult insert(File tmp, ObjectId id) throws IOException {
 			// that already exists. We can't be sure renameTo() would
 			// fail on all platforms if dst exists, so we check first.
 			//
-			FileUtils.delete(tmp, FileUtils.RETRY);
+			FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			return InsertLooseObjectResult.EXISTS_LOOSE;
 		}
 
@@ -297,7 +300,7 @@ InsertLooseObjectResult insert(File tmp, ObjectId id) throws IOException {
 			// Any other IO error is considered a failure.
 			//
 			LOG.error(e.getMessage(), e);
-			FileUtils.delete(tmp, FileUtils.RETRY);
+			FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			return InsertLooseObjectResult.FAILURE;
 		}
 
@@ -309,7 +312,7 @@ InsertLooseObjectResult insert(File tmp, ObjectId id) throws IOException {
 			// know what went wrong, so fail.
 			//
 			LOG.error(e.getMessage(), e);
-			FileUtils.delete(tmp, FileUtils.RETRY);
+			FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			return InsertLooseObjectResult.FAILURE;
 		}
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
index 579f931..9f21481 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
@@ -548,11 +548,11 @@ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
 		// If the object is already in the repository, remove temporary file.
 		//
 		if (loose.hasCached(id)) {
-			FileUtils.delete(tmp, FileUtils.RETRY);
+			FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			return InsertLooseObjectResult.EXISTS_LOOSE;
 		}
 		if (!createDuplicate && has(id)) {
-			FileUtils.delete(tmp, FileUtils.RETRY);
+			FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			return InsertLooseObjectResult.EXISTS_PACKED;
 		}
 		return loose.insert(tmp, id);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
index 2f30a97..24fead8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
@@ -204,7 +204,7 @@ private File toTemp(final SHA1 md, final int type, long len,
 			return tmp;
 		} finally {
 			if (delete) {
-				FileUtils.delete(tmp, FileUtils.RETRY);
+				FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			}
 		}
 	}
@@ -232,7 +232,7 @@ private File toTemp(final int type, final byte[] buf, final int pos,
 			return tmp;
 		} finally {
 			if (delete) {
-				FileUtils.delete(tmp, FileUtils.RETRY);
+				FileUtils.delete(tmp, FileUtils.RETRY | FileUtils.SKIP_MISSING);
 			}
 		}
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
index 333967c..212dbb2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
@@ -63,8 +63,8 @@
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectLoader;
-import org.eclipse.jgit.util.Hex;
 import org.eclipse.jgit.util.FileUtils;
+import org.eclipse.jgit.util.Hex;
 import org.eclipse.jgit.util.LongList;
 import org.eclipse.jgit.util.NB;
 import org.eclipse.jgit.util.RawParseUtils;
@@ -1162,16 +1162,12 @@ synchronized PackBitmapIndex getBitmapIndex() throws IOException {
 			// Once upon a time the bitmap or index files existed. Now one
 			// of them has been removed. Most likely an external gc has
 			// removed index, packfile or the bitmap
-			bitmapIdxFile = null;
-			return null;
 		} catch (IOException e) {
 			if (!FileUtils.isStaleFileHandleInCausalChain(e)) {
 				throw e;
 			}
 			// Ignore NFS stale handle exception the same way as
 			// FileNotFoundException above.
-			bitmapIdxFile = null;
-			return null;
 		}
 		bitmapIdxFile = null;
 		return null;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
index 2334bd4..def4f3d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndex.java
@@ -196,6 +196,41 @@ public abstract EWAHCompressedBitmap ofObjectType(
 	public abstract int getBitmapCount();
 
 	/**
+	 * Returns the number of bitmaps in this bitmap index ready to use, not
+	 * XOR'ed against other entries.
+	 *
+	 * @return the number of bitmaps in this bitmap index ready to use.
+	 */
+	public abstract int getBaseBitmapCount();
+
+	/**
+	 * Current size in bytes of all base bitmaps in the index.
+	 *
+	 * Resolving xors for bitmaps can affect this size.
+	 *
+	 * @return Current size (in bytes) of all base bitmaps in this index.
+	 */
+	public abstract long getBaseBitmapSizeInBytes();
+
+	/**
+	 * Returns the number of bitmaps in this bitmap index XOR'ed against other
+	 * entries.
+	 *
+	 * @return the number of bitmaps in this bitmap index represented as XOR
+	 *         masks.
+	 */
+	public abstract int getXorBitmapCount();
+
+	/**
+	 * Current size in bytes of all XOR'ed bitmaps in the index.
+	 *
+	 * Resolving xors for bitmaps can affect this size.
+	 *
+	 * @return Current size (in bytes) of all xor bitmaps in this index.
+	 */
+	public abstract long getXorBitmapSizeInBytes();
+
+	/**
 	 * Supplier that propagates IOException.
 	 *
 	 * @param <T>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
index 91c3683..bb7cfd0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackBitmapIndexRemapper.java
@@ -95,6 +95,26 @@ public int getObjectCount() {
 	}
 
 	@Override
+	public int getBaseBitmapCount() {
+		return newPackIndex.getBaseBitmapCount();
+	}
+
+	@Override
+	public long getBaseBitmapSizeInBytes() {
+		return newPackIndex.getBaseBitmapSizeInBytes();
+	}
+
+	@Override
+	public int getXorBitmapCount() {
+		return newPackIndex.getXorBitmapCount();
+	}
+
+	@Override
+	public long getXorBitmapSizeInBytes() {
+		return newPackIndex.getXorBitmapSizeInBytes();
+	}
+
+	@Override
 	public EWAHCompressedBitmap ofObjectType(
 			EWAHCompressedBitmap bitmap, int type) {
 		return newPackIndex.ofObjectType(bitmap, type);
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 e270297..169dce1 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
@@ -37,6 +37,7 @@
 import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.text.MessageFormat;
@@ -64,6 +65,7 @@
 import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.CoreConfig.TrustPackedRefsStat;
+import org.eclipse.jgit.lib.CoreConfig.TrustLooseRefStat;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectIdRef;
 import org.eclipse.jgit.lib.Ref;
@@ -181,6 +183,8 @@ public class RefDirectory extends RefDatabase {
 
 	private final TrustPackedRefsStat trustPackedRefsStat;
 
+	private final TrustLooseRefStat trustLooseRefStat;
+
 	RefDirectory(RefDirectory refDb) {
 		parent = refDb.parent;
 		gitDir = refDb.gitDir;
@@ -192,6 +196,7 @@ public class RefDirectory extends RefDatabase {
 		packedRefs.set(refDb.packedRefs.get());
 		trustFolderStat = refDb.trustFolderStat;
 		trustPackedRefsStat = refDb.trustPackedRefsStat;
+		trustLooseRefStat = refDb.trustLooseRefStat;
 		inProcessPackedRefsLock = refDb.inProcessPackedRefsLock;
 	}
 
@@ -213,6 +218,10 @@ public class RefDirectory extends RefDatabase {
 				.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
 						ConfigConstants.CONFIG_KEY_TRUST_PACKED_REFS_STAT,
 						TrustPackedRefsStat.UNSET);
+		trustLooseRefStat = db.getConfig()
+				.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
+						ConfigConstants.CONFIG_KEY_TRUST_LOOSE_REF_STAT,
+						TrustLooseRefStat.ALWAYS);
 		inProcessPackedRefsLock = new ReentrantLock(true);
 	}
 
@@ -1136,6 +1145,11 @@ private Ref readRef(String name, RefList<Ref> packed) throws IOException {
 
 	LooseRef scanRef(LooseRef ref, String name) throws IOException {
 		final File path = fileFor(name);
+
+		if (trustLooseRefStat.equals(TrustLooseRefStat.AFTER_OPEN)) {
+			refreshPathToLooseRef(Paths.get(name));
+		}
+
 		FileSnapshot currentSnapshot = null;
 
 		if (ref != null) {
@@ -1221,6 +1235,29 @@ class LooseItems {
 		return new LooseUnpeeled(loose.snapshot, name, id);
 	}
 
+	/**
+	 * Workaround for issues caused by NFS caching. Refresh directories starting
+	 * from the repository root to a loose ref by opening an input stream. This
+	 * refreshes file attributes of the loose ref (at least on some NFS
+	 * clients).
+	 *
+	 * @param refPath
+	 *            path of a loose ref relative to the repository root
+	 */
+	void refreshPathToLooseRef(Path refPath) {
+		for (int i = 1; i < refPath.getNameCount(); i++) {
+			File dir = fileFor(refPath.subpath(0, i).toString());
+			// Use Files.newInputStream(Path) as it is consistent with other
+			// code where a refresh is being done (see getPackedRefs()) and also
+			// it performs slightly better than Files.newDirectoryStream(Path)
+			try (InputStream stream = Files.newInputStream(dir.toPath())) {
+				// open the dir to refresh attributes (on some NFS clients)
+			} catch (IOException e) {
+				break; // loose ref may not exist
+			}
+		}
+	}
+
 	private static boolean isSymRef(byte[] buf, int n) {
 		if (n < 6)
 			return false;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
index 6e02b36..9e95231 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
@@ -2029,8 +2029,8 @@ private void findObjectsToPack(@NonNull ProgressMonitor countingMonitor,
 		if (!shallowPack && useBitmaps) {
 			BitmapIndex bitmapIndex = reader.getBitmapIndex();
 			if (bitmapIndex != null) {
-				BitmapWalker bitmapWalker = new BitmapWalker(
-						walker, bitmapIndex, countingMonitor);
+				BitmapWalker bitmapWalker = new BitmapWalker(walker,
+						bitmapIndex, countingMonitor);
 				findObjectsToPackUsingBitmaps(bitmapWalker, want, have);
 				endPhase(countingMonitor);
 				stats.timeCounting = System.currentTimeMillis() - countingStart;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
index 8b5cea7..dabc1f0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
@@ -28,16 +28,16 @@
 import org.eclipse.jgit.internal.JGitText;
 import org.eclipse.jgit.internal.revwalk.AddUnseenToBitmapFilter;
 import org.eclipse.jgit.internal.storage.file.BitmapIndexImpl;
-import org.eclipse.jgit.internal.storage.file.BitmapIndexImpl.CompressedBitmap;
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndexBuilder;
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndexRemapper;
+import org.eclipse.jgit.internal.storage.file.BitmapIndexImpl.CompressedBitmap;
 import org.eclipse.jgit.lib.AnyObjectId;
-import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
 import org.eclipse.jgit.revwalk.BitmapWalker;
 import org.eclipse.jgit.revwalk.ObjectWalk;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -77,6 +77,7 @@ class PackWriterBitmapPreparer {
 	private final int recentCommitSpan;
 	private final int distantCommitSpan;
 	private final int excessiveBranchCount;
+	private final int excessiveBranchTipCount;
 	private final long inactiveBranchTimestamp;
 
 	PackWriterBitmapPreparer(ObjectReader reader,
@@ -96,6 +97,8 @@ class PackWriterBitmapPreparer {
 		this.recentCommitSpan = config.getBitmapRecentCommitSpan();
 		this.distantCommitSpan = config.getBitmapDistantCommitSpan();
 		this.excessiveBranchCount = config.getBitmapExcessiveBranchCount();
+		this.excessiveBranchTipCount = Math.max(excessiveBranchCount,
+				config.getBitmapExcessiveBranchTipCount());
 		long now = SystemReader.getInstance().getCurrentTime();
 		long ageInSeconds = (long) config.getBitmapInactiveBranchAgeInDays()
 				* DAY_IN_SECONDS;
@@ -163,11 +166,17 @@ Collection<BitmapCommit> selectCommits(int expectedCommitCount,
 			rw2.setRetainBody(false);
 			rw2.setRevFilter(new NotInBitmapFilter(seen));
 
+			int newWantsCount = selectionHelper.newWantsByNewest.size();
+			int maxBranches = Math.min(excessiveBranchTipCount, newWantsCount);
+			Set<RevCommit> excessiveBranches = new HashSet<>(
+					selectionHelper.newWantsByNewest.subList(maxBranches,
+							newWantsCount));
 			// For each branch, do a revwalk to enumerate its commits. Exclude
 			// both reused commits and any commits seen in a previous branch.
 			// Then iterate through all new commits from oldest to newest,
 			// selecting well-spaced commits in this branch.
-			for (RevCommit rc : selectionHelper.newWantsByNewest) {
+			for (RevCommit rc : selectionHelper.newWantsByNewest.subList(0,
+					maxBranches)) {
 				BitmapBuilder tipBitmap = commitBitmapIndex.newBitmapBuilder();
 				rw2.markStart((RevCommit) rw2.peel(rw2.parseAny(rc)));
 				RevCommit rc2;
@@ -223,7 +232,7 @@ Collection<BitmapCommit> selectCommits(int expectedCommitCount,
 					pm.update(1);
 
 					// Always pick the items in wants, prefer merge commits.
-					if (selectionHelper.newWants.remove(c)) {
+					if (!excessiveBranches.contains(c) && selectionHelper.newWants.remove(c)) {
 						if (nextIn > 0) {
 							nextFlg = 0;
 						}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/ShutdownHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/ShutdownHook.java
index d6c5a81..f52025f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/ShutdownHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/util/ShutdownHook.java
@@ -82,7 +82,9 @@ private void cleanup() {
 			}).get(30L, TimeUnit.SECONDS);
 		} catch (RejectedExecutionException | InterruptedException
 				| ExecutionException | TimeoutException e) {
-			LOG.error(JGitText.get().shutdownCleanupFailed, e);
+			// message isn't localized since during shutdown there's no
+			// guarantee which classes are still loaded
+			LOG.error("Cleanup during JVM shutdown failed", e); //$NON-NLS-1$
 		}
 		runner.shutdownNow();
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbstractGpgSignatureVerifier.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbstractGpgSignatureVerifier.java
new file mode 100644
index 0000000..06a89dc
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AbstractGpgSignatureVerifier.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024, 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
+* https://www.eclipse.org/org/documents/edl-v10.php.
+*
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+package org.eclipse.jgit.lib;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevTag;
+import org.eclipse.jgit.util.RawParseUtils;
+
+/**
+ * Provides a base implementation of
+ * {@link GpgSignatureVerifier#verifySignature(RevObject, GpgConfig)}.
+ *
+ * @since 6.9
+ */
+public abstract class AbstractGpgSignatureVerifier
+		implements GpgSignatureVerifier {
+
+	@Override
+	public SignatureVerification verifySignature(RevObject object,
+			GpgConfig config) throws IOException {
+		if (object instanceof RevCommit) {
+			RevCommit commit = (RevCommit) object;
+			byte[] signatureData = commit.getRawGpgSignature();
+			if (signatureData == null) {
+				return null;
+			}
+			byte[] raw = commit.getRawBuffer();
+			// Now remove the GPG signature
+			byte[] header = { 'g', 'p', 'g', 's', 'i', 'g' };
+			int start = RawParseUtils.headerStart(header, raw, 0);
+			if (start < 0) {
+				return null;
+			}
+			int end = RawParseUtils.nextLfSkippingSplitLines(raw, start);
+			// start is at the beginning of the header's content
+			start -= header.length + 1;
+			// end is on the terminating LF; we need to skip that, too
+			if (end < raw.length) {
+				end++;
+			}
+			byte[] data = new byte[raw.length - (end - start)];
+			System.arraycopy(raw, 0, data, 0, start);
+			System.arraycopy(raw, end, data, start, raw.length - end);
+			return verify(config, data, signatureData);
+		} else if (object instanceof RevTag) {
+			RevTag tag = (RevTag) object;
+			byte[] signatureData = tag.getRawGpgSignature();
+			if (signatureData == null) {
+				return null;
+			}
+			byte[] raw = tag.getRawBuffer();
+			// The signature is just tacked onto the end of the message, which
+			// is last in the buffer.
+			byte[] data = Arrays.copyOfRange(raw, 0,
+					raw.length - signatureData.length);
+			return verify(config, data, signatureData);
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
index c7b4e45..0edf3c5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
@@ -751,6 +751,13 @@ public final class ConfigConstants {
 	public static final String CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_COUNT = "bitmapexcessivebranchcount";
 
 	/**
+	 * The "pack.bitmapExcessiveBranchTipCount" key
+	 *
+	 * @since 6.9
+	 */
+	public static final String CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT = "bitmapexcessivebranchtipcount";
+
+	/**
 	 * The "pack.bitmapExcludedRefsPrefixes" key
 	 * @since 5.13.2
 	 */
@@ -965,6 +972,13 @@ public final class ConfigConstants {
 	public static final String CONFIG_KEY_TRUST_PACKED_REFS_STAT = "trustPackedRefsStat";
 
 	/**
+	 * The "trustLooseRefStat" key
+	 *
+	 * @since 6.9
+	 */
+	public static final String CONFIG_KEY_TRUST_LOOSE_REF_STAT = "trustLooseRefStat";
+
+	/**
 	 * The "pack.preserveOldPacks" key
 	 *
 	 * @since 5.13.2
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
index 4de1801..9fa5d75 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
@@ -144,6 +144,21 @@ public enum TrustPackedRefsStat {
 		UNSET
 	}
 
+	/**
+	 * Permissible values for {@code core.trustLooseRefStat}.
+	 *
+	 * @since 6.9
+	 */
+	public enum TrustLooseRefStat {
+
+		/** Trust file attributes of the loose ref. */
+		ALWAYS,
+
+		/** Open and close parent directories of the loose ref file until the
+		 * repository root to refresh its file attributes and then trust it. */
+		AFTER_OPEN,
+	}
+
 	private final int compression;
 
 	private final int packIndexVersion;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignatureVerifier.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignatureVerifier.java
index a7a39c9..91c9bab 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignatureVerifier.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GpgSignatureVerifier.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021, Thomas Wolf <thomas.wolf@paranor.ch> and others
+ * Copyright (C) 2021, 2024 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
@@ -18,7 +18,8 @@
 import org.eclipse.jgit.revwalk.RevObject;
 
 /**
- * A {@code GpgVerifier} can verify GPG signatures on git commits and tags.
+ * A {@code GpgSignatureVerifier} can verify GPG signatures on git commits and
+ * tags.
  *
  * @since 5.11
  */
@@ -42,6 +43,28 @@ public interface GpgSignatureVerifier {
 	SignatureVerification verifySignature(@NonNull RevObject object,
 			@NonNull GpgConfig config) throws IOException;
 
+	/**
+	 * Verifies a given signature for given data.
+	 *
+	 * @param config
+	 *            the {@link GpgConfig}
+	 * @param data
+	 *            the signature is for
+	 * @param signatureData
+	 *            the ASCII-armored signature
+	 * @return a {@link SignatureVerification} describing the outcome
+	 * @throws IOException
+	 *             if the signature cannot be parsed
+	 * @throws JGitInternalException
+	 *             if signature verification fails
+	 * @since 6.9
+	 */
+	default SignatureVerification verify(@NonNull GpgConfig config, byte[] data,
+			byte[] signatureData) throws IOException {
+		// Default implementation for backwards compatibility; override as
+		// appropriate
+		return verify(data, signatureData);
+	}
 
 	/**
 	 * Verifies a given signature for given data.
@@ -55,7 +78,10 @@ SignatureVerification verifySignature(@NonNull RevObject object,
 	 *             if the signature cannot be parsed
 	 * @throws JGitInternalException
 	 *             if signature verification fails
+	 * @deprecated since 6.9, use {@link #verify(GpgConfig, byte[], byte[])}
+	 *             instead
 	 */
+	@Deprecated
 	public SignatureVerification verify(byte[] data, byte[] signatureData)
 			throws IOException;
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
index f58eb82..fa7fb31 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
@@ -81,14 +81,25 @@ public static List<FooterLine> fromMessage(
 			// empty
 		}
 
-		int msgB = RawParseUtils.commitMessage(raw, 0);
+		// The first non-header line is never a footer.
+		int msgB = RawParseUtils.nextLfSkippingSplitLines(raw,
+				RawParseUtils.hasAnyKnownHeaders(raw)
+						? RawParseUtils.commitMessage(raw, 0)
+						: 0);
 		ArrayList<FooterLine> r = new ArrayList<>(4);
 		Charset enc = RawParseUtils.guessEncoding(raw);
 
 		// Search for the beginning of last paragraph
 		int parStart = parEnd;
-		for (; parStart > msgB && (raw[parStart - 1] != '\n' || raw[parStart - 2] != '\n'); --parStart) {
-			// empty
+		for (; parStart > msgB; --parStart) {
+			if (parStart < 2) {
+				// Too close to beginning: this is not a raw message
+				parStart = 0;
+				break;
+			}
+			if (raw[parStart - 1] == '\n' && raw[parStart - 2] == '\n') {
+				break;
+			}
 		}
 
 		for (int ptr = parStart; ptr < parEnd;) {
@@ -101,7 +112,8 @@ public static List<FooterLine> fromMessage(
 			}
 
 			// Skip over the ': *' at the end of the key before the value.
-			int valStart, valEnd;
+			int valStart;
+			int valEnd;
 			for (valStart = keyEnd + 1; valStart < raw.length
 					&& raw[valStart] == ' '; ++valStart) {
 				// empty
@@ -115,6 +127,10 @@ public static List<FooterLine> fromMessage(
 					break;
 				}
 			}
+			if (keyStart == msgB) {
+				// Fist line cannot be a footer
+				continue;
+			}
 			r.add(new FooterLine(raw, enc, keyStart, keyEnd, valStart, valEnd));
 		}
 
@@ -235,6 +251,28 @@ public String getEmailAddress() {
 		return RawParseUtils.decode(enc, buffer, lt, gt - 1);
 	}
 
+	/**
+	 * @return start offset of the footer relative to the original raw message
+	 *         byte buffer
+	 *
+	 * @see #fromMessage(byte[])
+	 * @since 6.9
+	 */
+	public int getStartOffset() {
+		return keyStart;
+	}
+
+	/**
+	 * @return end offset of the footer relative to the original raw message
+	 *         byte buffer
+	 *
+	 * @see #fromMessage(byte[])
+	 * @since 6.9
+	 */
+	public int getEndOffset() {
+		return valEnd;
+	}
+
 	@Override
 	public String toString() {
 		return getKey() + ": " + getValue(); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
index 1f0f131..743a8cc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
@@ -17,7 +17,6 @@
 import java.nio.charset.Charset;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
-import java.util.Arrays;
 import java.util.List;
 
 import org.eclipse.jgit.annotations.Nullable;
@@ -409,7 +408,7 @@ public RevCommit getParent(int nth) {
 			return null;
 		}
 		final int end = RawParseUtils.headerEnd(raw, start);
-		return Arrays.copyOfRange(raw, start, end);
+		return RawParseUtils.headerValue(raw, start, end);
 	}
 
 	/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java
index 414af30..6854b60 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/StartGenerator.java
@@ -94,7 +94,7 @@ RevCommit next() throws MissingObjectException,
 		final DateRevQueue pending;
 		int pendingOutputType = 0;
 		if (q instanceof DateRevQueue) {
-			pending = (DateRevQueue) q;
+			pending = (DateRevQueue)q;
 		} else {
 			pending = RevWalk.newDateRevQueue(q);
 		}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
index d524524..8373d68 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
@@ -16,6 +16,7 @@
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_CONTIGUOUS_COMMIT_COUNT;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_DISTANT_COMMIT_SPAN;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_COUNT;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_EXCLUDED_REFS_PREFIXES;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_INACTIVE_BRANCH_AGE_INDAYS;
 import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_BITMAP_RECENT_COMMIT_COUNT;
@@ -240,6 +241,17 @@ public class PackConfig {
 	public static final int DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT = 100;
 
 	/**
+	 * Default maxium count of branches to create tip bitmaps for. If the number
+	 * of branches exceeds this, then tip bitmaps will only be created for the
+	 * most recently active branches. Branches exceeding this count will receive
+	 * 0 bitmaps: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT}
+	 *
+	 * @see #setBitmapExcessiveBranchTipCount(int)
+	 * @since 6.9
+	 */
+	public static final int DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT = Integer.MAX_VALUE;
+
+	/**
 	 * Default age at which a branch is considered inactive. Age is taken as the
 	 * number of days ago that the most recent commit was made to a branch. Only
 	 * affects bitmap processing if bitmaps are enabled and the
@@ -330,6 +342,8 @@ public class PackConfig {
 
 	private int bitmapExcessiveBranchCount = DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT;
 
+	private int bitmapExcessiveBranchTipCount = DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT;
+
 	private int bitmapInactiveBranchAgeInDays = DEFAULT_BITMAP_INACTIVE_BRANCH_AGE_IN_DAYS;
 
 	private String[] bitmapExcludedRefsPrefixes = DEFAULT_BITMAP_EXCLUDED_REFS_PREFIXES;
@@ -1190,7 +1204,8 @@ public void setBitmapDistantCommitSpan(int span) {
 	 * a repository exceeds this number and bitmaps are enabled, "inactive"
 	 * branches will have fewer bitmaps than "active" branches.
 	 *
-	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT}
+	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT}. See
+	 * also {@link #getBitmapExcessiveBranchTipCount}.
 	 *
 	 * @return the count of branches deemed "excessive"
 	 * @since 4.2
@@ -1204,7 +1219,8 @@ public int getBitmapExcessiveBranchCount() {
 	 * a repository exceeds this number and bitmaps are enabled, "inactive"
 	 * branches will have fewer bitmaps than "active" branches.
 	 *
-	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT}
+	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT}. See
+	 * also {@link #setBitmapExcessiveBranchTipCount(int)}.
 	 *
 	 * @param count
 	 *            the count of branches deemed "excessive"
@@ -1215,6 +1231,57 @@ public void setBitmapExcessiveBranchCount(int count) {
 	}
 
 	/**
+	 * Get the count of branches deemed "excessive". If the count of branches in
+	 * a repository exceeds this number and bitmaps are enabled, branches
+	 * exceeding this count will have no bitmaps selected. Branches are indexed
+	 * most recent first.
+	 *
+	 * <li>The first {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} most active
+	 * branches have full bitmap coverage.
+	 * <li>The {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} to {@code
+	 * 	  DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT} most active branches have
+	 * only the tip commit covered.
+	 * <li>The remaining branches have no bitmap coverage.
+	 *
+	 * If {@link #getBitmapExcessiveBranchCount()} is greater, then that value
+	 * will override this value.
+	 *
+	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT}
+	 *
+	 * @return the count of branch tips deemed "excessive"
+	 * @since 6.9
+	 */
+	public int getBitmapExcessiveBranchTipCount() {
+		return bitmapExcessiveBranchTipCount;
+	}
+
+	/**
+	 * Get the count of branches deemed "excessive". If the count of branches in
+	 * a repository exceeds this number and bitmaps are enabled, branches
+	 * exceeding this count will have no bitmaps selected. Branches are indexed
+	 * most recent first.
+	 *
+	 * <li>The first {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} most active
+	 * branches have full bitmap coverage.
+	 * <li>The {@code DEFAULT_BITMAP_EXCESSIVE_BRANCH_COUNT} to {@code
+	 * 	  DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT} most active branches have
+	 * only the tip commit covered.
+	 * <li>The remaining branches have no bitmap coverage.
+	 *
+	 * If {@link #getBitmapExcessiveBranchCount()} is greater, then that value
+	 * will override this value.
+	 *
+	 * Default setting: {@value #DEFAULT_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT}
+	 *
+	 * @param count
+	 *            the count of branch tips deemed "excessive"
+	 * @since 6.9
+	 */
+	public void setBitmapExcessiveBranchTipCount(int count) {
+		bitmapExcessiveBranchTipCount = count;
+	}
+
+	/**
 	 * Get the age in days that marks a branch as "inactive".
 	 *
 	 * Default setting: {@value #DEFAULT_BITMAP_INACTIVE_BRANCH_AGE_IN_DAYS}
@@ -1390,6 +1457,9 @@ public void fromConfig(Config rc) {
 		setBitmapExcessiveBranchCount(rc.getInt(CONFIG_PACK_SECTION,
 				CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_COUNT,
 				getBitmapExcessiveBranchCount()));
+		setBitmapExcessiveBranchTipCount(rc.getInt(CONFIG_PACK_SECTION,
+				CONFIG_KEY_BITMAP_EXCESSIVE_BRANCH_TIP_COUNT,
+				getBitmapExcessiveBranchTipCount()));
 		setBitmapInactiveBranchAgeInDays(rc.getInt(CONFIG_PACK_SECTION,
 				CONFIG_KEY_BITMAP_INACTIVE_BRANCH_AGE_INDAYS,
 				getBitmapInactiveBranchAgeInDays()));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
index e0a3517..469a3d6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
@@ -402,11 +402,14 @@ private void clearState() {
 	protected void doFetch(final ProgressMonitor monitor,
 			final Collection<Ref> want, final Set<ObjectId> have,
 			OutputStream outputStream) throws TransportException {
+		boolean hasObjects = !have.isEmpty();
 		try {
 			noProgress = monitor == NullProgressMonitor.INSTANCE;
 
-			markRefsAdvertised();
-			markReachable(want, have, maxTimeWanted(want));
+			if (hasObjects) {
+				markRefsAdvertised();
+			}
+			markReachable(want, have, maxTimeWanted(want, hasObjects));
 
 			if (TransferConfig.ProtocolVersion.V2
 					.equals(getProtocolVersion())) {
@@ -418,7 +421,7 @@ protected void doFetch(final ProgressMonitor monitor,
 				state = new TemporaryBuffer.Heap(Integer.MAX_VALUE);
 				pckState = new PacketLineOut(state);
 				try {
-					doFetchV2(monitor, want, outputStream);
+					doFetchV2(monitor, want, outputStream, hasObjects);
 				} finally {
 					clearState();
 				}
@@ -430,7 +433,7 @@ protected void doFetch(final ProgressMonitor monitor,
 				pckState = new PacketLineOut(state);
 			}
 			PacketLineOut output = statelessRPC ? pckState : pckOut;
-			if (sendWants(want, output)) {
+			if (sendWants(want, output, hasObjects)) {
 				boolean mayHaveShallow = depth != null || deepenSince != null || !deepenNots.isEmpty();
 				Set<ObjectId> shallowCommits = local.getObjectDatabase().getShallowCommits();
 				if (isCapableOf(GitProtocolConstants.CAPABILITY_SHALLOW)) {
@@ -457,7 +460,8 @@ protected void doFetch(final ProgressMonitor monitor,
 	}
 
 	private void doFetchV2(ProgressMonitor monitor, Collection<Ref> want,
-			OutputStream outputStream) throws IOException, CancelledException {
+			OutputStream outputStream, boolean hasObjects)
+			throws IOException, CancelledException {
 		sideband = true;
 		negotiateBegin();
 
@@ -479,7 +483,7 @@ private void doFetchV2(ProgressMonitor monitor, Collection<Ref> want,
 			pckState.writeString(capability);
 		}
 
-		if (!sendWants(want, pckState)) {
+		if (!sendWants(want, pckState, hasObjects)) {
 			// We already have everything we wanted.
 			return;
 		}
@@ -666,8 +670,12 @@ FetchConfig getFetchConfig() {
 		return local.getConfig().get(FetchConfig::new);
 	}
 
-	private int maxTimeWanted(Collection<Ref> wants) {
+	private int maxTimeWanted(Collection<Ref> wants, boolean hasObjects) {
 		int maxTime = 0;
+		if (!hasObjects) {
+			// we don't have any objects locally, we can immediately bail out
+			return maxTime;
+		}
 		for (Ref r : wants) {
 			try {
 				final RevObject obj = walk.parseAny(r.getObjectId());
@@ -769,7 +777,8 @@ private void markReachable(ObjectId id) {
 		}
 	}
 
-	private boolean sendWants(Collection<Ref> want, PacketLineOut p)
+	private boolean sendWants(Collection<Ref> want, PacketLineOut p,
+			boolean hasObjects)
 			throws IOException {
 		boolean first = true;
 		for (Ref r : want) {
@@ -778,7 +787,9 @@ private boolean sendWants(Collection<Ref> want, PacketLineOut p)
 				continue;
 			}
 			// if depth is set we need to fetch the objects even if they are already available
-			if (transport.getDepth() == null) {
+			if (transport.getDepth() == null
+					// only check reachable objects when we have objects
+					&& hasObjects) {
 				try {
 					if (walk.parseAny(objectId).has(REACHABLE)) {
 						// We already have this object. Asking for it is
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
index fc9789d..e1f2b19 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java
@@ -1566,7 +1566,7 @@ protected abstract void onEndWholeObject(PackedObjectInfo info)
 	 * @param baseStreamPosition
 	 *            position of the base object in the incoming stream. The base
 	 *            must be before the delta, therefore {@code baseStreamPosition
-	 *            &lt; deltaStreamPosition}. This is <b>not</b> the position
+	 *            < deltaStreamPosition}. This is <b>not</b> the position
 	 *            returned by a prior end object event.
 	 * @param inflatedSize
 	 *            size of the delta when fully inflated. The size stored within
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 5009ecf..463d053 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java
@@ -10,8 +10,8 @@
 
 package org.eclipse.jgit.transport;
 
-import static org.eclipse.jgit.transport.ReceivePack.parseCommand;
 import static org.eclipse.jgit.transport.GitProtocolConstants.CAPABILITY_PUSH_CERT;
+import static org.eclipse.jgit.transport.ReceivePack.parseCommand;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -317,7 +317,7 @@ private static String parseHeader(String s, String header)
 	 * certificate.
 	 * <p>
 	 * This method doesn't parse the first line {@code "push-cert \NUL
-	 * &lt;capabilities&gt;"}, but assumes the first line including the
+	 * <capabilities>"}, but assumes the first line including the
 	 * capabilities has already been handled by the caller.
 	 *
 	 * @param pckIn
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
index ac973a9..a8e1dae 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
@@ -1024,7 +1024,7 @@ private void detectSymlinkSupport() {
 		File tempFile = null;
 		try {
 			tempFile = File.createTempFile("tempsymlinktarget", ""); //$NON-NLS-1$ //$NON-NLS-2$
-			File linkName = new File(tempFile.getParentFile(), "tempsymlink"); //$NON-NLS-1$
+			File linkName = new File(tempFile.getPath() + "-tempsymlink"); //$NON-NLS-1$
 			createSymLink(linkName, tempFile.getPath());
 			supportSymlinks = Boolean.TRUE;
 			linkName.delete();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
index 71fae81..46d0bc8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
@@ -16,7 +16,12 @@
 import static org.eclipse.jgit.lib.ObjectChecker.author;
 import static org.eclipse.jgit.lib.ObjectChecker.committer;
 import static org.eclipse.jgit.lib.ObjectChecker.encoding;
+import static org.eclipse.jgit.lib.ObjectChecker.object;
+import static org.eclipse.jgit.lib.ObjectChecker.parent;
+import static org.eclipse.jgit.lib.ObjectChecker.tag;
 import static org.eclipse.jgit.lib.ObjectChecker.tagger;
+import static org.eclipse.jgit.lib.ObjectChecker.tree;
+import static org.eclipse.jgit.lib.ObjectChecker.type;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.CharacterCodingException;
@@ -520,17 +525,24 @@ public static final int nextLF(byte[] b, int ptr, char chrA) {
 	}
 
 	/**
-	 * Locate the end of the header.  Note that headers may be
-	 * more than one line long.
+	 * Locate the first end of line after the given position, while treating
+	 * following lines which are starting with spaces as part of the current
+	 * line.
+	 * <p>
+	 * For example, {@code nextLfSkippingSplitLines(
+	 * "row \n with space at beginning of a following line\nThe actual next line",
+	 * 0)} will return the position of {@code "\nThe actual next line"}.
+	 *
 	 * @param b
 	 *            buffer to scan.
 	 * @param ptr
-	 *            position within buffer to start looking for the end-of-header.
-	 * @return new position just after the header.  This is either
-	 * b.length, or the index of the header's terminating newline.
-	 * @since 5.1
+	 *            position within buffer to start looking for the next line.
+	 * @return new position just after the line end of the last line-split. This
+	 *         is either b.length, or the index of the current split-line's
+	 *         terminating newline.
+	 * @since 6.9
 	 */
-	public static final int headerEnd(final byte[] b, int ptr) {
+	public static final int nextLfSkippingSplitLines(final byte[] b, int ptr) {
 		final int sz = b.length;
 		while (ptr < sz) {
 			final byte c = b[ptr++];
@@ -538,7 +550,62 @@ public static final int headerEnd(final byte[] b, int ptr) {
 				return ptr - 1;
 			}
 		}
-		return ptr - 1;
+		return ptr;
+	}
+
+	/**
+	 * Extract a part of a buffer as a header value, removing the single blanks
+	 * at the front of continuation lines.
+	 *
+	 * @param b
+	 *            buffer to extract the header from
+	 * @param start
+	 *            of the header value, see
+	 *            {@link #headerStart(byte[], byte[], int)}
+	 * @param end
+	 *            of the header; see
+	 *            {@link #nextLfSkippingSplitLines(byte[], int)}
+	 * @return the header value, with blanks indicating continuation lines
+	 *         stripped
+	 * @since 6.9
+	 */
+	public static final byte[] headerValue(final byte[] b, int start, int end) {
+		byte[] data = new byte[end - start];
+		int out = 0;
+		byte last = '\0';
+		for (int in = start; in < end; in++) {
+			byte ch = b[in];
+			if (ch != ' ' || last != '\n') {
+				data[out++] = ch;
+			}
+			last = ch;
+		}
+		if (out == data.length) {
+			return data;
+		}
+		return Arrays.copyOf(data, out);
+	}
+
+	/**
+	 * Locate the first end of header after the given position. Note that
+	 * headers may be more than one line long.
+	 * <p>
+	 * Also note that there might be multiple headers. If you wish to find the
+	 * last header's end - call this in a loop.
+	 *
+	 * @param b
+	 *            buffer to scan.
+	 * @param ptr
+	 *            position within buffer to start looking for the header
+	 *            (normally a new-line).
+	 * @return new position just after the line end. This is either b.length, or
+	 *         the index of the header's terminating newline.
+	 * @since 5.1
+	 * @deprecated use {{@link #nextLfSkippingSplitLines}} directly instead
+	 */
+	@Deprecated
+	public static final int headerEnd(final byte[] b, int ptr) {
+		return nextLfSkippingSplitLines(b, ptr);
 	}
 
 	/**
@@ -576,6 +643,22 @@ public static final int headerStart(byte[] headerName, byte[] b, int ptr) {
 	}
 
 	/**
+	 * Returns whether the message starts with any known headers.
+	 *
+	 * @param b
+	 *            buffer to scan.
+	 * @return whether the message starts with any known headers
+	 * @since 6.9
+	 */
+	public static final boolean hasAnyKnownHeaders(byte[] b) {
+		return match(b, 0, tree) != -1 || match(b, 0, parent) != -1
+				|| match(b, 0, author) != -1 || match(b, 0, committer) != -1
+				|| match(b, 0, encoding) != -1 || match(b, 0, object) != -1
+				|| match(b, 0, type) != -1 || match(b, 0, tag) != -1
+				|| match(b, 0, tagger) != -1;
+	}
+
+	/**
 	 * Locate the first position before a given character.
 	 *
 	 * @param b
@@ -1258,6 +1341,7 @@ public static final int tagMessage(byte[] b, int ptr) {
 		final int sz = b.length;
 		if (ptr == 0)
 			ptr += 48; // skip the "object ..." line.
+		// Assume the rest of the current paragraph is all headers.
 		while (ptr < sz && b[ptr] != '\n')
 			ptr = nextLF(b, ptr);
 		if (ptr < sz && b[ptr] == '\n')
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
index 4a48762..ed62c71 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
@@ -174,6 +174,67 @@ public int getTimezone(long when) {
 		}
 	}
 
+	/**
+	 * Delegating SystemReader. Reduces boiler-plate code applications need to
+	 * implement when overriding only a few of the SystemReader's methods.
+	 *
+	 * @since 6.9
+	 */
+	public static class Delegate extends SystemReader {
+
+		private final SystemReader delegate;
+
+		/**
+		 * Create a delegating system reader
+		 *
+		 * @param delegate
+		 *            the system reader to delegate to
+		 */
+		public Delegate(SystemReader delegate) {
+			this.delegate = delegate;
+		}
+
+		@Override
+		public String getHostname() {
+			return delegate.getHostname();
+		}
+
+		@Override
+		public String getenv(String variable) {
+			return delegate.getenv(variable);
+		}
+
+		@Override
+		public String getProperty(String key) {
+			return delegate.getProperty(key);
+		}
+
+		@Override
+		public FileBasedConfig openUserConfig(Config parent, FS fs) {
+			return delegate.openUserConfig(parent, fs);
+		}
+
+		@Override
+		public FileBasedConfig openSystemConfig(Config parent, FS fs) {
+			return delegate.openSystemConfig(parent, fs);
+		}
+
+		@Override
+		public FileBasedConfig openJGitConfig(Config parent, FS fs) {
+			return delegate.openJGitConfig(parent, fs);
+		}
+
+		@Override
+		public long getCurrentTime() {
+			return delegate.getCurrentTime();
+		}
+
+		@Override
+		public int getTimezone(long when) {
+			return delegate.getTimezone(when);
+		}
+	}
+
 	private static volatile SystemReader INSTANCE = DEFAULT;
 
 	/**
diff --git a/pom.xml b/pom.xml
index 9533ee4..f14e2de 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>6.8.1-SNAPSHOT</version>
+  <version>6.9.1-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
@@ -118,37 +118,37 @@
 
     <project.build.outputTimestamp>${commit.time.iso}</project.build.outputTimestamp>
 
-    <jgit-last-release-version>6.7.0.202309050840-r</jgit-last-release-version>
+    <jgit-last-release-version>6.8.0.202311291450-r</jgit-last-release-version>
     <ant-version>1.10.14</ant-version>
-    <apache-sshd-version>2.11.0</apache-sshd-version>
+    <apache-sshd-version>2.12.0</apache-sshd-version>
     <jsch-version>0.1.55</jsch-version>
     <jzlib-version>1.1.3</jzlib-version>
     <javaewah-version>1.2.3</javaewah-version>
     <junit-version>4.13.2</junit-version>
     <test-fork-count>1C</test-fork-count>
     <args4j-version>2.33</args4j-version>
-    <commons-compress-version>1.25.0</commons-compress-version>
+    <commons-compress-version>1.26.0</commons-compress-version>
     <osgi-core-version>6.0.0</osgi-core-version>
     <servlet-api-version>4.0.4</servlet-api-version>
-    <jetty-version>10.0.18</jetty-version>
-    <japicmp-version>0.17.2</japicmp-version>
+    <jetty-version>10.0.20</jetty-version>
+    <japicmp-version>0.18.5</japicmp-version>
     <httpclient-version>4.5.14</httpclient-version>
     <httpcore-version>4.4.16</httpcore-version>
     <slf4j-version>1.7.36</slf4j-version>
-    <maven-javadoc-plugin-version>3.5.0</maven-javadoc-plugin-version>
+    <maven-javadoc-plugin-version>3.6.3</maven-javadoc-plugin-version>
     <gson-version>2.10.1</gson-version>
     <bouncycastle-version>1.77</bouncycastle-version>
-    <spotbugs-maven-plugin-version>4.7.3.4</spotbugs-maven-plugin-version>
-    <maven-project-info-reports-plugin-version>3.4.3</maven-project-info-reports-plugin-version>
-    <maven-jxr-plugin-version>3.3.0</maven-jxr-plugin-version>
-    <maven-surefire-plugin-version>3.0.0</maven-surefire-plugin-version>
+    <spotbugs-maven-plugin-version>4.8.3.1</spotbugs-maven-plugin-version>
+    <maven-project-info-reports-plugin-version>3.5.1</maven-project-info-reports-plugin-version>
+    <maven-jxr-plugin-version>3.3.2</maven-jxr-plugin-version>
+    <maven-surefire-plugin-version>3.2.5</maven-surefire-plugin-version>
     <maven-surefire-report-plugin-version>${maven-surefire-plugin-version}</maven-surefire-report-plugin-version>
-    <maven-compiler-plugin-version>3.11.0</maven-compiler-plugin-version>
+    <maven-compiler-plugin-version>3.12.1</maven-compiler-plugin-version>
     <plexus-compiler-version>2.13.0</plexus-compiler-version>
     <hamcrest-version>2.2</hamcrest-version>
-    <assertj-version>3.24.2</assertj-version>
-    <jna-version>5.13.0</jna-version>
-    <byte-buddy-version>1.14.9</byte-buddy-version>
+    <assertj-version>3.25.3</assertj-version>
+    <jna-version>5.14.0</jna-version>
+    <byte-buddy-version>1.14.12</byte-buddy-version>
 
     <!-- Properties to enable jacoco code coverage analysis -->
     <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
@@ -208,13 +208,13 @@
 
         <plugin>
           <artifactId>maven-clean-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.3.2</version>
         </plugin>
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
-          <version>3.4.1</version>
+          <version>3.5.1</version>
         </plugin>
 
         <plugin>
@@ -226,7 +226,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-dependency-plugin</artifactId>
-          <version>3.5.0</version>
+          <version>3.6.1</version>
         </plugin>
 
         <plugin>
@@ -255,7 +255,7 @@
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>build-helper-maven-plugin</artifactId>
-          <version>3.4.0</version>
+          <version>3.5.0</version>
         </plugin>
 
         <plugin>
@@ -263,7 +263,6 @@
           <artifactId>spotbugs-maven-plugin</artifactId>
           <version>${spotbugs-maven-plugin-version}</version>
           <configuration>
-            <findbugsXmlOutput>true</findbugsXmlOutput>
             <failOnError>false</failOnError>
           </configuration>
           <executions>
@@ -278,9 +277,9 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-pmd-plugin</artifactId>
-          <version>3.20.0</version>
+          <version>3.21.2</version>
           <configuration>
-            <sourceEncoding>utf-8</sourceEncoding>
+            <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
             <minimumTokens>100</minimumTokens>
             <targetJdk>${java.version}</targetJdk>
             <format>xml</format>
@@ -301,17 +300,17 @@
         <plugin>
           <groupId>org.eclipse.cbi.maven.plugins</groupId>
           <artifactId>eclipse-jarsigner-plugin</artifactId>
-          <version>1.4.2</version>
+          <version>1.4.3</version>
         </plugin>
         <plugin>
           <groupId>org.jacoco</groupId>
           <artifactId>jacoco-maven-plugin</artifactId>
-          <version>0.8.10</version>
+          <version>0.8.11</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>4.0.0-M9</version>
+          <version>4.0.0-M13</version>
           <dependencies>
             <dependency><!-- add support for ssh/scp -->
               <groupId>org.apache.maven.wagon</groupId>
@@ -368,7 +367,7 @@
         <plugin>
           <groupId>org.cyclonedx</groupId>
           <artifactId>cyclonedx-maven-plugin</artifactId>
-          <version>2.7.9</version>
+          <version>2.7.10</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -379,6 +378,11 @@
             <reproducible>true</reproducible>
           </configuration>
         </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-enforcer-plugin</artifactId>
+          <version>3.4.1</version>
+        </plugin>
       </plugins>
     </pluginManagement>
 
@@ -386,7 +390,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>3.3.0</version>
         <executions>
           <execution>
             <id>enforce-maven</id>
@@ -620,7 +623,7 @@
       <plugin>
         <groupId>io.github.git-commit-id</groupId>
         <artifactId>git-commit-id-maven-plugin</artifactId>
-        <version>6.0.0</version>
+        <version>7.0.0</version>
         <executions>
           <execution>
             <id>get-the-git-infos</id>
@@ -980,7 +983,7 @@
       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
-        <version>5.7.0</version>
+        <version>5.10.0</version>
       </dependency>
 
       <dependency>
@@ -1089,7 +1092,7 @@
               <dependency>
                 <groupId>org.eclipse.jdt</groupId>
                 <artifactId>ecj</artifactId>
-                <version>3.35.0</version>
+                <version>3.36.0</version>
               </dependency>
             </dependencies>
           </plugin>
