Merge branch 'stable-7.2'

* stable-7.2:
  Fix package name of spring boot JarLauncher class in jgit.sh

Change-Id: I976dce16471a3788b2d8e3ef4fcbe37f6cfef21b
diff --git a/WORKSPACE b/WORKSPACE
index 505141c..684e2f1 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -116,18 +116,18 @@
     sha1 = "2e226055ed060c64ed76256a9c45de6d0109eef8",
 )
 
-JNA_VERS = "5.16.0"
+JNA_VERS = "5.17.0"
 
 maven_jar(
     name = "jna",
     artifact = "net.java.dev.jna:jna:" + JNA_VERS,
-    sha1 = "ebea09f91dc9f7048099f963fb8d6f919f0a4d9c",
+    sha1 = "33d12735bef894440780fce64f9758d420c7bae2",
 )
 
 maven_jar(
     name = "jna-platform",
     artifact = "net.java.dev.jna:jna-platform:" + JNA_VERS,
-    sha1 = "b2a9065f97c166893d504b164706512338e3bbc2",
+    sha1 = "a4934c44d25a9d8c2ddf4203affd20330cb3426f",
 )
 
 maven_jar(
@@ -204,8 +204,8 @@
 
 maven_jar(
     name = "mockito",
-    artifact = "org.mockito:mockito-core:5.15.2",
-    sha1 = "87be4b1e0cc5febc07ab3197a8ff3ede56b37a79",
+    artifact = "org.mockito:mockito-core:5.16.1",
+    sha1 = "be8bf71080016b793f32456faff861e2c3a77f62",
 )
 
 maven_jar(
@@ -214,18 +214,18 @@
     sha1 = "31f5d58a202bd5df4993fb10fa2cffd610c20d6f",
 )
 
-BYTE_BUDDY_VERSION = "1.17.1"
+BYTE_BUDDY_VERSION = "1.17.3"
 
 maven_jar(
     name = "bytebuddy",
     artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
-    sha1 = "8b5205fad48196a88d3d66dddff5a7417bce3596",
+    sha1 = "dff77e21ebdac42bb4ebf5f3311fc7bfbac19cc3",
 )
 
 maven_jar(
     name = "bytebuddy-agent",
     artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
-    sha1 = "0669a13b59d5ffd8198a79e4dc99018a9278e457",
+    sha1 = "99693871303c2df9b1241bc731efc0737a50e0b2",
 )
 
 maven_jar(
@@ -240,54 +240,54 @@
     sha1 = "4e773a317740b83b43cfc3d652962856041697cb",
 )
 
-JETTY_VER = "12.0.16"
+JETTY_VER = "12.0.18"
 
 maven_jar(
     name = "jetty-servlet",
     artifact = "org.eclipse.jetty.ee10:jetty-ee10-servlet:" + JETTY_VER,
-    sha1 = "022a746c00b1ac5c790fee65a398c707160a46d8",
+    sha1 = "b6ea33020fea4984e12486a76d1f3ed21867a051",
 )
 
 maven_jar(
     name = "jetty-security",
     artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VER,
-    sha1 = "23b1a3abecf9d6f5498064a32d9145ae1d8330f9",
+    sha1 = "283b3c047005dcbc3599f8db52e603623515c0be",
 )
 
 maven_jar(
     name = "jetty-server",
     artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VER,
-    sha1 = "3e3638b4bfbee04c27b3ae68e4949fc43b40a042",
+    sha1 = "15769df091868e8cb40637a5fa1098391da1922a",
 )
 
 maven_jar(
     name = "jetty-session",
     artifact = "org.eclipse.jetty:jetty-session:" + JETTY_VER,
-    sha1 = "79cdedc7afebbdba4453f603dfe2f970baa35cc3",
+    sha1 = "ae26ab8330400433944cd9b714b157b78e1cc332",
 )
 
 maven_jar(
     name = "jetty-http",
     artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VER,
-    sha1 = "68019fa90e8420ae15c109bd8c8611cacbaf43e5",
+    sha1 = "501d7a6c8f9ee59e48e2d0a5720e701d5c48da6e",
 )
 
 maven_jar(
     name = "jetty-io",
     artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VER,
-    sha1 = "7a162c537a99bbaf35a074fec9a50815e6c81d9d",
+    sha1 = "295e1545728f601fb7421ee7cfe3ab3e56c65b50",
 )
 
 maven_jar(
     name = "jetty-util",
     artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VER,
-    sha1 = "e262e505363e5925df15618622d9888aefc1b0d0",
+    sha1 = "021612c74027615153166a2c5eab16e1936c14a0",
 )
 
 maven_jar(
     name = "jetty-util-ajax",
     artifact = "org.eclipse.jetty:jetty-util-ajax:" + JETTY_VER,
-    sha1 = "60225034131e3f771b40bc75c15bd9cc4952302b",
+    sha1 = "f95463b9ecf6e4d9434ab30f13b8cca0bcfecd64",
 )
 
 BOUNCYCASTLE_VER = "1.80"
diff --git a/lib/BUILD b/lib/BUILD
index d236b3a..f971b64 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -198,6 +198,8 @@
     visibility = [
         "//org.eclipse.jgit.gpg.bc:__pkg__",
         "//org.eclipse.jgit.gpg.bc.test:__pkg__",
+        "//org.eclipse.jgit.ssh.apache:__pkg__",
+        "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
     ],
     exports = ["@bcpg//jar"],
@@ -208,6 +210,7 @@
     visibility = [
         "//org.eclipse.jgit.gpg.bc:__pkg__",
         "//org.eclipse.jgit.gpg.bc.test:__pkg__",
+        "//org.eclipse.jgit.ssh.apache:__pkg__",
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
@@ -220,6 +223,7 @@
     visibility = [
         "//org.eclipse.jgit.gpg.bc:__pkg__",
         "//org.eclipse.jgit.gpg.bc.test:__pkg__",
+        "//org.eclipse.jgit.ssh.apache:__pkg__",
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
@@ -231,6 +235,7 @@
     name = "bcpkix",
     visibility = [
         "//org.eclipse.jgit.gpg.bc:__pkg__",
+        "//org.eclipse.jgit.ssh.apache:__pkg__",
         "//org.eclipse.jgit.ssh.apache.test:__pkg__",
         "//org.eclipse.jgit.ssh.jsch.test:__pkg__",
         "//org.eclipse.jgit.test:__pkg__",
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 33a15ad..fa9a416 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.ant.tasks;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 9d8fe5c..4a54d87 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant.test</artifactId>
diff --git a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
index fa4cc8f..480d88e 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)"
+  org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)"
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="7.2.1",
- org.eclipse.jgit.ant.tasks;version="7.2.1";
+Export-Package: org.eclipse.jgit.ant;version="7.3.0",
+ org.eclipse.jgit.ant.tasks;version="7.3.0";
   uses:="org.apache.tools.ant,
    org.apache.tools.ant.types"
diff --git a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
index 999651d..136b7cf 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 08458c9..4e85ee4 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-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 9ed283a..fdfc635 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.archive
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -13,18 +13,18 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)",
  org.tukaani.xz
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="7.2.1";
+Export-Package: org.eclipse.jgit.archive;version="7.3.0";
   uses:="org.apache.commons.compress.archivers,
    org.osgi.framework,
    org.eclipse.jgit.api,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.archive.internal;version="7.2.1";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="7.3.0";x-internal:=true
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index f87c0df..716e8d0 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 690c590..3935dfa 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index 8acafb8..87d2bb3 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -16,7 +16,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.benchmarks</artifactId>
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index e61d8c1..8cab250 100644
--- a/org.eclipse.jgit.coverage/pom.xml
+++ b/org.eclipse.jgit.coverage/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,88 +27,88 @@
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.archive</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.apache</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.server</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ui</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
index 3098195..f7bfc69 100644
--- a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
@@ -3,20 +3,20 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc.test
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
-Import-Package: org.bouncycastle.asn1.cryptlib;version="[1.79.0,2.0.0)",
- org.bouncycastle.jce.provider;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp.operator;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp.operator.jcajce;version="[1.79.0,2.0.0)",
- org.bouncycastle.util.encoders;version="[1.79.0,2.0.0)",
- org.eclipse.jgit.gpg.bc.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.gpg.bc.internal.keys;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.sha1;version="[7.2.1,7.3.0)",
+Import-Package: org.bouncycastle.asn1.cryptlib;version="[1.80.0,2.0.0)",
+ org.bouncycastle.jce.provider;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp.operator;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp.operator.jcajce;version="[1.80.0,2.0.0)",
+ org.bouncycastle.util.encoders;version="[1.80.0,2.0.0)",
+ org.eclipse.jgit.gpg.bc.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.sha1;version="[7.3.0,7.4.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 13b0979..10aa742 100644
--- a/org.eclipse.jgit.gpg.bc.test/pom.xml
+++ b/org.eclipse.jgit.gpg.bc.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc.test</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
index fedee97..7e946bd 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
@@ -3,28 +3,28 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[7.2.1,7.3.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[7.3.0,7.4.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/gpg_bc
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Import-Package: org.bouncycastle.asn1;version="[1.79.0,2.0.0)",
- org.bouncycastle.asn1.x9;version="[1.79.0,2.0.0)",
- org.bouncycastle.bcpg;version="[1.79.0,2.0.0)",
- org.bouncycastle.bcpg.sig;version="[1.79.0,2.0.0)",
- org.bouncycastle.crypto.ec;version="[1.79.0,2.0.0)",
- org.bouncycastle.gpg;version="[1.79.0,2.0.0)",
- org.bouncycastle.gpg.keybox;version="[1.79.0,2.0.0)",
- org.bouncycastle.gpg.keybox.jcajce;version="[1.79.0,2.0.0)",
- org.bouncycastle.jcajce.interfaces;version="[1.79.0,2.0.0)",
- org.bouncycastle.jcajce.util;version="[1.79.0,2.0.0)",
- org.bouncycastle.math.ec;version="[1.79.0,2.0.0)",
- org.bouncycastle.math.field;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp.jcajce;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp.operator;version="[1.79.0,2.0.0)",
- org.bouncycastle.openpgp.operator.jcajce;version="[1.79.0,2.0.0)",
- org.bouncycastle.util.encoders;version="[1.79.0,2.0.0)",
+Import-Package: org.bouncycastle.asn1;version="[1.80.0,2.0.0)",
+ org.bouncycastle.asn1.x9;version="[1.80.0,2.0.0)",
+ org.bouncycastle.bcpg;version="[1.80.0,2.0.0)",
+ org.bouncycastle.bcpg.sig;version="[1.80.0,2.0.0)",
+ org.bouncycastle.crypto.ec;version="[1.80.0,2.0.0)",
+ org.bouncycastle.gpg;version="[1.80.0,2.0.0)",
+ org.bouncycastle.gpg.keybox;version="[1.80.0,2.0.0)",
+ org.bouncycastle.gpg.keybox.jcajce;version="[1.80.0,2.0.0)",
+ org.bouncycastle.jcajce.interfaces;version="[1.80.0,2.0.0)",
+ org.bouncycastle.jcajce.util;version="[1.80.0,2.0.0)",
+ org.bouncycastle.math.ec;version="[1.80.0,2.0.0)",
+ org.bouncycastle.math.field;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp.jcajce;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp.operator;version="[1.80.0,2.0.0)",
+ org.bouncycastle.openpgp.operator.jcajce;version="[1.80.0,2.0.0)",
+ org.bouncycastle.util.encoders;version="[1.80.0,2.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.gpg.bc.internal;version="7.2.1";x-friends:="org.eclipse.jgit.gpg.bc.test",
- org.eclipse.jgit.gpg.bc.internal.keys;version="7.2.1";x-friends:="org.eclipse.jgit.gpg.bc.test"
+Export-Package: org.eclipse.jgit.gpg.bc.internal;version="7.3.0";x-friends:="org.eclipse.jgit.gpg.bc.test",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="7.3.0";x-friends:="org.eclipse.jgit.gpg.bc.test"
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
index 20d5a90..5134716 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.gpg.bc/pom.xml b/org.eclipse.jgit.gpg.bc/pom.xml
index 991711b..6159129 100644
--- a/org.eclipse.jgit.gpg.bc/pom.xml
+++ b/org.eclipse.jgit.gpg.bc/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc</artifactId>
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index 07f2321..244b20a 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.apache
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
@@ -26,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="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="7.2.1";
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="7.3.0";
   uses:="org.apache.http.client,
    org.eclipse.jgit.transport.http,
    org.apache.http.entity,
diff --git a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
index 90fa705..86adeb6 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index ddc141a..0c7c5ff 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-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 51d64ed..71c471d 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.http.server;version="7.2.1",
- org.eclipse.jgit.http.server.glue;version="7.2.1";
+Export-Package: org.eclipse.jgit.http.server;version="7.3.0",
+ org.eclipse.jgit.http.server.glue;version="7.3.0";
   uses:="jakarta.servlet,
   	jakarta.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="7.2.1";
+ org.eclipse.jgit.http.server.resolver;version="7.3.0";
   uses:="jakarta.servlet.http
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
@@ -19,14 +19,14 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Import-Package: jakarta.servlet;version="[6.0.0,7.0.0)",
  jakarta.servlet.http;version="[6.0.0,7.0.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.parser;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.resolver;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)"
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 ff6d607..67a14cf 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index 360c694..b34ca2f 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 795351b..518afb3 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.test
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -29,26 +29,26 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.thread;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.http.server;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.http.server.glue;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.http.server.resolver;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.resolver;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.http.server;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.http.server.glue;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.http.server.resolver;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 69ad378..8ed3017 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-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 9afec59..e3a6e26 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.http
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -22,17 +22,17 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.ssl;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.http.server;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.resolver;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.http.server;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.3.0,7.4.0)",
  org.junit;version="[4.13,5.0.0)",
  org.slf4j.helpers;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="7.2.1";
+Export-Package: org.eclipse.jgit.junit.http;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    jakarta.servlet,
    jakarta.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 0abd69a..855f210 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index ce8745a..2947f21 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
index b6fad01..30c359b 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.ssh
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -33,16 +33,16 @@
  org.apache.sshd.server.subsystem;version="[2.15.0,2.16.0)",
  org.apache.sshd.sftp;version="[2.15.0,2.16.0)",
  org.apache.sshd.sftp.server;version="[2.15.0,2.16.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="7.2.1"
+Export-Package: org.eclipse.jgit.junit.ssh;version="7.3.0"
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
index 655d717..27d1737 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 7304697..cbdfa31 100644
--- a/org.eclipse.jgit.junit.ssh/pom.xml
+++ b/org.eclipse.jgit.junit.ssh/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.ssh</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 84f5909..5f0546e 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Import-Package: org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.dircache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.merge;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="7.2.1",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.time;version="[7.2.1,7.3.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.dircache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.merge;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="7.3.0",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.time;version="[7.3.0,7.4.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
  org.junit.runners;version="[4.13,5.0.0)",
  org.junit.runners.model;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,3.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="7.2.1";
+Export-Package: org.eclipse.jgit.junit;version="7.3.0";
   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="7.2.1";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="7.3.0";uses:="org.eclipse.jgit.util.time"
diff --git a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
index e5209da..4e0108a 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 55b15f0..dbb8b06 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
index acaac07..8feb8ef 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -26,24 +26,24 @@
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.security;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.thread;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.server;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.server.fs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.test;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.server;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.test;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 a84195c..176f4af 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-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 951029b..ed8cfff 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs.server;version="7.2.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="7.3.0";
   uses:="jakarta.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="7.2.1";
+ org.eclipse.jgit.lfs.server.fs;version="7.3.0";
   uses:="jakarta.servlet,
    jakarta.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="7.2.1";
+ org.eclipse.jgit.lfs.server.internal;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="7.3.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -24,15 +24,15 @@
  jakarta.servlet.annotation;version="[6.0.0,7.0.0)",
  jakarta.servlet.http;version="[6.0.0,7.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 d984ed2..7e26500 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 25886c8..ebb815f 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index b9c1d82..b8a2ca7 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,28 +3,28 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Import-Package: org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.attributes;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+Import-Package: org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.attributes;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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="7.2.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="7.3.0";x-friends:="org.eclipse.jgit.lfs.server.test"
diff --git a/org.eclipse.jgit.lfs.test/pom.xml b/org.eclipse.jgit.lfs.test/pom.xml
index 56764ee..c9591b6 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.test</artifactId>
diff --git a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
index 53b8a12..5338f8b 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs;version="7.2.1",
- org.eclipse.jgit.lfs.errors;version="7.2.1",
- org.eclipse.jgit.lfs.internal;version="7.2.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="7.2.1"
+Export-Package: org.eclipse.jgit.lfs;version="7.3.0",
+ org.eclipse.jgit.lfs.errors;version="7.3.0",
+ org.eclipse.jgit.lfs.internal;version="7.3.0";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
+ org.eclipse.jgit.lfs.lib;version="7.3.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Import-Package: com.google.gson;version="[2.8.2,3.0.0)",
  com.google.gson.stream;version="[2.8.2,3.0.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.attributes;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.diff;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.dircache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.hooks;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)"
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.attributes;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.diff;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.dircache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.hooks;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index 3bc9aa0..fc12482 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index 70440f5..d336f16 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
index b41dd49..adea43b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
index c8f9722..734b634 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
index 63dafd6..f86652f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.gpg.bc"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
index 8a567ef..a756a8d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
index 92ab49f..d999c15 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.http.apache"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
index 95cace0..c2ca95a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index e92e921..922622c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.junit"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -24,7 +24,7 @@
 
    <requires>
       <import plugin="com.jcraft.jsch"/>
-      <import plugin="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
index 2718a6f..71e7373 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
index 76db5df..53cb4bac 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.lfs"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
index 02894e4..31ba89f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
index 0cfe1df..2d7ee4e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -35,9 +35,9 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="7.2.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.ssh.apache" version="7.2.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="7.3.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.ssh.apache" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
index 8d5cde5..2c80319 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
index f159039..032072f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.repository</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
index 8861de9..139569d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.source"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
index ed7006f..43568f8 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
@@ -30,7 +30,7 @@
     <dependency>
       <groupId>org.eclipse.jgit.feature</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>7.2.1-SNAPSHOT</version>
+      <version>7.3.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
index 13c7fa1..7f80bbf 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.apache"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
index a73fc4c..fb9f73b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
index 0955171..5eaa3b7 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.jsch"
       label="%featureName"
-      version="7.2.1.qualifier"
+      version="7.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="7.2.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="7.3.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
index e430eb4..d5da669 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
index 60baf0b..f97a96d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.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.32" sequenceNumber="1740521280">
+<target name="jgit-4.32" sequenceNumber="1742673483">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -77,7 +77,7 @@
         <dependency>
           <groupId>org.mockito</groupId>
           <artifactId>mockito-core</artifactId>
-          <version>5.15.2</version>
+          <version>5.16.1</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -87,13 +87,13 @@
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna-platform</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -103,49 +103,49 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee10</groupId>
           <artifactId>jetty-ee10-servlet</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -191,13 +191,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
       </dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
index 1558ad6..1fd41b0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.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.33" sequenceNumber="1740521283">
+<target name="jgit-4.33" sequenceNumber="1742673483">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -77,7 +77,7 @@
         <dependency>
           <groupId>org.mockito</groupId>
           <artifactId>mockito-core</artifactId>
-          <version>5.15.2</version>
+          <version>5.16.1</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -87,13 +87,13 @@
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna-platform</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -103,49 +103,49 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee10</groupId>
           <artifactId>jetty-ee10-servlet</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -191,13 +191,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
       </dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
index bc35d2c..732433a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.34" sequenceNumber="1740521284">
+<target name="jgit-4.34" sequenceNumber="1742673483">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -77,7 +77,7 @@
         <dependency>
           <groupId>org.mockito</groupId>
           <artifactId>mockito-core</artifactId>
-          <version>5.15.2</version>
+          <version>5.16.1</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -87,13 +87,13 @@
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna-platform</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -103,49 +103,49 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee10</groupId>
           <artifactId>jetty-ee10-servlet</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -191,13 +191,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
       </dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
index 15cabc3..1476ca8 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.35" sequenceNumber="1740521286">
+<target name="jgit-4.35" sequenceNumber="1742673483">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -77,7 +77,7 @@
         <dependency>
           <groupId>org.mockito</groupId>
           <artifactId>mockito-core</artifactId>
-          <version>5.15.2</version>
+          <version>5.16.1</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -87,13 +87,13 @@
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna-platform</artifactId>
-          <version>5.16.0</version>
+          <version>5.17.0</version>
           <type>jar</type>
         </dependency>
       </dependencies>
@@ -103,49 +103,49 @@
         <dependency>
           <groupId>org.eclipse.jetty.ee10</groupId>
           <artifactId>jetty-ee10-servlet</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-http</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-io</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-security</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-session</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util-ajax</artifactId>
-          <version>12.0.16</version>
+          <version>12.0.18</version>
           <type>jar</type>
         </dependency>
         <dependency>
@@ -191,13 +191,13 @@
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
         <dependency>
           <groupId>net.bytebuddy</groupId>
           <artifactId>byte-buddy-agent</artifactId>
-          <version>1.17.1</version>
+          <version>1.17.3</version>
           <type>jar</type>
         </dependency>
       </dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
new file mode 100644
index 0000000..3f46ebf
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="jgit-4.36" sequenceNumber="1742673483">
+  <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="org.apache.ant" version="1.10.15.v20240901-1000"/>
+      <unit id="org.apache.ant.source" version="1.10.15.v20240901-1000"/>
+      <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.v20240929-1000"/>
+      <unit id="org.junit.source" version="4.13.2.v20240929-1000"/>
+      <unit id="org.objenesis" version="3.4.0"/>
+      <unit id="org.objenesis.source" version="3.4.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/2025-06"/>
+    </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/2025-06/"/>
+    </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.10</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.15.0</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.sshd</groupId>
+          <artifactId>sshd-sftp</artifactId>
+          <version>2.15.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.16.1</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.17.0</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>net.java.dev.jna</groupId>
+          <artifactId>jna-platform</artifactId>
+          <version>5.17.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.ee10</groupId>
+          <artifactId>jetty-ee10-servlet</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-http</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-io</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-security</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-server</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-session</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-util</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-util-ajax</artifactId>
+          <version>12.0.18</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>jakarta.servlet</groupId>
+          <artifactId>jakarta.servlet-api</artifactId>
+          <version>6.1.0</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.12.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.17.3</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>net.bytebuddy</groupId>
+          <artifactId>byte-buddy-agent</artifactId>
+          <version>1.17.3</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.80</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.bouncycastle</groupId>
+          <artifactId>bcprov-jdk18on</artifactId>
+          <version>1.80</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.bouncycastle</groupId>
+          <artifactId>bcpkix-jdk18on</artifactId>
+          <version>1.80</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.bouncycastle</groupId>
+          <artifactId>bcutil-jdk18on</artifactId>
+          <version>1.80</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.27.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.37</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.18.0</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-compress</artifactId>
+          <version>1.27.1</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-lang3</artifactId>
+          <version>3.17.0</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>commons-io</groupId>
+          <artifactId>commons-io</artifactId>
+          <version>2.18.0</version>
+          <type>jar</type>
+        </dependency>
+        <dependency>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+          <version>1.3.5</version>
+          <type>jar</type>
+        </dependency>
+      </dependencies>
+    </location>
+  </locations>
+</target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.tpd
new file mode 100644
index 0000000..053929f
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.tpd
@@ -0,0 +1,8 @@
+target "jgit-4.36" with source configurePhase
+
+include "orbit/orbit-4.36.tpd"
+include "maven/dependencies.tpd"
+
+location "https://download.eclipse.org/staging/2025-06/" {
+	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 b292cf5..38c3479 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
@@ -97,12 +97,12 @@
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy"
-		version = "1.17.1"
+		version = "1.17.3"
 	}
 	dependency {
 		groupId = "net.bytebuddy"
 		artifactId = "byte-buddy-agent"
-		version = "1.17.1"
+		version = "1.17.3"
 	}
 }
 
@@ -154,42 +154,42 @@
 	dependency {
 		groupId = "org.eclipse.jetty.ee10"
 		artifactId = "jetty-ee10-servlet"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-http"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-io"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-security"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-server"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-session"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "org.eclipse.jetty"
 		artifactId = "jetty-util-ajax"
-		version = "12.0.16"
+		version = "12.0.18"
 	}
 	dependency {
 		groupId = "jakarta.servlet"
@@ -207,12 +207,12 @@
 	dependency {
 		groupId = "net.java.dev.jna"
 		artifactId = "jna"
-		version = "5.16.0"
+		version = "5.17.0"
 	}
 	dependency {
 		groupId = "net.java.dev.jna"
 		artifactId = "jna-platform"
-		version = "5.16.0"
+		version = "5.17.0"
 	}
 }
 
@@ -225,7 +225,7 @@
 	dependency {
 		groupId = "org.mockito"
 		artifactId = "mockito-core"
-		version = "5.15.2"
+		version = "5.16.1"
 	}
 }
 
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.36.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.36.tpd
new file mode 100644
index 0000000..4f46583
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/orbit-4.36.tpd
@@ -0,0 +1,25 @@
+target "orbit-4.36" with source configurePhase
+// see https://download.eclipse.org/tools/orbit/downloads/
+
+location "https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2025-06" {
+	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]
+	org.apache.ant [1.10.15.v20240901-1000,1.10.15.v20240901-1000]
+	org.apache.ant.source [1.10.15.v20240901-1000,1.10.15.v20240901-1000]
+	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.v20240929-1000,4.13.2.v20240929-1000]
+	org.junit.source [4.13.2.v20240929-1000,4.13.2.v20240929-1000]
+	org.objenesis [3.4,3.4]
+	org.objenesis.source [3.4,3.4]
+	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/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 9a08ac1..8b25ff1 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -16,7 +16,7 @@
 
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>jgit.tycho.parent</artifactId>
-  <version>7.2.1-SNAPSHOT</version>
+  <version>7.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
@@ -30,7 +30,7 @@
 
   <properties>
     <java.version>17</java.version>
-    <tycho-version>4.0.11</tycho-version>
+    <tycho-version>4.0.12</tycho-version>
     <target-platform>jgit-4.32</target-platform>
     <project.build.outputTimestamp>${git.commit.time}</project.build.outputTimestamp>
   </properties>
@@ -395,12 +395,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-deploy-plugin</artifactId>
-          <version>3.1.3</version>
+          <version>3.1.4</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-install-plugin</artifactId>
-          <version>3.1.3</version>
+          <version>3.1.4</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 0d7da80..2056f0b 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Import-Package: org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.diff;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.dircache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.merge;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.pgm;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.pgm.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.pgm.opt;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)",
+Import-Package: org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.diff;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.dircache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.merge;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.pgm;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.pgm.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.pgm.opt;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.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 2af017b..24c289c 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
index 999bf43..d533829 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
@@ -96,6 +96,20 @@ public void testCheckoutNonExistingBranch() throws Exception {
 	}
 
 	@Test
+	public void testCheckoutWithNoRef() throws Exception {
+		assertStringArrayEquals(
+				"a valid ref is expected",
+				executeExpectingException("git checkout"));
+	}
+
+	@Test
+	public void testCheckoutWithInvalidRef() throws Exception {
+		assertStringArrayEquals(
+				".feature is not a valid ref name",
+				executeExpectingException("git checkout .feature"));
+	}
+
+	@Test
 	public void testCheckoutNewBranchThatAlreadyExists() throws Exception {
 		try (Git git = new Git(db)) {
 			git.commit().setMessage("initial commit").call();
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index c630bb9..d91efd4 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -14,50 +14,50 @@
  org.eclipse.jetty.server.handler;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util;version="[12.0.0,13.0.0)",
  org.eclipse.jetty.util.component;version="[12.0.0,13.0.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.archive;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.awtui;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.blame;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.diff;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.dircache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.gitrepo;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.io;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.midx;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.server;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.server.fs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs.server.s3;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.merge;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.notes;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revplot;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http.apache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.resolver;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.sshd;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.archive;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.awtui;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.blame;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.diff;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.dircache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.gitrepo;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.io;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.midx;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.server;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.merge;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.notes;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revplot;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http.apache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.sshd;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.0)",
  org.kohsuke.args4j;version="[2.33.0,3.0.0)",
  org.kohsuke.args4j.spi;version="[2.33.0,3.0.0)"
-Export-Package: org.eclipse.jgit.console;version="7.2.1";
+Export-Package: org.eclipse.jgit.console;version="7.3.0";
  uses:="org.eclipse.jgit.transport,
   org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="7.2.1";
+ org.eclipse.jgit.pgm;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.awtui,
@@ -69,14 +69,14 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.api,
    javax.swing",
- org.eclipse.jgit.pgm.debug;version="7.2.1";
+ org.eclipse.jgit.pgm.debug;version="7.3.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm,
    org.eclipse.jetty.servlet",
- org.eclipse.jgit.pgm.internal;version="7.2.1";
+ org.eclipse.jgit.pgm.internal;version="7.3.0";
   x-friends:="org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="7.2.1";
+ org.eclipse.jgit.pgm.opt;version="7.3.0";
   uses:="org.kohsuke.args4j,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 3b92eb3..1c4a481 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 19f85ea..5890ce8 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
index 229d54d..7a218ec 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
@@ -18,6 +18,7 @@
 import org.eclipse.jgit.api.CheckoutCommand;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.CheckoutConflictException;
+import org.eclipse.jgit.api.errors.InvalidRefNameException;
 import org.eclipse.jgit.api.errors.RefAlreadyExistsException;
 import org.eclipse.jgit.api.errors.RefNotFoundException;
 import org.eclipse.jgit.lib.Constants;
@@ -94,7 +95,16 @@ protected void run() throws Exception {
 					outw.println(MessageFormat.format(
 							CLIText.get().switchedToBranch,
 							Repository.shortenRefName(ref.getName())));
-			} catch (RefNotFoundException e) {
+			} catch (InvalidRefNameException e){
+				if (name == null){
+					throw die(MessageFormat
+							.format("a valid ref is expected",e));
+				} else {
+					throw die(MessageFormat
+							.format(CLIText.get().notAValidRefName, name, e));
+				}
+			}
+			catch (RefNotFoundException e) {
 				throw die(MessageFormat
 						.format(CLIText.get().pathspecDidNotMatch, name), e);
 			} catch (RefAlreadyExistsException e) {
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 5922181..8942a41 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/agent
 Bundle-Vendor: %Bundle-Vendor
-Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[7.2.1,7.3.0)"
+Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[7.3.0,7.4.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.agent
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Import-Package: org.eclipse.jgit.transport.sshd;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)"
+Import-Package: org.eclipse.jgit.transport.sshd;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)"
 Require-Bundle: com.sun.jna;bundle-version="[5.8.0,6.0.0)",
  com.sun.jna.platform;bundle-version="[5.8.0,6.0.0)"
-Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="7.2.1";x-internal:=true
+Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="7.3.0";x-internal:=true
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
index 08b1863..37b442e 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache.agent/pom.xml b/org.eclipse.jgit.ssh.apache.agent/pom.xml
index a26fd4d..2d34495 100644
--- a/org.eclipse.jgit.ssh.apache.agent/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.agent/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.agent</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
index 21c8b63..88ab277 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -25,22 +25,22 @@
  org.apache.sshd.core;version="[2.15.0,2.16.0)",
  org.apache.sshd.server;version="[2.15.0,2.16.0)",
  org.apache.sshd.server.forward;version="[2.15.0,2.16.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.signing.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.sshd;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.sshd;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.sshd.agent;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.signing.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.sshd;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.sshd;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13.0,5.0.0)",
diff --git a/org.eclipse.jgit.ssh.apache.test/pom.xml b/org.eclipse.jgit.ssh.apache.test/pom.xml
index 1aef778..b86a560 100644
--- a/org.eclipse.jgit.ssh.apache.test/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/BUILD b/org.eclipse.jgit.ssh.apache/BUILD
index 83709c3..c32635f 100644
--- a/org.eclipse.jgit.ssh.apache/BUILD
+++ b/org.eclipse.jgit.ssh.apache/BUILD
@@ -12,6 +12,10 @@
     resource_strip_prefix = "org.eclipse.jgit.ssh.apache/resources",
     resources = RESOURCES,
     deps = [
+        "//lib:bcpg",
+        "//lib:bcpkix",
+        "//lib:bcprov",
+        "//lib:bcutil",
         "//lib:slf4j-api",
         "//lib:sshd-osgi",
         "//lib:sshd-sftp",
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index 9e2a2b9..5025b52 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,10 +6,10 @@
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Export-Package: org.eclipse.jgit.internal.signing.ssh;version="7.2.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.internal.transport.sshd;version="7.2.1";x-friends:="org.eclipse.jgit.ssh.apache.test";
+Export-Package: org.eclipse.jgit.internal.signing.ssh;version="7.3.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.internal.transport.sshd;version="7.3.0";x-friends:="org.eclipse.jgit.ssh.apache.test";
   uses:="org.apache.sshd.client,
    org.apache.sshd.client.auth,
    org.apache.sshd.client.auth.keyboard,
@@ -24,20 +24,21 @@
    org.apache.sshd.common.signature,
    org.apache.sshd.common.util.buffer,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.agent;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.auth;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.pkcs11;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="7.2.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.signing.ssh;version="7.2.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.transport.sshd;version="7.2.1";
+ org.eclipse.jgit.internal.transport.sshd.agent;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.auth;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.pkcs11;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="7.3.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.signing.ssh;version="7.3.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.transport.sshd;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.apache.sshd.client.config.hosts,
    org.apache.sshd.common.keyprovider,
    org.eclipse.jgit.util,
    org.apache.sshd.client.session,
    org.apache.sshd.client.keyverifier",
- org.eclipse.jgit.transport.sshd.agent;version="7.2.1"
-Import-Package: org.apache.sshd.agent;version="[2.15.0,2.16.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="7.3.0"
+Import-Package: org.bouncycastle.jce.provider;version="[1.80.0,2.0.0)",
+ org.apache.sshd.agent;version="[2.15.0,2.16.0)",
  org.apache.sshd.client;version="[2.15.0,2.16.0)",
  org.apache.sshd.client.auth;version="[2.15.0,2.16.0)",
  org.apache.sshd.client.auth.keyboard;version="[2.15.0,2.16.0)",
@@ -89,14 +90,14 @@
  org.apache.sshd.sftp;version="[2.15.0,2.16.0)",
  org.apache.sshd.sftp.client;version="[2.15.0,2.16.0)",
  org.apache.sshd.sftp.common;version="[2.15.0,2.16.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.fnmatch;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.fnmatch;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 31a9f24..d6225e2 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index 58df28d..365034a 100644
--- a/org.eclipse.jgit.ssh.apache/pom.xml
+++ b/org.eclipse.jgit.ssh.apache/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
index 623daf5..34f8e0a 100644
--- a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
@@ -3,20 +3,20 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 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="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.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 996c375..5f094a7 100644
--- a/org.eclipse.jgit.ssh.jsch.test/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
index 7482696..6b0130c 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="[7.2.1,7.3.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[7.3.0,7.4.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: OSGI-INF/l10n/jsch
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="7.2.1"
+Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="7.3.0"
 Import-Package: com.jcraft.jsch;version="[0.1.37,0.2.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.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 a214783..06d0ce3 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.jsch/pom.xml b/org.eclipse.jgit.ssh.jsch/pom.xml
index 53d37e1..03ae29d 100644
--- a/org.eclipse.jgit.ssh.jsch/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index c8867cb..7ac93c2 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.test
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -22,66 +22,66 @@
  org.apache.commons.io.output;version="[2.15.0,3.0.0)",
  org.apache.commons.lang3;version="[3.17.0,4.0.0)",
  org.assertj.core.api;version="[3.14.0,4.0.0)",
- org.eclipse.jgit.annotations;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.api.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.archive;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.attributes;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.awtui;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.blame;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.blame.cache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.diff;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.dircache;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.events;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.fnmatch;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.gitrepo;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.hooks;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.ignore;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.ignore.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.diff;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.diffmergetool;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.fsck;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.commitgraph;version="7.2.1",
- org.eclipse.jgit.internal.storage.dfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.io;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.memory;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.midx;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.connectivity;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.parser;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.junit.time;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lfs;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.logging;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.merge;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.notes;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.patch;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.pgm;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.pgm.internal;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revplot;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.file;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.storage.pack;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.submodule;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.http;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport.resolver;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.treewalk.filter;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.io;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util.sha1;version="[7.2.1,7.3.0)",
+ org.eclipse.jgit.annotations;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.api.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.archive;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.attributes;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.awtui;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.blame;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.blame.cache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.diff;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.dircache;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.events;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.fnmatch;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.gitrepo;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.hooks;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.ignore;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.ignore.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.diff;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.fsck;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.commitgraph;version="7.3.0",
+ org.eclipse.jgit.internal.storage.dfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.io;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.memory;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.midx;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.connectivity;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.junit.time;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lfs;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.logging;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.merge;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.notes;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.patch;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.pgm;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.pgm.internal;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revplot;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.file;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.storage.pack;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.submodule;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.http;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport.resolver;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.treewalk.filter;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.io;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util.sha1;version="[7.3.0,7.4.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)",
diff --git a/org.eclipse.jgit.test/exttst/org/eclipse/jgit/ignore/CGitVsJGitRandomIgnorePatternTest.java b/org.eclipse.jgit.test/exttst/org/eclipse/jgit/ignore/CGitVsJGitRandomIgnorePatternTest.java
index 23a267c..47a410b 100644
--- a/org.eclipse.jgit.test/exttst/org/eclipse/jgit/ignore/CGitVsJGitRandomIgnorePatternTest.java
+++ b/org.eclipse.jgit.test/exttst/org/eclipse/jgit/ignore/CGitVsJGitRandomIgnorePatternTest.java
@@ -164,7 +164,7 @@ private Process startCgitCheckIgnore(String path) throws IOException {
 		private String readProcessStream(InputStream processStream)
 				throws IOException {
 			try (BufferedReader stdOut = new BufferedReader(
-					new InputStreamReader(processStream))) {
+					new InputStreamReader(processStream, UTF_8))) {
 
 				StringBuilder out = new StringBuilder();
 				String s;
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 1a1e42f..9cf21fd 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameGeneratorCacheTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameGeneratorCacheTest.java
index 65cac11..3e4ac1f 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameGeneratorCacheTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/blame/BlameGeneratorCacheTest.java
@@ -19,7 +19,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 import org.eclipse.jgit.blame.cache.BlameCache;
 import org.eclipse.jgit.blame.cache.CacheRegion;
@@ -46,7 +45,8 @@ public class BlameGeneratorCacheTest extends RepositoryTestCase {
 	 * L4    |       *C2    C2   *C4     C4
 	 * </pre>
 	 *
-	 * @throws Exception any error
+	 * @throws Exception
+	 *             any error
 	 */
 	@Test
 	public void blame_simple_correctRegions() throws Exception {
@@ -87,7 +87,64 @@ public void blame_simple_cacheUsage() throws Exception {
 		assertCacheUsage(c4, blameAndCache(c4), true, 1);
 		assertCacheUsage(c4, blameAndCache(c3), true, 2);
 		assertCacheUsage(c4, blameAndCache(c2), true, 3);
-		assertCacheUsage(c4, blameAndCache(c1), true, 4);
+		// Cache not needed because c1 doesn't have parents
+		assertCacheUsage(c4, blameAndCache(c1), false, 4);
+	}
+
+	@Test
+	public void blame_simple_createdMidHistory_correctRegions() throws Exception {
+		String c1Content = lines("L1C1", "L2C1", "L3C1");
+		String c2Content = lines("L1C1", "L2C1", "L3C1", "L4C2");
+		String c3Content = lines("L1C1", "L2C3", "L3C3", "L4C2");
+		String c4Content = lines("L1C1", "L2C4", "L3C3", "L4C4");
+
+		RevCommit c0, c1, c2, c3, c4;
+		try (TestRepository<FileRepository> r = new TestRepository<>(db)) {
+			c0 = r.commit().add("otherfile", "content").create();
+			c1 = r.commit().parent(c0).add(FILE, c1Content).create();
+			c2 = r.commit().parent(c1).add(FILE, c2Content).create();
+			c3 = r.commit().parent(c2).add(FILE, c3Content).create();
+			c4 = r.commit().parent(c3).add(FILE, c4Content).create();
+		}
+
+		List<EmittedRegion> expectedRegions = Arrays.asList(
+				new EmittedRegion(c1, 0, 1),
+				new EmittedRegion(c4, 1, 2),
+				new EmittedRegion(c3, 2, 3),
+				new EmittedRegion(c4, 3, 4));
+
+		assertRegions(c4, null, expectedRegions, 4);
+		assertRegions(c4, emptyCache(), expectedRegions, 4);
+		assertRegions(c4, blameAndCache(c4, FILE), expectedRegions, 4);
+		assertRegions(c4, blameAndCache(c3, FILE), expectedRegions, 4);
+		assertRegions(c4, blameAndCache(c2, FILE), expectedRegions, 4);
+		assertRegions(c4, blameAndCache(c1, FILE), expectedRegions, 4);
+		assertRegions(c4, blameAndCache(c0, FILE), expectedRegions, 4);
+	}
+
+	@Test
+	public void blame_simple_createdMidHistory_cacheUsage() throws Exception {
+		String c1Content = lines("L1C1", "L2C1", "L3C1");
+		String c2Content = lines("L1C1", "L2C1", "L3C1", "L4C2");
+		String c3Content = lines("L1C1", "L2C3", "L3C3", "L4C2");
+		String c4Content = lines("L1C1", "L2C4", "L3C3", "L4C4");
+
+		RevCommit c0, c1, c2, c3, c4;
+		try (TestRepository<FileRepository> r = new TestRepository<>(db)) {
+			c0 = r.commit().add("otherfile", "content").create();
+			c1 = r.commit().parent(c0).add(FILE, c1Content).create();
+			c2 = r.commit().parent(c1).add(FILE, c2Content).create();
+			c3 = r.commit().parent(c2).add(FILE, c3Content).create();
+			c4 = r.commit().parent(c3).add(FILE, c4Content).create();
+		}
+
+		assertCacheUsage(c4, null, false, 4);
+		assertCacheUsage(c4, emptyCache(), false, 4);
+		assertCacheUsage(c4, blameAndCache(c4, FILE), true, 1);
+		assertCacheUsage(c4, blameAndCache(c3, FILE), true, 2);
+		assertCacheUsage(c4, blameAndCache(c2, FILE), true, 3);
+		// Cache not needed because c1 created the file
+		assertCacheUsage(c4, blameAndCache(c1, FILE), false, 4);
 	}
 
 	/**
@@ -102,10 +159,11 @@ public void blame_simple_cacheUsage() throws Exception {
 	 * L4    |       *C2
 	 * </pre>
 	 *
-	 * @throws Exception any error
+	 * @throws Exception
+	 *             any error
 	 */
 	@Test
-	public void blame_ovewrite_correctRegions() throws Exception {
+	public void blame_overwrite_correctRegions() throws Exception {
 		RevCommit c1, c2, c3;
 		try (TestRepository<FileRepository> r = new TestRepository<>(db)) {
 			c1 = commit(r, lines("L1C1", "L2C1", "L3C1"));
@@ -166,7 +224,8 @@ public void blame_overwrite_cacheUsage() throws Exception {
 	 *              L8-L11 b (from sideB)
 	 * </pre>
 	 *
-	 * @throws Exception any error
+	 * @throws Exception
+	 *             any error
 	 */
 	@Test
 	public void blame_merge_correctRegions() throws Exception {
@@ -204,14 +263,13 @@ public void blame_merge_cacheUsage() throws Exception {
 		assertCacheUsage(mergedTip, null, /* cacheUsed */ false,
 				/* candidates */ 4);
 		assertCacheUsage(mergedTip, emptyCache(), false, 4);
-		assertCacheUsage(mergedTip, blameAndCache(mergedTip), true, 1);
 
 		// While splitting unblamed regions to parents, sideA comes first
 		// and gets "aaaa----". Processing is by commit time, so sideB is
 		// explored first
 		assertCacheUsage(mergedTip, blameAndCache(sideA), true, 3);
 		assertCacheUsage(mergedTip, blameAndCache(sideB), true, 4);
-		assertCacheUsage(mergedTip, blameAndCache(root), true, 4);
+		assertCacheUsage(mergedTip, blameAndCache(root), false, 4);
 	}
 
 	/**
@@ -226,7 +284,8 @@ public void blame_merge_cacheUsage() throws Exception {
 	 * L4    |              C1      C1
 	 * </pre>
 	 *
-	 * @throws Exception any error
+	 * @throws Exception
+	 *             any error
 	 */
 	@Test
 	public void blame_movingBlock_correctRegions() throws Exception {
@@ -263,7 +322,77 @@ public void blame_movingBlock_cacheUsage() throws Exception {
 		assertCacheUsage(c3, emptyCache(), false, 3);
 		assertCacheUsage(c3, blameAndCache(c3), true, 1);
 		assertCacheUsage(c3, blameAndCache(c2), true, 2);
-		assertCacheUsage(c3, blameAndCache(c1), true, 3);
+		assertCacheUsage(c3, blameAndCache(c1), false, 3);
+	}
+
+	@Test
+	public void blame_cacheOnlyOnChange_unmodifiedInSomeCommits_cacheUsage() throws Exception {
+		String README = "README";
+		String fileC1Content = lines("L1C1", "L2C1", "L3C1");
+		String fileC2Content = lines("L1C1", "L2C1", "L3C1", "L4C2");
+		String fileC3Content = lines("L1C1", "L2C3", "L3C3", "L4C2");
+		String fileC4Content = lines("L1C1", "L2C4", "L3C3", "L4C4");
+
+		RevCommit c1, c2, c3, c4, ni;
+		try (TestRepository<FileRepository> r = new TestRepository<>(db)) {
+			c1 = r.commit().add(FILE, fileC1Content).create();
+			c2 = r.commit().parent(c1).add(FILE, fileC2Content).create();
+			// Keep FILE and edit 100 times README
+			ni = c2;
+			for (int i = 0; i < 100; i++) {
+				ni = r.commit().parent(ni).add(README, "whatever " + i).create();
+			}
+			c3 = r.commit().parent(ni).add(FILE, fileC3Content).create();
+			c4 = r.commit().parent(c3).add(FILE, fileC4Content).create();
+			r.branch("refs/heads/master").update(c4);
+		}
+
+		InMemoryBlameCache empty = emptyCache();
+		assertCacheUsage(c4, empty, false, 104);
+		assertEquals(3, empty.callCount);
+
+		InMemoryBlameCache c4Cached = blameAndCache(c4, FILE);
+		assertCacheUsage(c4, c4Cached, true, 1);
+		assertEquals(1, c4Cached.callCount);
+
+		InMemoryBlameCache c3Cached = blameAndCache(c3, FILE);
+		assertCacheUsage(c4, c3Cached, true, 2);
+		assertEquals(2, c3Cached.callCount);
+
+		// This commit doesn't touch the file, shouldn't check the cache
+		InMemoryBlameCache niCached = blameAndCache(ni, FILE);
+		assertCacheUsage(c4, niCached, false, 104);
+		assertEquals(3, niCached.callCount);
+
+		InMemoryBlameCache c2Cached = blameAndCache(c2, FILE);
+		assertCacheUsage(c4, c2Cached, true, 103);
+		assertEquals(3, c2Cached.callCount);
+
+		// No parents, c1 doesn't need cache.
+		InMemoryBlameCache c1Cached = blameAndCache(c1, FILE);
+		assertCacheUsage(c4, c1Cached, false, 104);
+		assertEquals(3, c1Cached.callCount);
+	}
+
+	@Test
+	public void blame_cacheOnlyOnChange_renameWithoutChange_cacheUsage() throws Exception {
+		String OTHER = "other.txt";
+		String c1Content = lines("L1C1", "L2C1", "L3C1");
+		String c2Content = lines("L1C1", "L2C1", "L3C1", "L4C2");
+
+		RevCommit c1, c2, c3;
+		try (TestRepository<FileRepository> r = new TestRepository<>(db)) {
+			c1 = r.commit().add(OTHER, c1Content).create();
+			c2 = r.commit().parent(c1).add(OTHER, c2Content).create();
+			c3 = r.commit().parent(c2).rm(OTHER).add(FILE, c2Content).create();
+			r.branch("refs/heads/master").update(c3);
+		}
+
+		assertCacheUsage(c3, null, false, 3);
+		assertCacheUsage(c3, emptyCache(), false, 3);
+		assertCacheUsage(c3, blameAndCache(c3, FILE), true, 1);
+		assertCacheUsage(c3, blameAndCache(c2, OTHER), true, 2);
+		assertCacheUsage(c3, blameAndCache(c1, OTHER), false, 3);
 	}
 
 	private void assertRegions(RevCommit commit, InMemoryBlameCache cache,
@@ -278,11 +407,11 @@ private void assertRegions(RevCommit commit, InMemoryBlameCache cache,
 	}
 
 	private void assertCacheUsage(RevCommit commit, InMemoryBlameCache cache,
-			boolean useCache, int candidatesVisited) throws IOException {
+			boolean cacheHit, int candidatesVisited) throws IOException {
 		try (BlameGenerator gen = new BlameGenerator(db, FILE, cache)) {
 			gen.push(null, db.parseCommit(commit));
 			consume(gen);
-			assertEquals(useCache, gen.getStats().isCacheHit());
+			assertEquals(cacheHit, gen.getStats().isCacheHit());
 			assertEquals(candidatesVisited,
 					gen.getStats().getCandidatesVisited());
 		}
@@ -300,8 +429,8 @@ private static void assertAllLinesCovered(int lines,
 				regions.get(regions.size() - 1).resultEnd());
 	}
 
-	private static void assertRegionsEquals(
-			List<EmittedRegion> expected, List<EmittedRegion> actual) {
+	private static void assertRegionsEquals(List<EmittedRegion> expected,
+			List<EmittedRegion> actual) {
 		assertEquals(expected.size(), actual.size());
 		Collections.sort(actual);
 		for (int i = 0; i < expected.size(); i++) {
@@ -328,15 +457,20 @@ private List<EmittedRegion> consume(BlameGenerator generator)
 
 	private InMemoryBlameCache blameAndCache(RevCommit commit)
 			throws IOException {
+		return blameAndCache(commit, FILE);
+	}
+
+	private InMemoryBlameCache blameAndCache(RevCommit commit, String path)
+			throws IOException {
 		List<CacheRegion> regions;
-		try (BlameGenerator generator = new BlameGenerator(db, FILE)) {
+		try (BlameGenerator generator = new BlameGenerator(db, path)) {
 			generator.push(null, commit);
 			regions = consume(generator).stream()
 					.map(EmittedRegion::asCacheRegion)
-					.collect(Collectors.toUnmodifiableList());
+					.toList();
 		}
 		InMemoryBlameCache cache = new InMemoryBlameCache("<x>");
-		cache.put(commit, FILE, regions);
+		cache.put(commit, path, regions);
 		return cache;
 	}
 
@@ -347,7 +481,24 @@ private static RevCommit commitAsLines(TestRepository<?> r,
 
 	private static RevCommit commit(TestRepository<?> r, String contents,
 			RevCommit... parents) throws Exception {
-		return r.commit(r.tree(r.file(FILE, r.blob(contents))), parents);
+		return commit(r, Map.of(FILE, contents), parents);
+	}
+
+	private static RevCommit commit(TestRepository<?> r,
+			Map<String, String> fileContents, RevCommit... parents)
+			throws Exception {
+		TestRepository<?>.CommitBuilder builder = r.commit();
+		for (RevCommit commit : parents) {
+			builder.parent(commit);
+		}
+		fileContents.forEach((path, content) -> {
+			try {
+				builder.add(path, content);
+			} catch (Exception e) {
+				throw new RuntimeException(e);
+			}
+		});
+		return builder.create();
 	}
 
 	private static String lines(String... l) {
@@ -372,18 +523,21 @@ private static class InMemoryBlameCache implements BlameCache {
 
 		private final String description;
 
+		private int callCount;
+
 		public InMemoryBlameCache(String description) {
 			this.description = description;
 		}
 
 		@Override
 		public List<CacheRegion> get(Repository repo, ObjectId commitId,
-									 String path) throws IOException {
+				String path) throws IOException {
+			callCount++;
 			return cache.get(new Key(commitId.name(), path));
 		}
 
 		public void put(ObjectId commitId, String path,
-						List<CacheRegion> cachedRegions) {
+				List<CacheRegion> cachedRegions) {
 			cache.put(new Key(commitId.name(), path), cachedRegions);
 		}
 
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableCompactorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableCompactorTest.java
index 6fc7f25..62dbda4 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableCompactorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableCompactorTest.java
@@ -19,6 +19,8 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.time.Instant;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -27,6 +29,7 @@
 import org.eclipse.jgit.internal.storage.reftable.ReftableWriter.Stats;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectIdRef;
+import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Ref;
 import org.junit.Test;
 
@@ -279,6 +282,95 @@ public void twoTablesNotIncludeOneDelete() throws IOException {
 		}
 	}
 
+	@Test
+	public void reflog_all() throws IOException {
+		byte[] inTab;
+		try (ByteArrayOutputStream inBuf = new ByteArrayOutputStream()) {
+			ReftableWriter writer = new ReftableWriter(inBuf)
+					.setMinUpdateIndex(0).setMaxUpdateIndex(2).begin();
+			writer.writeLog(MASTER, 2, person(Instant.ofEpochSecond(500)),
+					id(3), id(4), null);
+			writer.writeLog(MASTER, 1, person(Instant.ofEpochSecond(300)),
+					id(2), id(3), null);
+			writer.writeLog(MASTER, 0, person(Instant.ofEpochSecond(100)),
+					id(1), id(2), null);
+			writer.finish();
+			inTab = inBuf.toByteArray();
+		}
+
+		ReftableCompactor compactor;
+		try (ByteArrayOutputStream outBuf = new ByteArrayOutputStream()) {
+			compactor = new ReftableCompactor(outBuf);
+			// No setReflogExpire time is set
+			List<ReftableReader> readers = new ArrayList<>();
+			readers.add(read(inTab));
+			compactor.addAll(readers);
+			compactor.compact();
+		}
+		Stats stats = compactor.getStats();
+		assertEquals(3, stats.logCount());
+	}
+
+	@Test
+	public void reflog_setExpireOlderThan() throws IOException {
+		byte[] inTab;
+		try (ByteArrayOutputStream inBuf = new ByteArrayOutputStream()) {
+			ReftableWriter writer = new ReftableWriter(inBuf)
+					.setMinUpdateIndex(0).setMaxUpdateIndex(2).begin();
+			writer.writeLog(MASTER, 2, person(Instant.ofEpochSecond(500)),
+					id(3), id(4), null);
+			writer.writeLog(MASTER, 1, person(Instant.ofEpochSecond(300)),
+					id(2), id(3), null);
+			writer.writeLog(MASTER, 0, person(Instant.ofEpochSecond(100)),
+					id(1), id(2), null);
+			writer.finish();
+			inTab = inBuf.toByteArray();
+		}
+
+		ReftableCompactor compactor;
+		try (ByteArrayOutputStream outBuf = new ByteArrayOutputStream()) {
+			compactor = new ReftableCompactor(outBuf);
+			compactor.setReflogExpireOlderThan(Instant.ofEpochSecond(300));
+			List<ReftableReader> readers = new ArrayList<>();
+			readers.add(read(inTab));
+			compactor.addAll(readers);
+			compactor.compact();
+		}
+
+		Stats stats = compactor.getStats();
+		assertEquals(2, stats.logCount());
+	}
+
+	@Test
+	public void reflog_disable() throws IOException {
+		byte[] inTab;
+		try (ByteArrayOutputStream inBuf = new ByteArrayOutputStream()) {
+			ReftableWriter writer = new ReftableWriter(inBuf)
+					.setMinUpdateIndex(0).setMaxUpdateIndex(2).begin();
+			writer.writeLog(MASTER, 2, person(Instant.ofEpochSecond(500)),
+					id(3), id(4), null);
+			writer.writeLog(MASTER, 1, person(Instant.ofEpochSecond(300)),
+					id(2), id(3), null);
+			writer.writeLog(MASTER, 0, person(Instant.ofEpochSecond(100)),
+					id(1), id(2), null);
+			writer.finish();
+			inTab = inBuf.toByteArray();
+		}
+
+		ReftableCompactor compactor;
+		try (ByteArrayOutputStream outBuf = new ByteArrayOutputStream()) {
+			compactor = new ReftableCompactor(outBuf);
+			compactor.setReflogExpireOlderThan(Instant.MAX);
+			List<ReftableReader> readers = new ArrayList<>();
+			readers.add(read(inTab));
+			compactor.addAll(readers);
+			compactor.compact();
+		}
+
+		Stats stats = compactor.getStats();
+		assertEquals(0, stats.logCount());
+	}
+
 	private static Ref ref(String name, int id) {
 		return new ObjectIdRef.PeeledNonTag(PACKED, name, id(id));
 	}
@@ -296,6 +388,10 @@ private static ObjectId id(int i) {
 		return ObjectId.fromRaw(buf);
 	}
 
+	private static PersonIdent person(Instant when) {
+		return new PersonIdent("a. u. thor", "author@jgit.com", when, ZoneId.systemDefault());
+	}
+
 	private static ReftableReader read(byte[] table) {
 		return new ReftableReader(BlockSource.from(table));
 	}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
index c2f8f10..e47dd89 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkCommitGraphTest.java
@@ -37,8 +37,9 @@
 import org.eclipse.jgit.revwalk.filter.RevFilter;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
+import org.eclipse.jgit.treewalk.filter.ChangedPathTreeFilter;
+import org.eclipse.jgit.treewalk.filter.OrTreeFilter;
 import org.eclipse.jgit.treewalk.filter.PathFilter;
-import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
 import org.eclipse.jgit.treewalk.filter.TreeFilter;
 import org.junit.Test;
 
@@ -172,61 +173,99 @@ public void testTreeFilter() throws Exception {
 	}
 
 	@Test
-	public void testChangedPathFilter() throws Exception {
-		RevCommit c1 = commitFile("file1", "1", "master");
-		commitFile("file2", "2", "master");
-		RevCommit c3 = commitFile("file1", "3", "master");
-		RevCommit c4 = commitFile("file2", "4", "master");
+	public void testChangedPathFilter_allModify() throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file2", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file1", blob("3"))), c2);
+		RevCommit c4 = commit(tree(file("file2", blob("4"))), c3);
 
-		enableAndWriteCommitGraph();
-
-		TreeRevFilter trf = new TreeRevFilter(rw, PathFilter.create("file1"));
-		rw.markStart(rw.lookupCommit(c4));
-		rw.setRevFilter(trf);
-		assertEquals(c3, rw.next());
-		assertEquals(c1, rw.next());
-		assertNull(rw.next());
-
-		// 1 commit that has exactly one parent and matches path
-		assertEquals(1, trf.getChangedPathFilterTruePositive());
-
-		// No false positives
-		assertEquals(0, trf.getChangedPathFilterFalsePositive());
-
-		// 2 commits that have exactly one parent and don't match path
-		assertEquals(2, trf.getChangedPathFilterNegative());
-	}
-
-	@Test
-	public void testChangedPathFilterWithMultiPaths() throws Exception {
-		RevCommit c1 = commitFile("file1", "1", "master");
-		RevCommit c2 = commitFile("file1", "2", "master");
-		RevCommit c3 = commitFile("file2", "3", "master");
-		RevCommit c4 = commitFile("file3", "4", "master");
+		branch(c4, "master");
 
 		enableAndWriteCommitGraph();
 
 		TreeRevFilter trf = new TreeRevFilter(rw,
-				PathFilterGroup.createFromStrings(List.of("file1", "file2")));
+				ChangedPathTreeFilter.create("file1"));
 		rw.markStart(rw.lookupCommit(c4));
 		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
 		assertEquals(c3, rw.next());
 		assertEquals(c2, rw.next());
 		assertEquals(c1, rw.next());
 		assertNull(rw.next());
 
-		// c2 and c3 has either file1 or file2, c1 did not use ChangedPathFilter
-		// since it has no parent
+		// all commits modified file1 but c1 did not have a parent
+		assertEquals(3, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// No negatives because all 4 commits had modified file1
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_someModify() throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file1", blob("1"))), c1);
+		RevCommit c3 = commit(tree(file("file1", blob("2"))), c2);
+		RevCommit c4 = commit(tree(file("file1", blob("1"))), c3);
+
+		branch(c4, "master");
+
+		enableAndWriteCommitGraph();
+
+		TreeRevFilter trf = new TreeRevFilter(rw,
+				ChangedPathTreeFilter.create("file1"));
+		rw.markStart(rw.lookupCommit(c4));
+		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
+		assertEquals(c3, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// c4 and c3 modified file1. c1 did not have a parent
 		assertEquals(2, trf.getChangedPathFilterTruePositive());
 
 		// No false positives
 		assertEquals(0, trf.getChangedPathFilterFalsePositive());
 
-		// c4 does not match either file1 or file2
+		// c2 did not modify file1
 		assertEquals(1, trf.getChangedPathFilterNegative());
 	}
 
 	@Test
+	public void testChangedPathFilterWithMultiPaths() throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file1", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file2", blob("3"))), c2);
+		RevCommit c4 = commit(tree(file("file3", blob("4"))), c3);
+
+		branch(c4, "master");
+
+		enableAndWriteCommitGraph();
+
+		TreeRevFilter trf = new TreeRevFilter(rw,
+				ChangedPathTreeFilter.create("file1", "file2"));
+		rw.markStart(rw.lookupCommit(c4));
+		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
+		assertEquals(c3, rw.next());
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// all commits have modified either file1 or file2, c1 did not have a
+		// parent
+		assertEquals(3, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// No negative
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
 	public void testChangedPathFilterWithFollowFilter() throws Exception {
 		RevCommit c0 = commit(tree());
 		RevCommit c1 = commit(tree(file("file", blob("contents"))), c0);
@@ -245,9 +284,8 @@ public void testChangedPathFilterWithFollowFilter() throws Exception {
 		db.getConfig().setString(ConfigConstants.CONFIG_DIFF_SECTION, null,
 				ConfigConstants.CONFIG_KEY_RENAMES, "true");
 
-		TreeRevFilter trf = new TreeRevFilter(rw,
-				new FollowFilter(PathFilter.create("renamed-file"),
-						db.getConfig().get(DiffConfig.KEY)));
+		TreeRevFilter trf = new TreeRevFilter(rw, FollowFilter
+				.create("renamed-file", db.getConfig().get(DiffConfig.KEY)));
 		rw.markStart(rw.lookupCommit(c4));
 		rw.setRevFilter(trf);
 		assertEquals(c3, rw.next());
@@ -267,6 +305,296 @@ public void testChangedPathFilterWithFollowFilter() throws Exception {
 	}
 
 	@Test
+	public void testChangedPathFilter_pathFilter_or_pathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(
+				tree(file("file1", blob("1")), file("file2", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file2", blob("2"))), c2);
+		RevCommit c4 = commit(
+				tree(file("file2", blob("2")), file("file3", blob("3"))), c3);
+		RevCommit c5 = commit(
+				tree(file("file2", blob("2")), file("file3", blob("3"))), c4);
+
+		branch(c5, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf1 = ChangedPathTreeFilter.create("file1");
+		ChangedPathTreeFilter pf2 = ChangedPathTreeFilter.create("file2");
+
+		TreeFilter tf = OrTreeFilter
+				.create(new ChangedPathTreeFilter[] { pf1, pf2 });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c5));
+		rw.setRevFilter(trf);
+		assertEquals(c3, rw.next());
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// c2 and c3 has either file1 or file2, c1 is not counted as
+		// ChangedPathFilter only applies to commits with 1 parent
+		assertEquals(2, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// c4 and c5 did not modify file1 or file2
+		assertEquals(2, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_pathFilter_or_pathFilter_or_pathFilter_listOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(
+				tree(file("file1", blob("1")), file("file2", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file2", blob("2"))), c2);
+		RevCommit c4 = commit(tree(file("file3", blob("3"))), c3);
+		RevCommit c5 = commit(tree(file("file3", blob("3"))), c4);
+
+		branch(c5, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf1 = ChangedPathTreeFilter.create("file1");
+		ChangedPathTreeFilter pf2 = ChangedPathTreeFilter.create("file2");
+		ChangedPathTreeFilter pf3 = ChangedPathTreeFilter.create("file3");
+
+		TreeFilter tf = OrTreeFilter
+				.create(new ChangedPathTreeFilter[] { pf1, pf2, pf3 });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c5));
+		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
+		assertEquals(c3, rw.next());
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// c2 and c3 has either modified file1 or file2 or file3, c1 is not
+		// counted as ChangedPathFilter only applies to commits with 1 parent
+		assertEquals(3, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// c5 does not modify either file1 or file2 or file3
+		assertEquals(1, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_pathFilter_or_nonPathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file2", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file2", blob("3"))), c2);
+		RevCommit c4 = commit(tree(file("file2", blob("3"))), c3);
+
+		branch(c4, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf = ChangedPathTreeFilter.create("file1");
+		TreeFilter npf = TreeFilter.ANY_DIFF;
+
+		TreeFilter tf = OrTreeFilter.create(new TreeFilter[] { pf, npf });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c4));
+		rw.setRevFilter(trf);
+		assertEquals(c3, rw.next());
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// c2 modified file1, c3 defaulted positive due to ANY_DIFF, c1 is not
+		// counted as ChangedPathFilter only applies to commits with 1 parent
+		assertEquals(2, trf.getChangedPathFilterTruePositive());
+
+		// c4 defaulted positive due to ANY_DIFF, but didn't no diff with its
+		// parent c3
+		assertEquals(1, trf.getChangedPathFilterFalsePositive());
+
+		// No negative due to the OrTreeFilter
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_nonPathFilter_or_nonPathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commitFile("file1", "1", "master");
+		RevCommit c2 = commitFile("file2", "2", "master");
+		RevCommit c3 = commitFile("file3", "3", "master");
+		RevCommit c4 = commitFile("file4", "4", "master");
+
+		enableAndWriteCommitGraph();
+
+		TreeFilter npf1 = TreeFilter.ANY_DIFF;
+		TreeFilter npf2 = TreeFilter.ANY_DIFF;
+
+		TreeFilter tf = OrTreeFilter.create(new TreeFilter[] { npf1, npf2 });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c4));
+		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
+		assertEquals(c3, rw.next());
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// No true positives since there's no pathFilter
+		assertEquals(0, trf.getChangedPathFilterTruePositive());
+
+		// No false positives since there's no pathFilter
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// No negative since there's no pathFilter
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_pathFilter_and_pathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file2", blob("2"))), c1);
+
+		branch(c2, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf1 = ChangedPathTreeFilter.create("file1");
+		ChangedPathTreeFilter pf2 = ChangedPathTreeFilter.create("file2");
+
+		TreeFilter atf = AndTreeFilter
+				.create(new ChangedPathTreeFilter[] { pf1, pf2 });
+		TreeRevFilter trf = new TreeRevFilter(rw, atf);
+
+		rw.markStart(rw.lookupCommit(c2));
+		rw.setRevFilter(trf);
+
+		assertNull(rw.next());
+
+		// c1 is not counted as ChangedPathFilter only applies to commits with 1
+		// parent
+		assertEquals(0, trf.getChangedPathFilterTruePositive());
+
+		// c2 has modified both file 1 and file2,
+		// however nothing is returned from TreeWalk since a TreeHead
+		// cannot be two paths at once
+		assertEquals(1, trf.getChangedPathFilterFalsePositive());
+
+		// No negatives
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_pathFilter_and_pathFilter_and_pathFilter_listOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file2", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file3", blob("3"))), c2);
+
+		branch(c3, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf1 = ChangedPathTreeFilter.create("file1");
+		ChangedPathTreeFilter pf2 = ChangedPathTreeFilter.create("file2");
+		ChangedPathTreeFilter pf3 = ChangedPathTreeFilter.create("file3");
+
+		TreeFilter tf = AndTreeFilter
+				.create(new ChangedPathTreeFilter[] { pf1, pf2, pf3 });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c3));
+		rw.setRevFilter(trf);
+		assertNull(rw.next());
+
+		// c1 is not counted as ChangedPathFilter only applies to commits with 1
+		// parent
+		assertEquals(0, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// c2 and c3 can not possibly have both file1, file2, and file3 as
+		// treeHead at once
+		assertEquals(2, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_pathFilter_and_nonPathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commit(tree(file("file1", blob("1"))));
+		RevCommit c2 = commit(tree(file("file1", blob("2"))), c1);
+		RevCommit c3 = commit(tree(file("file1", blob("2"))), c2);
+
+		branch(c3, "master");
+
+		enableAndWriteCommitGraph();
+
+		ChangedPathTreeFilter pf = ChangedPathTreeFilter.create("file1");
+		TreeFilter npf = TreeFilter.ANY_DIFF;
+
+		TreeFilter tf = AndTreeFilter.create(new TreeFilter[] { pf, npf });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c3));
+		rw.setRevFilter(trf);
+		assertEquals(c2, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// c2 modified file1 and c1 is not counted as ChangedPathFilter only
+		// applies to commits with 1 parent
+		assertEquals(1, trf.getChangedPathFilterTruePositive());
+
+		// No false positives
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// c3 did not modify file1
+		assertEquals(1, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
+	public void testChangedPathFilter_nonPathFilter_and_nonPathFilter_binaryOperation()
+			throws Exception {
+		RevCommit c1 = commitFile("file1", "1", "master");
+		commitFile("file1", "1", "master");
+		RevCommit c3 = commitFile("file3", "3", "master");
+		RevCommit c4 = commitFile("file4", "4", "master");
+
+		enableAndWriteCommitGraph();
+
+		TreeFilter npf1 = TreeFilter.ANY_DIFF;
+		TreeFilter npf2 = TreeFilter.ANY_DIFF;
+
+		TreeFilter tf = AndTreeFilter.create(new TreeFilter[] { npf1, npf2 });
+
+		TreeRevFilter trf = new TreeRevFilter(rw, tf);
+		rw.markStart(rw.lookupCommit(c4));
+		rw.setRevFilter(trf);
+		assertEquals(c4, rw.next());
+		assertEquals(c3, rw.next());
+		assertEquals(c1, rw.next());
+		assertNull(rw.next());
+
+		// No true positives since there's no path
+		assertEquals(0, trf.getChangedPathFilterTruePositive());
+
+		// No false positives since there's no path
+		assertEquals(0, trf.getChangedPathFilterFalsePositive());
+
+		// No negative since there's no path
+		assertEquals(0, trf.getChangedPathFilterNegative());
+	}
+
+	@Test
 	public void testWalkWithCommitMessageFilter() throws Exception {
 		RevCommit a = commit();
 		RevCommit b = commitBuilder().parent(a)
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilterTest.java
new file mode 100644
index 0000000..88f6b75
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilterTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2025, Google LLC
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.treewalk.filter;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.treewalk.filter.TreeFilter.MutableBoolean;
+import org.junit.Test;
+
+public class ChangedPathTreeFilterTest {
+
+    @Test
+    public void shouldTreeWalk_no_usingCpf() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        MutableBoolean cfpUsed = new MutableBoolean();
+
+        boolean result = f.shouldTreeWalk(FakeRevCommit.withCpfFor("c"), null,
+                cfpUsed);
+
+        assertFalse(result);
+        assertTrue(cfpUsed.get());
+    }
+
+    @Test
+    public void shouldTreeWalk_yes_usingCpf() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        MutableBoolean cfpUsed = new MutableBoolean();
+
+        boolean result = f.shouldTreeWalk(FakeRevCommit.withCpfFor("a/b"), null,
+                cfpUsed);
+
+        assertTrue(result);
+        assertTrue(cfpUsed.get());
+    }
+
+    @Test
+    public void shouldTreeWalk_yes_noCpf() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        MutableBoolean cfpUsed = new MutableBoolean();
+
+        boolean result = f.shouldTreeWalk(FakeRevCommit.noCpf(), null,
+                cfpUsed);
+
+        assertTrue(result);
+        assertFalse(cfpUsed.get());
+    }
+
+    @Test
+    public void shouldTreeWalk_no_usingCpf_noReport() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        boolean result = f.shouldTreeWalk(FakeRevCommit.withCpfFor("c"), null,
+                null);
+
+        assertFalse(result);
+    }
+
+    @Test
+    public void shouldTreeWalk_yes_usingCpf_noReport() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        boolean result = f.shouldTreeWalk(FakeRevCommit.withCpfFor("a/b"), null,
+                null);
+        assertTrue(result);
+    }
+
+    @Test
+    public void shouldTreeWalk_yes_noCpf_noReport() {
+        ChangedPathTreeFilter f = ChangedPathTreeFilter.create("a/b");
+        boolean result = f.shouldTreeWalk(FakeRevCommit.noCpf(), null,
+                null);
+
+        assertTrue(result);
+    }
+
+    private static class FakeRevCommit extends RevCommit {
+
+        static RevCommit withCpfFor(String... paths) {
+            return new FakeRevCommit(
+                    ChangedPathFilter.fromPaths(Arrays.stream(paths)
+                            .map(str -> ByteBuffer.wrap(str.getBytes(UTF_8)))
+                            .collect(Collectors.toSet())));
+        }
+
+        static RevCommit noCpf() {
+            return new FakeRevCommit(null);
+        }
+
+        private final ChangedPathFilter cpf;
+
+        /**
+         * Create a new commit reference.
+         *
+         * @param cpf
+         *            changedPathFilter
+         */
+        protected FakeRevCommit(ChangedPathFilter cpf) {
+            super(ObjectId.zeroId());
+            this.cpf = cpf;
+        }
+
+        @Override
+        public ChangedPathFilter getChangedPathFilter(RevWalk rw) {
+            return cpf;
+        }
+    }
+}
\ No newline at end of file
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index a4ce490..e0b049c 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: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Export-Package: org.eclipse.jgit.awtui;version="7.2.1"
-Import-Package: org.eclipse.jgit.errors;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.lib;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.nls;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revplot;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.revwalk;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.transport;version="[7.2.1,7.3.0)",
- org.eclipse.jgit.util;version="[7.2.1,7.3.0)"
+Export-Package: org.eclipse.jgit.awtui;version="7.3.0"
+Import-Package: org.eclipse.jgit.errors;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.lib;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.nls;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revplot;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.revwalk;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.transport;version="[7.3.0,7.4.0)",
+ org.eclipse.jgit.util;version="[7.3.0,7.4.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index e668fc2..66617ca 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index d378b2d..3d8d2a1 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index d4e346c..5f851ec 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 7.2.1.qualifier
+Bundle-Version: 7.3.0.qualifier
 Bundle-Localization: OSGI-INF/l10n/plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Service-Component: OSGI-INF/org.eclipse.jgit.internal.util.CleanupService.xml
 Eclipse-ExtensibleAPI: true
-Export-Package: org.eclipse.jgit.annotations;version="7.2.1",
- org.eclipse.jgit.api;version="7.2.1";
+Export-Package: org.eclipse.jgit.annotations;version="7.3.0",
+ org.eclipse.jgit.api;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.notes,
    org.eclipse.jgit.dircache,
@@ -25,21 +25,21 @@
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.blame,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="7.2.1";
+ org.eclipse.jgit.api.errors;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="7.2.1";
+ org.eclipse.jgit.attributes;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.blame;version="7.2.1";
+ org.eclipse.jgit.blame;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.blame.cache,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter",
- org.eclipse.jgit.blame.cache;version="7.2.1";
+ org.eclipse.jgit.blame.cache;version="7.3.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.diff;version="7.2.1";
+ org.eclipse.jgit.diff;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.patch,
@@ -47,55 +47,55 @@
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="7.2.1";
+ org.eclipse.jgit.dircache;version="7.3.0";
   uses:="org.eclipse.jgit.events,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.errors;version="7.2.1";
+ org.eclipse.jgit.errors;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.events;version="7.2.1";
+ org.eclipse.jgit.events;version="7.3.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="7.2.1",
- org.eclipse.jgit.gitrepo;version="7.2.1";
+ org.eclipse.jgit.fnmatch;version="7.3.0",
+ org.eclipse.jgit.gitrepo;version="7.3.0";
   uses:="org.xml.sax.helpers,
    org.eclipse.jgit.api,
    org.eclipse.jgit.api.errors,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="7.2.1";
+ org.eclipse.jgit.gitrepo.internal;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.ignore;version="7.2.1",
- org.eclipse.jgit.ignore.internal;version="7.2.1";
+ org.eclipse.jgit.ignore;version="7.3.0",
+ org.eclipse.jgit.ignore.internal;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="7.2.1";
+ org.eclipse.jgit.internal;version="7.3.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.diff;version="7.2.1";
+ org.eclipse.jgit.internal.diff;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.diffmergetool;version="7.2.1";
+ org.eclipse.jgit.internal.diffmergetool;version="7.3.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.pgm,
    org.eclipse.egit.ui",
- org.eclipse.jgit.internal.fsck;version="7.2.1";
+ org.eclipse.jgit.internal.fsck;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.revwalk;version="7.2.1";
+ org.eclipse.jgit.internal.revwalk;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.commitgraph;version="7.2.1";
+ org.eclipse.jgit.internal.storage.commitgraph;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.dfs;version="7.2.1";
+ org.eclipse.jgit.internal.storage.dfs;version="7.3.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.server,
    org.eclipse.jgit.http.test,
    org.eclipse.jgit.lfs.test",
- org.eclipse.jgit.internal.storage.file;version="7.2.1";
+ org.eclipse.jgit.internal.storage.file;version="7.3.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -104,37 +104,37 @@
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.internal.storage.io;version="7.2.1";
+ org.eclipse.jgit.internal.storage.io;version="7.3.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.memory;version="7.2.1";
+ org.eclipse.jgit.internal.storage.memory;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.midx;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.internal.storage.pack;version="7.2.1";
+ org.eclipse.jgit.internal.storage.midx;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.internal.storage.pack;version="7.3.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="7.2.1";
+ org.eclipse.jgit.internal.storage.reftable;version="7.3.0";
   x-friends:="org.eclipse.jgit.http.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.submodule;version="7.2.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.connectivity;version="7.2.1";
+ org.eclipse.jgit.internal.submodule;version="7.3.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.connectivity;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.http;version="7.2.1";
+ org.eclipse.jgit.internal.transport.http;version="7.3.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="7.2.1";
+ org.eclipse.jgit.internal.transport.parser;version="7.3.0";
   x-friends:="org.eclipse.jgit.http.server,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="7.2.1";
+ org.eclipse.jgit.internal.transport.ssh;version="7.3.0";
   x-friends:="org.eclipse.jgit.ssh.apache,
    org.eclipse.jgit.ssh.jsch,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.util;version="7.2.1";
+ org.eclipse.jgit.internal.util;version="7.3.0";
   x-friends:="org.eclipse.jgit.junit",
- org.eclipse.jgit.lib;version="7.2.1";
+ org.eclipse.jgit.lib;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.sha1,
    org.eclipse.jgit.dircache,
@@ -149,12 +149,12 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.lib.internal;version="7.2.1";
+ org.eclipse.jgit.lib.internal;version="7.3.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.pgm,
    org.eclipse.egit.ui",
- org.eclipse.jgit.logging;version="7.2.1",
- org.eclipse.jgit.merge;version="7.2.1";
+ org.eclipse.jgit.logging;version="7.3.0",
+ org.eclipse.jgit.merge;version="7.3.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -163,42 +163,42 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.api,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.nls;version="7.2.1",
- org.eclipse.jgit.notes;version="7.2.1";
+ org.eclipse.jgit.nls;version="7.3.0",
+ org.eclipse.jgit.notes;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="7.2.1";
+ org.eclipse.jgit.patch;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="7.2.1";
+ org.eclipse.jgit.revplot;version="7.3.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.revwalk;version="7.2.1";
+ org.eclipse.jgit.revwalk;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.internal.storage.commitgraph",
- org.eclipse.jgit.revwalk.filter;version="7.2.1";
+ org.eclipse.jgit.revwalk.filter;version="7.3.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="7.2.1";
+ org.eclipse.jgit.storage.file;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="7.2.1";
+ org.eclipse.jgit.storage.pack;version="7.3.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="7.2.1";
+ org.eclipse.jgit.submodule;version="7.3.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.transport;version="7.2.1";
+ org.eclipse.jgit.transport;version="7.3.0";
   uses:="javax.crypto,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.util.io,
@@ -211,21 +211,21 @@
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.storage.pack,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.transport.http;version="7.2.1";
+ org.eclipse.jgit.transport.http;version="7.3.0";
   uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="7.2.1";
+ org.eclipse.jgit.transport.resolver;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.treewalk;version="7.2.1";
+ org.eclipse.jgit.treewalk;version="7.3.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util",
- org.eclipse.jgit.treewalk.filter;version="7.2.1";
+ org.eclipse.jgit.treewalk.filter;version="7.3.0";
   uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="7.2.1";
+ org.eclipse.jgit.util;version="7.3.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.revwalk,
@@ -238,12 +238,12 @@
    org.eclipse.jgit.treewalk,
    javax.net.ssl,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.util.io;version="7.2.1";
+ org.eclipse.jgit.util.io;version="7.3.0";
   uses:="org.eclipse.jgit.attributes,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util.sha1;version="7.2.1",
- org.eclipse.jgit.util.time;version="7.2.1"
+ org.eclipse.jgit.util.sha1;version="7.3.0",
+ org.eclipse.jgit.util.time;version="7.3.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  javax.crypto,
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index 48005f5..a9e669b 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: 7.2.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="7.2.1.qualifier";roots="."
+Bundle-Version: 7.3.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="7.3.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 0836381..c65a440 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>7.2.1-SNAPSHOT</version>
+    <version>7.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
index 27270a1..bbec0fd 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -496,6 +496,7 @@
 logLargerFiletimeDiff={}: inconsistent duration from file timestamps on {}, {}: diff = {} > {} (last good value). Aborting measurement.
 logSmallerFiletime={}: got smaller file timestamp on {}, {}: {} < {}. Aborting measurement at resolution {}.
 logXDGConfigHomeInvalid=Environment variable XDG_CONFIG_HOME contains an invalid path {}
+logXDGCacheHomeInvalid=Environment variable XDG_CACHE_HOME contains an invalid path {}
 looseObjectHandleIsStale=loose-object {0} file handle is stale. retry {1} of {2}
 maxCountMustBeNonNegative=max count must be >= 0
 mergeConflictOnNonNoteEntries=Merge conflict on non-note entries: base = {0}, ours = {1}, theirs = {2}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
index 555e351..2a8d34e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
@@ -110,10 +110,10 @@ public Iterable<RevCommit> call() throws GitAPIException, NoHeadException {
 		}
 		if (!filters.isEmpty()) {
 			if (filters.size() == 1) {
-				filters.add(TreeFilter.ANY_DIFF);
+				walk.setTreeFilter(filters.get(0));
+			} else {
+				walk.setTreeFilter(AndTreeFilter.create(filters));
 			}
-			walk.setTreeFilter(AndTreeFilter.create(filters));
-
 		}
 		if (skip > -1 && maxCount > -1)
 			walk.setRevFilter(AndRevFilter.create(SkipRevFilter.create(skip),
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java
index 2d499ca..979c8ce 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java
@@ -652,19 +652,6 @@ public boolean next() throws IOException {
 			if (n == null)
 				return done();
 			stats.candidatesVisited += 1;
-			if (blameCache != null && useCache) {
-				List<CacheRegion> cachedBlame = blameCache.get(repository,
-						n.sourceCommit, n.sourcePath.getPath());
-				if (cachedBlame != null) {
-					BlameRegionMerger rb = new BlameRegionMerger(repository,
-							revPool, cachedBlame);
-					Candidate fullyBlamed = rb.mergeCandidate(n);
-					if (fullyBlamed != null) {
-						stats.cacheHit = true;
-						return result(fullyBlamed);
-					}
-				}
-			}
 
 			int pCnt = n.getParentCount();
 			if (pCnt == 1) {
@@ -769,6 +756,27 @@ private void push(Candidate toInsert) {
 		}
 	}
 
+	@Nullable
+	private Candidate blameFromCache(Candidate n) throws IOException {
+		if (blameCache == null || !useCache) {
+			return null;
+		}
+
+		List<CacheRegion> cachedBlame = blameCache.get(repository,
+				n.sourceCommit, n.sourcePath.getPath());
+		if (cachedBlame == null) {
+			return null;
+		}
+		BlameRegionMerger rb = new BlameRegionMerger(repository, revPool,
+				cachedBlame);
+		Candidate fullyBlamed = rb.mergeCandidate(n);
+		if (fullyBlamed == null) {
+			return null;
+		}
+		stats.cacheHit = true;
+		return fullyBlamed;
+	}
+
 	private boolean processOne(Candidate n) throws IOException {
 		RevCommit parent = n.getParent(0);
 		if (parent == null)
@@ -791,12 +799,17 @@ private boolean processOne(Candidate n) throws IOException {
 		if (0 == r.getOldId().prefixCompare(n.sourceBlob)) {
 			// A 100% rename without any content change can also
 			// skip directly to the parent.
+			Candidate cached = blameFromCache(n);
+			if (cached != null) {
+				return result(cached);
+			}
 			n.sourceCommit = parent;
 			n.sourcePath = PathFilter.create(r.getOldPath());
 			push(n);
 			return false;
 		}
 
+
 		Candidate next = n.create(getRepository(), parent,
 				PathFilter.create(r.getOldPath()));
 		next.sourceBlob = r.getOldId().toObjectId();
@@ -833,6 +846,11 @@ private boolean split(Candidate parent, Candidate source)
 			return false;
 		}
 
+		Candidate cached = blameFromCache(source);
+		if (cached != null) {
+			return result(cached);
+		}
+
 		parent.takeBlame(editList, source);
 		if (parent.regionList != null)
 			push(parent);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
index 48f6b7e..5e2746c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameResult.java
@@ -79,7 +79,6 @@ public static BlameResult create(BlameGenerator gen) throws IOException {
 
 	BlameResult(BlameGenerator bg, String path, RawText text) {
 		generator = bg;
-		generator.setUseCache(false);
 		resultPath = path;
 		resultContents = text;
 
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 bf252f9..bbdadc1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -526,6 +526,8 @@ public static JGitText get() {
 	/***/ public String logLargerFiletimeDiff;
 	/***/ public String logSmallerFiletime;
 	/***/ public String logXDGConfigHomeInvalid;
+
+	/***/ public String logXDGCacheHomeInvalid;
 	/***/ public String looseObjectHandleIsStale;
 	/***/ public String maxCountMustBeNonNegative;
 	/***/ public String mergeConflictOnNonNoteEntries;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
index e9782e2..b9e9e66 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileReftableDatabase.java
@@ -24,7 +24,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
@@ -73,7 +72,7 @@ public class FileReftableDatabase extends RefDatabase {
 
 	private final FileReftableStack reftableStack;
 
-	private final AtomicBoolean autoRefresh;
+	private volatile boolean autoRefresh;
 
 	FileReftableDatabase(FileRepository repo) throws IOException {
 		this(repo, new File(new File(repo.getCommonDirectory(), Constants.REFTABLE),
@@ -82,9 +81,9 @@ public class FileReftableDatabase extends RefDatabase {
 
 	FileReftableDatabase(FileRepository repo, File refstackName) throws IOException {
 		this.fileRepository = repo;
-		this.autoRefresh = new AtomicBoolean(repo.getConfig().getBoolean(
+		this.autoRefresh = repo.getConfig().getBoolean(
 				ConfigConstants.CONFIG_REFTABLE_SECTION,
-				ConfigConstants.CONFIG_KEY_AUTOREFRESH, false));
+				ConfigConstants.CONFIG_KEY_AUTOREFRESH, false);
 		this.reftableStack = new FileReftableStack(refstackName,
 				new File(fileRepository.getCommonDirectory(), Constants.REFTABLE),
 			() -> fileRepository.fireEvent(new RefsChangedEvent()),
@@ -242,7 +241,7 @@ public Ref peel(Ref ref) throws IOException {
 	 *            date.
 	 */
 	public void setAutoRefresh(boolean autoRefresh) {
-		this.autoRefresh.set(autoRefresh);
+		this.autoRefresh = autoRefresh;
 	}
 
 	/**
@@ -252,11 +251,11 @@ public void setAutoRefresh(boolean autoRefresh) {
 	 *         date.
 	 */
 	public boolean isAutoRefresh() {
-		return autoRefresh.get();
+		return autoRefresh;
 	}
 
 	private void autoRefresh() {
-		if (autoRefresh.get()) {
+		if (autoRefresh) {
 			refresh();
 		}
 	}
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 05bd970..c08a92e 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
@@ -104,6 +104,7 @@
 import org.eclipse.jgit.util.FileUtils;
 import org.eclipse.jgit.util.GitTimeParser;
 import org.eclipse.jgit.util.StringUtils;
+import org.eclipse.jgit.util.SystemReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -182,7 +183,7 @@ public static void setExecutor(ExecutorService e) {
 	 * prune() to inspect only those reflog entries which have been added since
 	 * last repack().
 	 */
-	private long lastRepackTime;
+	private Instant lastRepackTime;
 
 	/**
 	 * Whether gc should do automatic housekeeping
@@ -805,7 +806,7 @@ private static boolean equals(Ref r1, Ref r2) {
 	public Collection<Pack> repack() throws IOException {
 		Collection<Pack> toBeDeleted = repo.getObjectDatabase().getPacks();
 
-		long time = System.currentTimeMillis();
+		Instant time = SystemReader.getInstance().now();
 		Collection<Ref> refsBefore = getAllRefs();
 
 		Set<ObjectId> allHeadsAndTags = new HashSet<>();
@@ -821,7 +822,7 @@ public Collection<Pack> repack() throws IOException {
 
 		for (Ref ref : refsBefore) {
 			checkCancelled();
-			nonHeads.addAll(listRefLogObjects(ref, 0));
+			nonHeads.addAll(listRefLogObjects(ref, Instant.EPOCH));
 			if (ref.isSymbolic() || ref.getObjectId() == null) {
 				continue;
 			}
@@ -1151,12 +1152,13 @@ private void deleteTempPacksIdx() {
 	 * @param ref
 	 *            the ref which log should be inspected
 	 * @param minTime
-	 *            only reflog entries not older then this time are processed
+	 *            only reflog entries equal or younger than this time are
+	 *            processed
 	 * @return the {@link ObjectId}s contained in the reflog
 	 * @throws IOException
 	 *             if an IO error occurred
 	 */
-	private Set<ObjectId> listRefLogObjects(Ref ref, long minTime) throws IOException {
+	private Set<ObjectId> listRefLogObjects(Ref ref, Instant minTime) throws IOException {
 		ReflogReader reflogReader = repo.getRefDatabase().getReflogReader(ref);
 		List<ReflogEntry> rlEntries = reflogReader
 				.getReverseEntries();
@@ -1164,8 +1166,9 @@ private Set<ObjectId> listRefLogObjects(Ref ref, long minTime) throws IOExceptio
 			return Collections.emptySet();
 		Set<ObjectId> ret = new HashSet<>();
 		for (ReflogEntry e : rlEntries) {
-			if (e.getWho().getWhen().getTime() < minTime)
+			if (e.getWho().getWhenAsInstant().isBefore(minTime)) {
 				break;
+			}
 			ObjectId newId = e.getNewId();
 			if (newId != null && !ObjectId.zeroId().equals(newId))
 				ret.add(newId);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java
index c70f2e4..0ddfa57 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java
@@ -524,8 +524,8 @@ static class LogEntry extends Entry {
 
 			this.oldId = oldId;
 			this.newId = newId;
-			this.timeSecs = who.getWhen().getTime() / 1000L;
-			this.tz = (short) who.getTimeZoneOffset();
+			this.timeSecs = who.getWhenAsInstant().getEpochSecond();
+			this.tz = (short) (who.getZoneOffset().getTotalSeconds() / 60);
 			this.name = who.getName().getBytes(UTF_8);
 			this.email = who.getEmailAddress().getBytes(UTF_8);
 			this.msg = message.getBytes(UTF_8);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java
index 3c4bc75..7e5f4eb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java
@@ -12,6 +12,7 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.time.Instant;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.List;
@@ -28,20 +29,26 @@
  * to shadow any lower reftable that may have the reference present.
  * <p>
  * By default all log entries within the range defined by
- * {@link #setReflogExpireMinUpdateIndex(long)} and {@link #setReflogExpireMaxUpdateIndex(long)} are
- * copied, even if no references in the output file match the log records.
- * Callers may truncate the log to a more recent time horizon with
- * {@link #setReflogExpireOldestReflogTimeMillis(long)}, or disable the log altogether with
- * {@code setOldestReflogTimeMillis(Long.MAX_VALUE)}.
+ * {@link #setReflogExpireMinUpdateIndex(long)} and
+ * {@link #setReflogExpireMaxUpdateIndex(long)} are copied, even if no
+ * references in the output file match the log records. Callers may truncate the
+ * log to a more recent time horizon with
+ * {@link #setReflogExpireOlderThan(Instant)}, or disable the log
+ * altogether with {@code setReflogExpireOldestReflogTime(Instant.MAX)}.
  */
 public class ReftableCompactor {
 	private final ReftableWriter writer;
+
 	private final ArrayDeque<ReftableReader> tables = new ArrayDeque<>();
 
 	private boolean includeDeletes;
+
 	private long reflogExpireMinUpdateIndex = 0;
+
 	private long reflogExpireMaxUpdateIndex = Long.MAX_VALUE;
-	private long reflogExpireOldestReflogTimeMillis;
+
+	private Instant reflogExpireOldestReflogTime = Instant.EPOCH;
+
 	private Stats stats;
 
 	/**
@@ -122,9 +129,29 @@ public ReftableCompactor setReflogExpireMaxUpdateIndex(long max) {
 	 *            entries that predate {@code timeMillis} will be discarded.
 	 *            Specified in Java standard milliseconds since the epoch.
 	 * @return {@code this}
+	 *
+	 * @deprecated Use {@link #setReflogExpireOlderThan(Instant)} instead
 	 */
-	public ReftableCompactor setReflogExpireOldestReflogTimeMillis(long timeMillis) {
-		reflogExpireOldestReflogTimeMillis = timeMillis;
+	@Deprecated(since="7.3")
+	public ReftableCompactor setReflogExpireOldestReflogTimeMillis(
+			long timeMillis) {
+		return setReflogExpireOlderThan(timeMillis == Long.MAX_VALUE
+				? Instant.MAX
+				: Instant.ofEpochMilli(timeMillis));
+	}
+
+	/**
+	 * Set oldest reflog time to preserve.
+	 *
+	 * @param cutTime
+	 *            oldest log time to preserve. Entries whose timestamps are
+	 *            {@code >= cutTime} will be copied into the output file. Log
+	 *            entries that predate {@code cutTime} will be discarded.
+	 * @return {@code this}
+	 */
+	public ReftableCompactor setReflogExpireOlderThan(
+			Instant cutTime) {
+		reflogExpireOldestReflogTime = cutTime;
 		return this;
 	}
 
@@ -182,14 +209,15 @@ private void mergeRefs(MergedReftable mr) throws IOException {
 	}
 
 	private void mergeLogs(MergedReftable mr) throws IOException {
-		if (reflogExpireOldestReflogTimeMillis == Long.MAX_VALUE) {
+		if (reflogExpireOldestReflogTime == Instant.MAX) {
 			return;
 		}
 
 		try (LogCursor lc = mr.allLogs()) {
 			while (lc.next()) {
 				long updateIndex = lc.getUpdateIndex();
-				if (updateIndex > reflogExpireMaxUpdateIndex || updateIndex < reflogExpireMinUpdateIndex) {
+				if (updateIndex > reflogExpireMaxUpdateIndex
+						|| updateIndex < reflogExpireMinUpdateIndex) {
 					continue;
 				}
 
@@ -203,14 +231,9 @@ private void mergeLogs(MergedReftable mr) throws IOException {
 				}
 
 				PersonIdent who = log.getWho();
-				if (who.getWhen().getTime() >= reflogExpireOldestReflogTimeMillis) {
-					writer.writeLog(
-							refName,
-							updateIndex,
-							who,
-							log.getOldId(),
-							log.getNewId(),
-							log.getComment());
+				if (who.getWhenAsInstant().compareTo(reflogExpireOldestReflogTime) >= 0) {
+					writer.writeLog(refName, updateIndex, who, log.getOldId(),
+							log.getNewId(), log.getComment());
 				}
 			}
 		}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
index 997f4ed..9de8392 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java
@@ -345,6 +345,15 @@ public final class Constants {
 	public static final String XDG_CONFIG_HOME = "XDG_CONFIG_HOME";
 
 	/**
+	 * The key of the XDG_CACHE_HOME directory defined in the
+	 * <a href="https://wiki.archlinux.org/index.php/XDG_Base_Directory">
+	 * XDG Base Directory specification</a>.
+	 *
+	 * @since 7.3
+	 */
+	public static final String XDG_CACHE_HOME = "XDG_CACHE_HOME";
+
+	/**
 	 * The environment variable that limits how close to the root of the file
 	 * systems JGit will traverse when looking for a repository root.
 	 */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
index 35ef51f..12e6c4e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FollowFilter.java
@@ -18,7 +18,7 @@
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.treewalk.TreeWalk;
-import org.eclipse.jgit.treewalk.filter.PathFilter;
+import org.eclipse.jgit.treewalk.filter.ChangedPathTreeFilter;
 import org.eclipse.jgit.treewalk.filter.TreeFilter;
 
 /**
@@ -56,39 +56,44 @@ public class FollowFilter extends TreeFilter {
 	 * @since 3.0
 	 */
 	public static FollowFilter create(String path, DiffConfig cfg) {
-		return new FollowFilter(PathFilter.create(path), cfg);
+		return new FollowFilter(ChangedPathTreeFilter.create(path), cfg);
 	}
 
-	private final PathFilter path;
+	private final ChangedPathTreeFilter path;
 	final DiffConfig cfg;
 
 	private RenameCallback renameCallback;
 
-	FollowFilter(PathFilter path, DiffConfig cfg) {
+	FollowFilter(ChangedPathTreeFilter path, DiffConfig cfg) {
 		this.path = path;
 		this.cfg = cfg;
 	}
 
-	/** @return the path this filter matches. */
 	/**
 	 * Get the path this filter matches.
 	 *
 	 * @return the path this filter matches.
 	 */
 	public String getPath() {
-		return path.getPath();
+		return path.getPaths().get(0);
 	}
 
 	@Override
 	public boolean include(TreeWalk walker)
 			throws MissingObjectException, IncorrectObjectTypeException,
 			IOException {
-		return path.include(walker) && ANY_DIFF.include(walker);
+		return path.include(walker);
+	}
+
+	@Override
+	public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+			MutableBoolean cpfUsed) {
+		return path.shouldTreeWalk(c, rw, cpfUsed);
 	}
 
 	@Override
 	public boolean shouldBeRecursive() {
-		return path.shouldBeRecursive() || ANY_DIFF.shouldBeRecursive();
+		return path.shouldBeRecursive();
 	}
 
 	@Override
@@ -105,9 +110,7 @@ public TreeFilter clone() {
 	@SuppressWarnings("nls")
 	@Override
 	public String toString() {
-		return "(FOLLOW(" + path.toString() + ")" //
-				+ " AND " //
-				+ ANY_DIFF.toString() + ")";
+		return "(FOLLOW(" + path.toString() + "))";
 	}
 
 	/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
index 99943b7..e9a3e72 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/TreeRevFilter.java
@@ -12,15 +12,11 @@
 
 import java.io.IOException;
 import java.util.List;
-import java.util.Optional;
-import java.util.Set;
 
-import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
 import org.eclipse.jgit.diff.DiffConfig;
 import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.diff.DiffEntry.ChangeType;
 import org.eclipse.jgit.diff.RenameDetector;
-import org.eclipse.jgit.errors.CorruptObjectException;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.StopWalkException;
@@ -28,6 +24,7 @@
 import org.eclipse.jgit.revwalk.filter.RevFilter;
 import org.eclipse.jgit.treewalk.TreeWalk;
 import org.eclipse.jgit.treewalk.filter.TreeFilter;
+import org.eclipse.jgit.treewalk.filter.TreeFilter.MutableBoolean;
 
 /**
  * Filter applying a {@link org.eclipse.jgit.treewalk.filter.TreeFilter} against
@@ -50,6 +47,8 @@ public class TreeRevFilter extends RevFilter {
 
 	private final TreeWalk pathFilter;
 
+	private final MutableBoolean changedPathFilterUsed = new MutableBoolean();
+
 	private long changedPathFilterTruePositive = 0;
 
 	private long changedPathFilterFalsePositive = 0;
@@ -126,24 +125,15 @@ public boolean include(RevWalk walker, RevCommit c)
 		}
 		trees[nParents] = c.getTree();
 		tw.reset(trees);
+		changedPathFilterUsed.reset();
 
 		if (nParents == 1) {
 			// We have exactly one parent. This is a very common case.
 			//
 			int chgs = 0, adds = 0;
-			boolean changedPathFilterUsed = false;
-			boolean mustCalculateChgs = true;
-			ChangedPathFilter cpf = c.getChangedPathFilter(walker);
-			if (cpf != null) {
-				Optional<Set<byte[]>> paths = pathFilter.getFilter()
-						.getPathsBestEffort();
-				if (paths.isPresent()) {
-					changedPathFilterUsed = true;
-					if (paths.get().stream().noneMatch(cpf::maybeContains)) {
-						mustCalculateChgs = false;
-					}
-				}
-			}
+			TreeFilter tf = pathFilter.getFilter();
+			boolean mustCalculateChgs = tf.shouldTreeWalk(c, walker,
+					changedPathFilterUsed);
 			if (mustCalculateChgs) {
 				while (tw.next()) {
 					chgs++;
@@ -153,7 +143,7 @@ public boolean include(RevWalk walker, RevCommit c)
 						break; // no point in looking at this further.
 					}
 				}
-				if (changedPathFilterUsed) {
+				if (changedPathFilterUsed.get()) {
 					if (chgs > 0) {
 						changedPathFilterTruePositive++;
 					} else {
@@ -161,7 +151,7 @@ public boolean include(RevWalk walker, RevCommit c)
 					}
 				}
 			} else {
-				if (changedPathFilterUsed) {
+				if (changedPathFilterUsed.get()) {
 					changedPathFilterNegative++;
 				}
 			}
@@ -315,9 +305,7 @@ public long getChangedPathFilterNegative() {
 	}
 
 	private void updateFollowFilter(ObjectId[] trees, DiffConfig cfg,
-			RevCommit commit)
-			throws MissingObjectException, IncorrectObjectTypeException,
-			CorruptObjectException, IOException {
+			RevCommit commit) throws IOException {
 		TreeWalk tw = pathFilter;
 		FollowFilter oldFilter = (FollowFilter) tw.getFilter();
 		tw.setFilter(TreeFilter.ANY_DIFF);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/AndTreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/AndTreeFilter.java
index c6804da..b35dbeb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/AndTreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/AndTreeFilter.java
@@ -12,11 +12,14 @@
 package org.eclipse.jgit.treewalk.filter;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collection;
 
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.TreeWalk;
 
 /**
@@ -100,6 +103,13 @@ public boolean include(TreeWalk walker)
 		}
 
 		@Override
+		public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+				MutableBoolean cpfUsed) {
+			return a.shouldTreeWalk(c, rw, cpfUsed)
+					&& b.shouldTreeWalk(c, rw, cpfUsed);
+		}
+
+		@Override
 		public int matchFilter(TreeWalk walker)
 				throws MissingObjectException, IncorrectObjectTypeException,
 				IOException {
@@ -174,6 +184,13 @@ public boolean shouldBeRecursive() {
 		}
 
 		@Override
+		public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+				MutableBoolean cpfUsed) {
+			return Arrays.stream(subfilters)
+					.allMatch(t -> t.shouldTreeWalk(c, rw, cpfUsed));
+		}
+
+		@Override
 		public TreeFilter clone() {
 			final TreeFilter[] s = new TreeFilter[subfilters.length];
 			for (int i = 0; i < s.length; i++)
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilter.java
new file mode 100644
index 0000000..2400e12
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ChangedPathTreeFilter.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2025, 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
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.treewalk.filter;
+
+import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.treewalk.TreeWalk;
+import org.eclipse.jgit.util.StringUtils;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Filter tree entries that modified the contents of particular file paths.
+ * <p>
+ * Equivalent to AndTreeFilter(PathFilter, AnyDiffFilter). This filter uses
+ * {@link org.eclipse.jgit.internal.storage.commitgraph.ChangedPathFilter}
+ * (bloom filters) when available to discard commits without diffing their
+ * trees.
+ *
+ * @since 7.3
+ */
+public class ChangedPathTreeFilter extends TreeFilter {
+
+	private TreeFilter pathFilter;
+
+	private List<String> paths;
+
+	private List<byte[]> rawPaths;
+
+	/**
+	 * Create a TreeFilter for trees modifying one or more user supplied paths.
+	 * <p>
+	 * Path strings are relative to the root of the repository. If the user's
+	 * input should be assumed relative to a subdirectory of the repository the
+	 * caller must prepend the subdirectory's path prior to creating the filter.
+	 * <p>
+	 * Path strings use '/' to delimit directories on all platforms.
+	 * <p>
+	 * Paths may appear in any order within the collection. Sorting may be done
+	 * internally when the group is constructed if doing so will improve path
+	 * matching performance.
+	 *
+	 * @param paths
+	 *            the paths to test against. Must have at least one entry.
+	 * @return a new filter for the list of paths supplied.
+	 */
+	public static ChangedPathTreeFilter create(String... paths) {
+		return new ChangedPathTreeFilter(paths);
+	}
+
+	private ChangedPathTreeFilter(String... paths) {
+		List<String> filtered = Arrays.stream(paths)
+				.map(s -> StringUtils.trim(s, '/'))
+				.collect(Collectors.toList());
+
+		if (filtered.size() == 0)
+			throw new IllegalArgumentException(
+					JGitText.get().atLeastOnePathIsRequired);
+
+		if (filtered.stream().anyMatch(s -> s.isEmpty() || s.isBlank())) {
+			throw new IllegalArgumentException(
+					JGitText.get().emptyPathNotPermitted);
+		}
+
+		this.paths = filtered;
+		this.rawPaths = this.paths.stream().map(Constants::encode)
+				.collect(Collectors.toList());
+		if (filtered.size() == 1) {
+			this.pathFilter = PathFilter.create(paths[0]);
+		} else {
+			this.pathFilter = OrTreeFilter.create(Arrays.stream(paths)
+					.map(PathFilter::create).collect(Collectors.toList()));
+		}
+	}
+
+	@Override
+	public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+			MutableBoolean cpfUsed) {
+		ChangedPathFilter cpf = c.getChangedPathFilter(rw);
+		if (cpf == null) {
+			return true;
+		}
+		if (cpfUsed != null) {
+			cpfUsed.orValue(true);
+		}
+		// return true if at least one path might exist in cpf
+		return rawPaths.stream().anyMatch(cpf::maybeContains);
+	}
+
+	@Override
+	public boolean include(TreeWalk walker) throws IOException {
+		return pathFilter.include(walker) && ANY_DIFF.include(walker);
+	}
+
+	@Override
+	public boolean shouldBeRecursive() {
+		return pathFilter.shouldBeRecursive() || ANY_DIFF.shouldBeRecursive();
+	}
+
+	@Override
+	public ChangedPathTreeFilter clone() {
+		return this;
+	}
+
+	/**
+	 * Get the paths this filter matches.
+	 *
+	 * @return the paths this filter matches.
+	 */
+	public List<String> getPaths() {
+		return paths;
+	}
+
+	@Override
+	public String toString() {
+		return "(CHANGED_PATH(" + pathFilter.toString() + ")" //
+				+ " AND " //
+				+ ANY_DIFF.toString() + ")";
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/OrTreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/OrTreeFilter.java
index 3c18a9f..ce23825 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/OrTreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/OrTreeFilter.java
@@ -12,11 +12,14 @@
 package org.eclipse.jgit.treewalk.filter;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collection;
 
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.TreeWalk;
 
 /**
@@ -116,6 +119,13 @@ public int matchFilter(TreeWalk walker)
 		}
 
 		@Override
+		public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+				MutableBoolean cpfUsed) {
+			return a.shouldTreeWalk(c, rw, cpfUsed)
+					|| b.shouldTreeWalk(c, rw, cpfUsed);
+		}
+
+		@Override
 		public boolean shouldBeRecursive() {
 			return a.shouldBeRecursive() || b.shouldBeRecursive();
 		}
@@ -164,6 +174,13 @@ public int matchFilter(TreeWalk walker)
 		}
 
 		@Override
+		public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+				MutableBoolean cpfUsed) {
+			return Arrays.stream(subfilters)
+					.anyMatch(t -> t.shouldTreeWalk(c, rw, cpfUsed));
+		}
+
+		@Override
 		public boolean shouldBeRecursive() {
 			for (TreeFilter f : subfilters)
 				if (f.shouldBeRecursive())
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
index a9066dc..8159843 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/TreeFilter.java
@@ -14,9 +14,12 @@
 import java.util.Optional;
 import java.util.Set;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.dircache.DirCacheIterator;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.TreeWalk;
 import org.eclipse.jgit.treewalk.WorkingTreeIterator;
 
@@ -210,14 +213,38 @@ public int matchFilter(TreeWalk walker) throws MissingObjectException,
 	public abstract boolean shouldBeRecursive();
 
 	/**
-	 * If this filter checks that at least one of the paths in a set has been
+	 * Return true if the tree entries within this commit require
+	 * {@link #include(TreeWalk)} to correctly determine whether they are
+	 * interesting to report.
+	 * <p>
+	 * Otherwise, all tree entries within this commit are UNINTERESTING for this
+	 * tree filter.
+	 *
+	 * @param c
+	 *            the commit being considered by the TreeFilter.
+	 * @param rw
+	 *            the RevWalk used in retrieving relevant commit data.
+	 * @param cpfUsed
+	 *            if not null, it reports if the changedPathFilter was used in
+	 *            this method
+	 * @return True if the tree entries within c require
+	 *         {@link #include(TreeWalk)}.
+	 * @since 7.3
+	 */
+	public boolean shouldTreeWalk(RevCommit c, RevWalk rw,
+			@Nullable MutableBoolean cpfUsed) {
+		return true;
+	}
+
+	/**
+	 * If this filter checks that a specific set of paths have all been
 	 * modified, returns that set of paths to be checked against a changed path
 	 * filter. Otherwise, returns empty.
 	 *
 	 * @return a set of paths, or empty
-	 *
-	 * @since 6.7
+	 * @deprecated use {@code shouldTreeWalk} instead.
 	 */
+	@Deprecated(since = "7.3")
 	public Optional<Set<byte[]>> getPathsBestEffort() {
 		return Optional.empty();
 	}
@@ -242,4 +269,33 @@ public String toString() {
 		}
 		return n.replace('$', '.');
 	}
+
+	/**
+	 * Mutable wrapper to return a boolean in a function parameter.
+	 *
+	 * @since 7.3
+	 */
+	public static class MutableBoolean {
+		private boolean value;
+
+		/**
+		 * Return the boolean value.
+		 *
+		 * @return The state of the internal boolean value.
+		 */
+		public boolean get() {
+			return value;
+		}
+
+		void orValue(boolean v) {
+			value = value || v;
+		}
+
+		/**
+		 * Reset the boolean value.
+		 */
+		public void reset() {
+			value = false;
+		}
+	}
 }
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 22b82b3..0b7c620 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
@@ -492,6 +492,36 @@ public Path getXdgConfigDirectory(FS fileSystem) {
 	}
 
 	/**
+	 * Gets the directory denoted by environment variable XDG_CACHE_HOME. If
+	 * the variable is not set or empty, return a path for
+	 * {@code $HOME/.cache}.
+	 *
+	 * @param fileSystem
+	 *            {@link FS} to get the user's home directory
+	 * @return a {@link Path} denoting the directory, which may exist or not, or
+	 *         {@code null} if the environment variable is not set and there is
+	 *         no home directory, or the path is invalid.
+	 * @since 7.3
+	 */
+	public Path getXdgCacheDirectory(FS fileSystem) {
+		String cacheHomePath = getenv(Constants.XDG_CACHE_HOME);
+		if (StringUtils.isEmptyOrNull(cacheHomePath)) {
+			File home = fileSystem.userHome();
+			if (home == null) {
+				return null;
+			}
+			cacheHomePath = new File(home, ".cache").getAbsolutePath(); //$NON-NLS-1$
+		}
+		try {
+			return Paths.get(cacheHomePath);
+		} catch (InvalidPathException e) {
+			LOG.error(JGitText.get().logXDGCacheHomeInvalid, cacheHomePath,
+					e);
+		}
+		return null;
+	}
+
+	/**
 	 * Update config and its parents if they seem modified
 	 *
 	 * @param config
diff --git a/pom.xml b/pom.xml
index cc0d47f..66806cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>org.eclipse.jgit-parent</artifactId>
   <packaging>pom</packaging>
-  <version>7.2.1-SNAPSHOT</version>
+  <version>7.3.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
@@ -33,7 +33,7 @@
   </description>
 
   <scm>
-    <url>https://eclipse.gerrithub.io/plugins/gitiles/eclipse-jgit/jgit</url>
+    <url>https://eclipse.gerrithub.io/admin/repos/eclipse-jgit/jgit</url>
     <connection>scm:git:https://eclipse.gerrithub.io/eclipse-jgit/jgit</connection>
   </scm>
 
@@ -118,7 +118,7 @@
 
     <project.build.outputTimestamp>${commit.time.iso}</project.build.outputTimestamp>
 
-    <jgit-last-release-version>7.1.0.202411261347-r</jgit-last-release-version>
+    <jgit-last-release-version>7.2.0.202503040940-r</jgit-last-release-version>
     <ant-version>1.10.15</ant-version>
     <apache-sshd-version>2.15.0</apache-sshd-version>
     <jsch-version>0.1.55</jsch-version>
@@ -130,7 +130,7 @@
     <commons-compress-version>1.27.1</commons-compress-version>
     <osgi-core-version>6.0.0</osgi-core-version>
     <servlet-api-version>6.1.0</servlet-api-version>
-    <jetty-version>12.0.16</jetty-version>
+    <jetty-version>12.0.18</jetty-version>
     <japicmp-version>0.23.1</japicmp-version>
     <httpclient-version>4.5.14</httpclient-version>
     <httpcore-version>4.4.16</httpcore-version>
@@ -138,7 +138,7 @@
     <maven-javadoc-plugin-version>3.11.2</maven-javadoc-plugin-version>
     <gson-version>2.12.1</gson-version>
     <bouncycastle-version>1.80</bouncycastle-version>
-    <spotbugs-maven-plugin-version>4.9.1.0</spotbugs-maven-plugin-version>
+    <spotbugs-maven-plugin-version>4.9.2.0</spotbugs-maven-plugin-version>
     <maven-project-info-reports-plugin-version>3.8.0</maven-project-info-reports-plugin-version>
     <maven-jxr-plugin-version>3.6.0</maven-jxr-plugin-version>
     <maven-surefire-plugin-version>3.5.2</maven-surefire-plugin-version>
@@ -147,8 +147,8 @@
     <plexus-compiler-version>2.13.0</plexus-compiler-version>
     <hamcrest-version>2.2</hamcrest-version>
     <assertj-version>3.27.3</assertj-version>
-    <jna-version>5.16.0</jna-version>
-    <byte-buddy-version>1.17.1</byte-buddy-version>
+    <jna-version>5.17.0</jna-version>
+    <byte-buddy-version>1.17.3</byte-buddy-version>
 
     <!-- Properties to enable jacoco code coverage analysis -->
     <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
@@ -1007,7 +1007,7 @@
       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
-        <version>5.15.2</version>
+        <version>5.16.1</version>
       </dependency>
 
       <dependency>