Merge branch 'stable-5.6'

* stable-5.6:
  Hooks: avoid problems with backslashes in paths

Change-Id: Ia9e4aca11de5a465b60898a37441a17133f6355b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/WORKSPACE b/WORKSPACE
index a3463a5..5fd2ed9 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -203,48 +203,48 @@
     sha1 = "3edcfe49d2c6053a70a2a47e4e1c2f94998a49cf",
 )
 
-JETTY_VER = "9.4.22.v20191022"
+JETTY_VER = "9.4.24.v20191120"
 
 maven_jar(
     name = "jetty-servlet",
     artifact = "org.eclipse.jetty:jetty-servlet:" + JETTY_VER,
-    sha1 = "62285df7713347586d55f3f93a96299d1b721714",
-    src_sha1 = "fe2d1f1dc7a82ced141df935a0db5b5cadd76f4a",
+    sha1 = "ca1803fde51b795c0a8346ca8bc6277d9d04d01d",
+    src_sha1 = "8781c162df92d27456d4370df943f6a5234f32c4",
 )
 
 maven_jar(
     name = "jetty-security",
     artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VER,
-    sha1 = "f7b3b61f09b34a69fd6df4f267f3907813c9224c",
-    src_sha1 = "5a1b33c5dde638ce9dbc2e07f0cff862e5029195",
+    sha1 = "9fa640d36c088cf55843900043d28aef830ade4d",
+    src_sha1 = "40128e3547b43f09e176fb0738672f483c477119",
 )
 
 maven_jar(
     name = "jetty-server",
     artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VER,
-    sha1 = "f30b9b2cd6f63b073b63c2ac5e7e7f17b63b0908",
-    src_sha1 = "97fbdf8eade55f05d7e99c16fd90d394b248f717",
+    sha1 = "7885cc3d5d7701a444acada7ab97f89846514875",
+    src_sha1 = "709650068c26029303ab3776d1e5ed6a66e0b065",
 )
 
 maven_jar(
     name = "jetty-http",
     artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VER,
-    sha1 = "f96f87fc73c2b586ff40689cbce6ae62d70f18fa",
-    src_sha1 = "0e51a30d0e3309acfc6ee548b90ff55165fbfa5c",
+    sha1 = "d3f0b0fb016ef8d35ffb199d928ffbcbfa121c86",
+    src_sha1 = "b29d870576e3edff354af0dae86c60d5956cd643",
 )
 
 maven_jar(
     name = "jetty-io",
     artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VER,
-    sha1 = "0f08e62908f94d1238be386302236a42204d566a",
-    src_sha1 = "d31c00383f13c95404ef606f57513569868acd6b",
+    sha1 = "dcb6d4d505ef74898e3a64a38c40195c01e97119",
+    src_sha1 = "863a6c575eadb626b50cda13a6484609a9449934",
 )
 
 maven_jar(
     name = "jetty-util",
     artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VER,
-    sha1 = "ffe0bf81a2a4a534b79dd981f971c7346a563095",
-    src_sha1 = "42f8abc84a6c4c9d2441d2dfcc60591e3296dc26",
+    sha1 = "3095acb088f4ff9e3fd9aedf98db73e3c18ea849",
+    src_sha1 = "f503199317d9df74062d722db4a7af8cf5e59322",
 )
 
 BOUNCYCASTLE_VER = "1.64"
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 8b25269..a8e76b2 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.ant.tasks;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.12,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index 0551d02..0a0b1b3 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 f599b80..a0d2fe1 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)"
+  org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)"
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="5.6.1",
- org.eclipse.jgit.ant.tasks;version="5.6.1";
+Export-Package: org.eclipse.jgit.ant;version="5.7.0",
+ org.eclipse.jgit.ant.tasks;version="5.7.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 7ae660a..21bd52f 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 0a30910..a53c7d0 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -48,7 +48,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 71e5e2a..93fee3c 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -13,17 +13,17 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="5.6.1";
+Export-Package: org.eclipse.jgit.archive;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.api,
    org.apache.commons.compress.archivers,
    org.osgi.framework",
- org.eclipse.jgit.archive.internal;version="5.6.1";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="5.7.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 facf524..65250a7 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 4624634..907420c 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.benchmarks/.classpath b/org.eclipse.jgit.benchmarks/.classpath
index 438d155..8b345f2 100644
--- a/org.eclipse.jgit.benchmarks/.classpath
+++ b/org.eclipse.jgit.benchmarks/.classpath
@@ -19,17 +19,6 @@
 	<classpathentry kind="src" path=".apt_generated">
 		<attributes>
 			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="ignore_optional_problems" value="true"/>
-			<attribute name="m2e-apt" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="ignore_optional_problems" value="true"/>
-			<attribute name="m2e-apt" value="true"/>
 		</attributes>
 	</classpathentry>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/org.eclipse.jgit.benchmarks/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit.benchmarks/.settings/org.eclipse.jdt.core.prefs
index b276e89..74bb483 100644
--- a/org.eclipse.jgit.benchmarks/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jgit.benchmarks/.settings/org.eclipse.jdt.core.prefs
@@ -28,6 +28,7 @@
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -86,6 +87,7 @@
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index b0208aa..f74df6d 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -47,7 +47,7 @@
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.eclipse.jgit</groupId>
-  <version>5.6.1-SNAPSHOT</version>
+  <version>5.7.0-SNAPSHOT</version>
   <artifactId>org.eclipse.jgit.benchmarks</artifactId>
   <packaging>jar</packaging>
 
@@ -124,7 +124,7 @@
           <dependency>
             <groupId>com.google.errorprone</groupId>
             <artifactId>error_prone_core</artifactId>
-            <version>2.3.3</version>
+            <version>2.3.4</version>
           </dependency>
         </dependencies>
       </plugin>
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index 35f1e13..53a46fc 100644
--- a/org.eclipse.jgit.coverage/pom.xml
+++ b/org.eclipse.jgit.coverage/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -18,88 +18,88 @@
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.archive</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.apache</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.server</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ui</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index f91a230..f19031f 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
@@ -23,11 +23,11 @@
  org.apache.http.impl.client;version="[4.3.0,5.0.0)",
  org.apache.http.impl.conn;version="[4.3.0,5.0.0)",
  org.apache.http.params;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="5.6.1";
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="5.7.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 5efd836..6d11830 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index b1cf0f7..4c94d21 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -48,7 +48,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 d0a9ee2..0e86099 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.http.server;version="5.6.1",
- org.eclipse.jgit.http.server.glue;version="5.6.1";
+Export-Package: org.eclipse.jgit.http.server;version="5.7.0",
+ org.eclipse.jgit.http.server.glue;version="5.7.0";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="5.6.1";
+ org.eclipse.jgit.http.server.resolver;version="5.7.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -18,14 +18,14 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: javax.servlet;version="[2.5.0,3.2.0)",
  javax.servlet.http;version="[2.5.0,3.2.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.transport.parser;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)"
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.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 11e46e3..d85db5e 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index 902a22b..e4ce533 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -52,7 +52,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
index e9462ee..06970a7 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
@@ -96,6 +96,8 @@ public class GitFilter extends MetaFilter {
 
 	private ReceivePackFactory<HttpServletRequest> receivePackFactory = new DefaultReceivePackFactory();
 
+	private ReceivePackErrorHandler receivePackErrorHandler;
+
 	private final List<Filter> uploadPackFilters = new LinkedList<>();
 
 	private final List<Filter> receivePackFilters = new LinkedList<>();
@@ -190,6 +192,17 @@ public void setReceivePackFactory(ReceivePackFactory<HttpServletRequest> f) {
 	}
 
 	/**
+	 * Set a custom error handler for git-receive-pack.
+	 *
+	 * @param h
+	 *            A custom error handler for git-receive-pack.
+	 */
+	public void setReceivePackErrorHandler(ReceivePackErrorHandler h) {
+		assertNotInitialized();
+		this.receivePackErrorHandler = h;
+	}
+
+	/**
 	 * Add receive-pack filter
 	 *
 	 * @param filter
@@ -233,7 +246,7 @@ public void init(FilterConfig filterConfig) throws ServletException {
 			b = b.through(new ReceivePackServlet.Factory(receivePackFactory));
 			for (Filter f : receivePackFilters)
 				b = b.through(f);
-			b.with(new ReceivePackServlet());
+			b.with(new ReceivePackServlet(receivePackErrorHandler));
 		}
 
 		ServletBinder refs = serve("*/" + Constants.INFO_REFS);
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java
index 5e09d01..5077e83 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java
@@ -48,8 +48,6 @@
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 import static org.eclipse.jgit.http.server.ServletUtils.ATTRIBUTE_HANDLER;
 import static org.eclipse.jgit.transport.GitProtocolConstants.CAPABILITY_SIDE_BAND_64K;
-import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_SIDE_BAND;
-import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_SIDE_BAND_64K;
 import static org.eclipse.jgit.transport.SideBandOutputStream.CH_ERROR;
 import static org.eclipse.jgit.transport.SideBandOutputStream.SMALL_BUF;
 
@@ -64,14 +62,12 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.eclipse.jgit.internal.transport.parser.FirstCommand;
-import org.eclipse.jgit.internal.transport.parser.FirstWant;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.transport.PacketLineIn;
 import org.eclipse.jgit.transport.PacketLineOut;
 import org.eclipse.jgit.transport.ReceivePack;
 import org.eclipse.jgit.transport.RequestNotYetReadException;
 import org.eclipse.jgit.transport.SideBandOutputStream;
-import org.eclipse.jgit.transport.UploadPack;
 
 /**
  * Utility functions for handling the Git-over-HTTP protocol.
@@ -220,44 +216,15 @@ private static void sendInfoRefsError(HttpServletRequest req,
 
 	private static void sendUploadPackError(HttpServletRequest req,
 			HttpServletResponse res, String textForGit) throws IOException {
+		// Do not use sideband. Sideband is acceptable only while packfile is
+		// being sent. Other places, like acknowledgement section, do not
+		// support sideband. Use an error packet.
 		ByteArrayOutputStream buf = new ByteArrayOutputStream(128);
 		PacketLineOut pckOut = new PacketLineOut(buf);
-
-		boolean sideband;
-		UploadPack up = (UploadPack) req.getAttribute(ATTRIBUTE_HANDLER);
-		if (up != null) {
-			try {
-				sideband = up.isSideBand();
-			} catch (RequestNotYetReadException e) {
-				sideband = isUploadPackSideBand(req);
-			}
-		} else
-			sideband = isUploadPackSideBand(req);
-
-		if (sideband)
-			writeSideBand(buf, textForGit);
-		else
-			writePacket(pckOut, textForGit);
+		writePacket(pckOut, textForGit);
 		send(req, res, UPLOAD_PACK_RESULT_TYPE, buf.toByteArray());
 	}
 
-	private static boolean isUploadPackSideBand(HttpServletRequest req) {
-		try {
-			// The client may be in a state where they have sent the sideband
-			// capability and are expecting a response in the sideband, but we might
-			// not have an UploadPack, or it might not have read any of the request.
-			// So, cheat and read the first line.
-			String line = new PacketLineIn(req.getInputStream()).readString();
-			FirstWant parsed = FirstWant.fromLine(line);
-			return (parsed.getCapabilities().contains(OPTION_SIDE_BAND)
-					|| parsed.getCapabilities().contains(OPTION_SIDE_BAND_64K));
-		} catch (IOException e) {
-			// Probably the connection is closed and a subsequent write will fail, but
-			// try it just in case.
-			return false;
-		}
-	}
-
 	private static void sendReceivePackError(HttpServletRequest req,
 			HttpServletResponse res, String textForGit) throws IOException {
 		ByteArrayOutputStream buf = new ByteArrayOutputStream(128);
@@ -308,7 +275,7 @@ private static void writeSideBand(OutputStream out, String textForGit)
 
 	private static void writePacket(PacketLineOut pckOut, String textForGit)
 			throws IOException {
-		pckOut.writeString("error: " + textForGit);
+		pckOut.writeString("ERR " + textForGit);
 	}
 
 	private static void send(HttpServletRequest req, HttpServletResponse res,
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
new file mode 100644
index 0000000..ee66cb1
--- /dev/null
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2019, Google LLC  and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.http.server;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jgit.transport.ReceivePack;
+import org.eclipse.jgit.transport.ServiceMayNotContinueException;
+
+/**
+ * Handle git-receive-pack errors.
+ *
+ * <p>
+ * This is an entry point for customizing an error handler for git-receive-pack.
+ * Right before calling {@link ReceivePack#receiveWithExceptionPropagation},
+ * JGit will call this handler if specified through {@link GitFilter}. The
+ * implementation of this handler is responsible for calling
+ * {@link ReceivePackRunnable} and handling exceptions for clients.
+ *
+ * <p>
+ * If a custom handler is not specified, JGit will use the default error
+ * handler.
+ *
+ * @since 5.6
+ */
+public interface ReceivePackErrorHandler {
+	/**
+	 * @param req
+	 *            The HTTP request
+	 * @param rsp
+	 *            The HTTP response
+	 * @param r
+	 *            A continuation that handles a git-receive-pack request.
+	 * @throws IOException
+	 */
+	void receive(HttpServletRequest req, HttpServletResponse rsp,
+			ReceivePackRunnable r) throws IOException;
+
+	/** Process a git-receive-pack request. */
+	public interface ReceivePackRunnable {
+		/**
+		 * See {@link ReceivePack#receiveWithExceptionPropagation}.
+		 *
+		 * @throws ServiceMayNotContinueException
+		 * @throws IOException
+		 */
+		void receive() throws ServiceMayNotContinueException, IOException;
+	}
+
+}
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
index aed3656..eb130d0 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
@@ -71,6 +71,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.CorruptObjectException;
 import org.eclipse.jgit.errors.PackProtocolException;
 import org.eclipse.jgit.errors.UnpackException;
@@ -161,6 +162,13 @@ public void destroy() {
 		}
 	}
 
+	@Nullable
+	private final ReceivePackErrorHandler handler;
+
+	ReceivePackServlet(@Nullable ReceivePackErrorHandler handler) {
+		this.handler = handler;
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public void doPost(final HttpServletRequest req,
@@ -178,34 +186,42 @@ public void flush() throws IOException {
 		};
 
 		ReceivePack rp = (ReceivePack) req.getAttribute(ATTRIBUTE_HANDLER);
-		try {
-			rp.setBiDirectionalPipe(false);
-			rsp.setContentType(RECEIVE_PACK_RESULT_TYPE);
+		rp.setBiDirectionalPipe(false);
+		rsp.setContentType(RECEIVE_PACK_RESULT_TYPE);
 
-			rp.receive(getInputStream(req), out, null);
-			out.close();
-		} catch (CorruptObjectException e ) {
-			// This should be already reported to the client.
-			getServletContext().log(MessageFormat.format(
-					HttpServerText.get().receivedCorruptObject,
-					e.getMessage(),
-					ServletUtils.identify(rp.getRepository())));
-			consumeRequestBody(req);
-			out.close();
+		if (handler != null) {
+			handler.receive(req, rsp, () -> {
+				rp.receiveWithExceptionPropagation(getInputStream(req), out,
+						null);
+				out.close();
+			});
+		} else {
+			try {
+				rp.receive(getInputStream(req), out, null);
+				out.close();
+			} catch (CorruptObjectException e ) {
+				// This should be already reported to the client.
+				getServletContext().log(MessageFormat.format(
+						HttpServerText.get().receivedCorruptObject,
+						e.getMessage(),
+						ServletUtils.identify(rp.getRepository())));
+				consumeRequestBody(req);
+				out.close();
 
-		} catch (UnpackException | PackProtocolException e) {
-			// This should be already reported to the client.
-			log(rp.getRepository(), e.getCause());
-			consumeRequestBody(req);
-			out.close();
+			} catch (UnpackException | PackProtocolException e) {
+				// This should be already reported to the client.
+				log(rp.getRepository(), e.getCause());
+				consumeRequestBody(req);
+				out.close();
 
-		} catch (Throwable e) {
-			log(rp.getRepository(), e);
-			if (!rsp.isCommitted()) {
-				rsp.reset();
-				sendError(req, rsp, SC_INTERNAL_SERVER_ERROR);
+			} catch (Throwable e) {
+				log(rp.getRepository(), e);
+				if (!rsp.isCommitted()) {
+					rsp.reset();
+					sendError(req, rsp, SC_INTERNAL_SERVER_ERROR);
+				}
+				return;
 			}
-			return;
 		}
 	}
 
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
index 54561e0..6baab5d 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
@@ -70,7 +70,9 @@
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import org.eclipse.jgit.annotations.Nullable;
+import org.eclipse.jgit.errors.PackProtocolException;
 import org.eclipse.jgit.http.server.UploadPackErrorHandler.UploadPackRunnable;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.transport.InternalHttpServerGlue;
@@ -212,7 +214,8 @@ public void flush() throws IOException {
 			rsp.setContentType(UPLOAD_PACK_RESULT_TYPE);
 
 			try {
-				up.upload(getInputStream(req), out, null);
+				up.uploadWithExceptionPropagation(getInputStream(req), out,
+						null);
 				out.close();
 			} catch (ServiceMayNotContinueException e) {
 				if (e.isOutput()) {
@@ -245,7 +248,9 @@ private void defaultUploadPackHandler(HttpServletRequest req,
 			log(up.getRepository(), e);
 			if (!rsp.isCommitted()) {
 				rsp.reset();
-				sendError(req, rsp, SC_INTERNAL_SERVER_ERROR);
+				String msg = e instanceof PackProtocolException ? e.getMessage()
+						: null;
+				sendError(req, rsp, SC_INTERNAL_SERVER_ERROR, msg);
 			}
 		}
 	}
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 2a740d4..d4ea158 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -28,25 +28,25 @@
  org.eclipse.jetty.util.log;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.4.5,10.0.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.http.server;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.http.server.glue;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.http.server.resolver;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.http.server;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.http.server.glue;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.http.server.resolver;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.hamcrest;version="[1.1.0,2.0.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.12,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index 1c5069c..94c9742 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -51,7 +51,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
index 99aa06b..b23fd28 100644
--- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
+++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
@@ -1214,7 +1214,7 @@ public void testFetch_RefsUnreadableOnUpload() throws Exception {
 						Collections.<ObjectId> emptySet());
 				fail("Successfully served ref with value " + c.getRef(master));
 			} catch (TransportException err) {
-				assertEquals("internal server error", err.getMessage());
+				assertEquals("Internal server error", err.getMessage());
 			}
 		} finally {
 			noRefServer.tearDown();
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index 3f8d93d..5c889f6 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -22,16 +22,16 @@
  org.eclipse.jetty.util.log;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.ssl;version="[9.4.5,10.0.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.http.server;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.http.server;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)",
  org.junit;version="[4.12,5.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="5.6.1";
+Export-Package: org.eclipse.jgit.junit.http;version="5.7.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.junit,
    javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
index 47641db..3d79cd9 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 440c5de..dbaa278 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 1ad0d75..44a0fb6 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -30,8 +30,8 @@
  org.apache.sshd.server.shell;version="[2.2.0,2.3.0)",
  org.apache.sshd.server.subsystem;version="[2.2.0,2.3.0)",
  org.apache.sshd.server.subsystem.sftp;version="[2.2.0,2.3.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="5.6.1"
+Export-Package: org.eclipse.jgit.junit.ssh;version="5.7.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 c078cdc..98c2db5 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 60f5b26..e81c02d 100644
--- a/org.eclipse.jgit.junit.ssh/pom.xml
+++ b/org.eclipse.jgit.junit.ssh/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 807a556..871e329 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,35 +3,35 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.merge;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="5.6.1",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.time;version="[5.6.1,5.7.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.merge;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="5.7.0",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.time;version="[5.7.0,5.8.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.rules;version="[4.12,5.0.0)",
  org.junit.runner;version="[4.12,5.0.0)",
  org.junit.runners;version="[4.12,5.0.0)",
  org.junit.runners.model;version="[4.12,5.0.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="5.6.1";
+Export-Package: org.eclipse.jgit.junit;version="5.7.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -44,4 +44,4 @@
    org.junit.runners.model,
    org.junit.runner,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.junit.time;version="5.6.1";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="5.7.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 3f88869..5fa88cb 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 8ce04e5..1385f30 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -52,7 +52,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 163ff4b..c4d3c90 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -28,24 +28,24 @@
  org.eclipse.jetty.util.log;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.4.5,10.0.0)",
- org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.server;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.server.fs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.test;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.server;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.test;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.rules;version="[4.12,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index acf88d8..a291e0f 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 e51e56b..90ebd90 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs.server;version="5.6.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="5.7.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="5.6.1";
+ org.eclipse.jgit.lfs.server.fs;version="5.7.0";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="5.6.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="5.6.1";
+ org.eclipse.jgit.lfs.server.internal;version="5.7.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="5.7.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -25,15 +25,15 @@
  javax.servlet.http;version="[3.1.0,4.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
  org.apache.http.client;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.slf4j;version="[1.7.0,2.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 b97d9e3..bac5ee2 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 0336332..a8c577a 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 3ce6084..e3fcf70 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,22 +3,22 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.runner;version="[4.12,5.0.0)",
  org.junit.runners;version="[4.12,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="5.6.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="5.7.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 8a559cc..778f7a8 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 453aad4..a1404f0 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,33 +3,33 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs;version="5.6.1",
- org.eclipse.jgit.lfs.errors;version="5.6.1",
- org.eclipse.jgit.lfs.internal;version="5.6.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="5.6.1"
+Export-Package: org.eclipse.jgit.lfs;version="5.7.0",
+ org.eclipse.jgit.lfs.errors;version="5.7.0",
+ org.eclipse.jgit.lfs.internal;version="5.7.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="5.7.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: com.google.gson;version="[2.8.2,3.0.0)",
  com.google.gson.stream;version="[2.8.2,3.0.0)",
  org.apache.http.impl.client;version="[4.2.6,5.0.0)",
  org.apache.http.impl.conn;version="[4.2.6,5.0.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.diff;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.hooks;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)"
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.diff;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.hooks;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index 8093dae..4dacb48 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index bf5b745..49daf42 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 fcabd07..7c51063 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="5.6.1.qualifier"
+      version="5.7.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 7ede04b..cc5f5ae 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 c51335b..17a732b 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="5.6.1.qualifier"
+      version="5.7.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="5.6.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="5.7.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 db347c6..66d7b30 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 1e1ec53..2b46472 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="5.6.1.qualifier"
+      version="5.7.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="5.6.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="5.7.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 34a4e95..479dcc0 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 7497521..bc8ff0b 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="5.6.1.qualifier"
+      version="5.7.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="5.6.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="5.7.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 58adaf5..8805bba 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 b6dd351..62df45e 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="5.6.1.qualifier"
+      version="5.7.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="5.6.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="5.6.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.ssh.apache" version="5.6.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="5.7.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="5.7.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.ssh.apache" version="5.7.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 2f70e48..a0906c5 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 672fbfb..77a6d1a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 283b5e8..caa0dcb 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="5.6.1.qualifier"
+      version="5.7.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="5.6.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="5.7.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 6774fcf..5ab6059 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
@@ -63,7 +63,7 @@
     <dependency>
       <groupId>org.eclipse.jgit.feature</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>5.6.1-SNAPSHOT</version>
+      <version>5.7.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 03418de..41d251b 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="5.6.1.qualifier"
+      version="5.7.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="5.6.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="5.7.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 a6bcd4b..d7e8c61 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
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
index 7e790d2..ff1d81c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
@@ -2,4 +2,4 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: JGit Target Platform Bundle
 Bundle-SymbolicName: org.eclipse.jgit.target
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.target
index 4a0d80d..c5d3463 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.10" sequenceNumber="1575495623">
+<target name="jgit-4.10" sequenceNumber="1577055347">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.tpd
index e85e619..ea97f6a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.10.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.10" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/2018-12/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.target
index 3d3bb38..975ef77 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.11" sequenceNumber="1575495623">
+<target name="jgit-4.11" sequenceNumber="1577055347">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.tpd
index cd09465..349df83 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.11.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.11" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/2019-03/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.target
index 380636c..5d276c5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.12" sequenceNumber="1575495623">
+<target name="jgit-4.12" sequenceNumber="1577055347">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.tpd
index 8904b99..8d32437 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.12.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.12" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/2019-06/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.target
index e0fb342..d938753 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.13" sequenceNumber="1575495624">
+<target name="jgit-4.13" sequenceNumber="1577055345">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.tpd
index 1e5f36f..0603b40 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.13.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.13" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/2019-09/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.target
index f3b5965..09a3b18 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.14-staging" sequenceNumber="1575495626">
+<target name="jgit-4.14-staging" sequenceNumber="1577055348">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.tpd
index d58281b..bb6dcc7 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.14-staging.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.14-staging" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/staging/2019-12/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
index 0c82ed6..257b8ae 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.6" sequenceNumber="1575495636">
+<target name="jgit-4.6" sequenceNumber="1577055367">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
index f29a825..a62b26d 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.6" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/neon/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.target
index 1d7acec..daacb72 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.7" sequenceNumber="1575495628">
+<target name="jgit-4.7" sequenceNumber="1577055354">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.tpd
index 97a2b12..4a9e428 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.7.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.7" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/oxygen/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.target
index 8b6bd8c..624c2df 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.8" sequenceNumber="1575495623">
+<target name="jgit-4.8" sequenceNumber="1577055346">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.tpd
index 1fea5c1..ca672b7 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.8.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.8" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/photon/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.target
index 67c389b..2c30d8a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.target
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.9" sequenceNumber="1575495623">
+<target name="jgit-4.9" sequenceNumber="1577055339">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/>
-      <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/>
-      <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/>
+      <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/>
+      <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/>
+      <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.tpd
index af16548..c7a8321 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.9.tpd
@@ -1,6 +1,6 @@
 target "jgit-4.9" with source configurePhase
 
-include "projects/jetty-9.4.22.tpd"
+include "projects/jetty-9.4.24.tpd"
 include "orbit/R20191126223242-2019-12.tpd"
 
 location "http://download.eclipse.org/releases/2018-09/" {
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
index fdfb981..6f0a994 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
@@ -49,7 +49,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.target</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.22.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.22.tpd
deleted file mode 100644
index 562e017..0000000
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.22.tpd
+++ /dev/null
@@ -1,20 +0,0 @@
-target "jetty-9.4.22" with source configurePhase
-
-location jetty-9.4.22 "https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/" {
-	org.eclipse.jetty.client [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.client.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.continuation [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.continuation.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.http [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.http.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.io [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.io.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.security [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.security.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.server [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.server.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.servlet [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.servlet.source [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.util [9.4.22.v20191022,9.4.22.v20191022]
-	org.eclipse.jetty.util.source [9.4.22.v20191022,9.4.22.v20191022]
-}
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.24.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.24.tpd
new file mode 100644
index 0000000..7b2af02
--- /dev/null
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/projects/jetty-9.4.24.tpd
@@ -0,0 +1,20 @@
+target "jetty-9.4.24" with source configurePhase
+
+location jetty-9.4.24 "https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/" {
+	org.eclipse.jetty.client [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.client.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.continuation [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.continuation.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.http [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.http.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.io [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.io.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.security [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.security.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.server [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.server.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.servlet [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.servlet.source [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.util [9.4.24.v20191120,9.4.24.v20191120]
+	org.eclipse.jetty.util.source [9.4.24.v20191120,9.4.24.v20191120]
+}
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index b430086..6eeb617 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -49,7 +49,7 @@
 
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>jgit.tycho.parent</artifactId>
-  <version>5.6.1-SNAPSHOT</version>
+  <version>5.7.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 5339f2e..b48c1e5 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -3,28 +3,28 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm.test
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.diff;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="5.6.1",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.merge;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.pgm;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.pgm.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.pgm.opt;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)",
+Import-Package: org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.diff;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="5.7.0",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.merge;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.pgm;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.pgm.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.pgm.opt;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)",
  org.hamcrest.core;bundle-version="[1.1.0,2.0.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.rules;version="[4.12,5.0.0)",
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index b7a8094..b1473ab 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm.test/src/org/eclipse/jgit/lib/CLIRepositoryTestCase.java b/org.eclipse.jgit.pgm.test/src/org/eclipse/jgit/lib/CLIRepositoryTestCase.java
index befb7f6..1d9dca7 100644
--- a/org.eclipse.jgit.pgm.test/src/org/eclipse/jgit/lib/CLIRepositoryTestCase.java
+++ b/org.eclipse.jgit.pgm.test/src/org/eclipse/jgit/lib/CLIRepositoryTestCase.java
@@ -190,11 +190,12 @@ protected void deleteTrashFile(String name) throws IOException {
 	}
 
 	protected String cmdString(String... cmds) {
-		if (cmds.length == 0)
+		switch (cmds.length) {
+		case 0:
 			return "";
-		else if (cmds.length == 1)
+		case 1:
 			return "\"" + escapeJava(cmds[0]) + "\"";
-		else {
+		default:
 			StringBuilder sb = new StringBuilder(cmdString(cmds[0]));
 			for (int i=1; i<cmds.length; i++) {
 				sb.append(", ");
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index 484ec54..b280658 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
@@ -28,50 +28,50 @@
  org.eclipse.jetty.util.log;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.4.5,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.4.5,10.0.0)",
- org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.archive;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.awtui;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.blame;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.diff;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.gitrepo;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.ketch;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.io;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.server;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.server.fs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs.server.s3;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.merge;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.notes;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revplot;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.sshd;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.archive;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.awtui;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.blame;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.diff;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.gitrepo;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.ketch;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.io;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.server;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.merge;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.notes;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revplot;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.sshd;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.io;version="[5.7.0,5.8.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="5.6.1";
+Export-Package: org.eclipse.jgit.console;version="5.7.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="5.6.1";
+ org.eclipse.jgit.pgm;version="5.7.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.pgm.opt,
@@ -82,11 +82,11 @@
    org.eclipse.jgit.treewalk,
    javax.swing,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.pgm.debug;version="5.6.1";
+ org.eclipse.jgit.pgm.debug;version="5.7.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.pgm.internal;version="5.6.1";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="5.6.1";
+ org.eclipse.jgit.pgm.internal;version="5.7.0";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
+ org.eclipse.jgit.pgm.opt;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.kohsuke.args4j.spi,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 4b231dd..95f81a3 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index f4c0005..c460713 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
index 02f0543..f3e1fe3 100644
--- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
+++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
@@ -5,6 +5,8 @@
 #
 # default meta variable defined in the org.kohsuke.args4j.spi.StringOptionHandler
 VAL=VAL
+# default meta variable defined in the org.kohsuke.args4j.spi.ExplicitBooleanOptionHandler
+VALUE=VAL
 # default meta variable defined in the org.kohsuke.args4j.spi.StopOptionHandler
 ARGUMENTS=ARGUMENTS
 # default meta variable defined in the org.kohsuke.args4j.spi.OneArgumentOptionHandler
@@ -327,7 +329,9 @@
 usage_configSystem=use system-wide configuration in $(prefix)/etc/gitconfig
 usage_configureTheServiceInDaemonServicename=configure the service in daemon.servicename
 usage_convertRefStorage=Convert ref storage to reftable
+usage_convertRefStorageBackup=Create backup of old ref storage format
 usage_convertRefStorageFormat=Format to convert to (reftable or refdir)
+usage_convertRefStorageRefLogs=Write reflogs to reftable
 usage_createBranchAndCheckout=create branch and check out
 usage_deleteBranchEvenIfNotMerged=delete branch (even if not merged)
 usage_deleteFullyMergedBranch=delete fully merged branch
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
index f4f8d8f..9dd4eb5 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AmazonS3Client.java
@@ -86,7 +86,11 @@ protected final boolean requiresRepository() {
 	protected void run() throws Exception {
 		final AmazonS3 s3 = new AmazonS3(properties());
 
-		if ("get".equals(op)) { //$NON-NLS-1$
+		if (op == null) {
+			throw die(MessageFormat.format(CLIText.get().unsupportedOperation, op));
+		}
+		switch (op) {
+		case "get": //$NON-NLS-1$
 			final URLConnection c = s3.get(bucket, key);
 			int len = c.getContentLength();
 			try (InputStream in = c.getInputStream()) {
@@ -103,22 +107,25 @@ protected void run() throws Exception {
 				}
 				outs.flush();
 			}
-
-		} else if ("ls".equals(op) || "list".equals(op)) { //$NON-NLS-1$//$NON-NLS-2$
+			break;
+		case "ls": //$NON-NLS-1$
+		case "list": //$NON-NLS-1$
 			for (String k : s3.list(bucket, key))
 				outw.println(k);
-
-		} else if ("rm".equals(op) || "delete".equals(op)) { //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case "rm": //$NON-NLS-1$
+		case "delete": //$NON-NLS-1$
 			s3.delete(bucket, key);
-
-		} else if ("put".equals(op)) { //$NON-NLS-1$
+			break;
+		case "put": //$NON-NLS-1$
 			try (OutputStream os = s3.beginPut(bucket, key, null, null)) {
 				final byte[] tmp = new byte[2048];
 				int n;
 				while ((n = ins.read(tmp)) > 0)
 					os.write(tmp, 0, n);
 			}
-		} else {
+			break;
+		default:
 			throw die(MessageFormat.format(CLIText.get().unsupportedOperation, op));
 		}
 	}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
index 2fd689b..d5a23be 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/ConvertRefStorage.java
@@ -45,16 +45,25 @@
 
 import org.eclipse.jgit.internal.storage.file.FileRepository;
 import org.kohsuke.args4j.Option;
+import org.kohsuke.args4j.spi.ExplicitBooleanOptionHandler;
 
-@Command(common=true, usage="usage_convertRefStorage")
+@Command(common = true, usage = "usage_convertRefStorage")
 class ConvertRefStorage extends TextBuiltin {
 
-    @Option(name = "--format", usage = "usage_convertRefStorageFormat")
+	@Option(name = "--format", usage = "usage_convertRefStorageFormat")
 	private String format = "reftable"; //$NON-NLS-1$
 
-    /** {@inheritDoc} */
-    @Override
-    protected void run() throws Exception {
-        ((FileRepository) db).convertRefStorage(format, true, true);
-    }
+	@Option(name = "--backup", handler = ExplicitBooleanOptionHandler.class, aliases = {
+			"-b" }, usage = "usage_convertRefStorageBackup")
+	private boolean backup = true;
+
+	@Option(name = "--reflogs", handler = ExplicitBooleanOptionHandler.class, aliases = {
+			"-r" }, usage = "usage_convertRefStorageRefLogs")
+	private boolean writeLogs = true;
+
+	/** {@inheritDoc} */
+	@Override
+	protected void run() throws Exception {
+		((FileRepository) db).convertRefStorage(format, writeLogs, backup);
+	}
 }
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
index 58138fa..cdf9541 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Remote.java
@@ -93,33 +93,35 @@ protected void run() {
 				RemoteListCommand cmd = git.remoteList();
 				List<RemoteConfig> remotes = cmd.call();
 				print(remotes);
-			} else if ("add".equals(command)) { //$NON-NLS-1$
-				RemoteAddCommand cmd = git.remoteAdd();
-				cmd.setName(name);
-				cmd.setUri(new URIish(uri));
-				cmd.call();
-			} else if ("remove".equals(command) || "rm".equals(command)) { //$NON-NLS-1$ //$NON-NLS-2$
-				RemoteRemoveCommand cmd = git.remoteRemove();
-				cmd.setRemoteName(name);
-				cmd.call();
-			} else if ("set-url".equals(command)) { //$NON-NLS-1$
-				RemoteSetUrlCommand cmd = git.remoteSetUrl();
-				cmd.setRemoteName(name);
-				cmd.setRemoteUri(new URIish(uri));
-				cmd.setUriType(push ? UriType.PUSH : UriType.FETCH);
-				cmd.call();
-			} else if ("update".equals(command)) { //$NON-NLS-1$
-				// reuse fetch command for basic implementation of remote update
+				return;
+			}
+			switch (command) {
+			case "add": //$NON-NLS-1$
+				RemoteAddCommand add = git.remoteAdd();
+				add.setName(name);
+				add.setUri(new URIish(uri));
+				add.call();
+				break;
+			case "remove": //$NON-NLS-1$
+			case "rm": //$NON-NLS-1$
+				RemoteRemoveCommand rm = git.remoteRemove();
+				rm.setRemoteName(name);
+				rm.call();
+				break;
+			case "set-url": //$NON-NLS-1$
+				RemoteSetUrlCommand remoteSetUrl = git.remoteSetUrl();
+				remoteSetUrl.setRemoteName(name);
+				remoteSetUrl.setRemoteUri(new URIish(uri));
+				remoteSetUrl.setUriType(push ? UriType.PUSH : UriType.FETCH);
+				remoteSetUrl.call();
+				break;
+			case "update": //$NON-NLS-1$
 				Fetch fetch = new Fetch();
 				fetch.init(db, gitdir);
-
-				// redirect the output stream
 				StringWriter osw = new StringWriter();
 				fetch.outw = new ThrowingPrintWriter(osw);
-				// redirect the error stream
 				StringWriter esw = new StringWriter();
 				fetch.errw = new ThrowingPrintWriter(esw);
-
 				List<String> fetchArgs = new ArrayList<>();
 				if (verbose) {
 					fetchArgs.add("--verbose"); //$NON-NLS-1$
@@ -130,15 +132,13 @@ protected void run() {
 				if (name != null) {
 					fetchArgs.add(name);
 				}
-
 				fetch.execute(fetchArgs.toArray(new String[0]));
-
-				// flush the streams
 				fetch.outw.flush();
 				fetch.errw.flush();
 				outw.println(osw.toString());
 				errw.println(esw.toString());
-			} else {
+				break;
+			default:
 				throw new JGitInternalException(MessageFormat
 						.format(CLIText.get().unknownSubcommand, command));
 			}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildRefTree.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildRefTree.java
index 063600f..da58bbc 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildRefTree.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildRefTree.java
@@ -52,6 +52,7 @@
 import org.eclipse.jgit.internal.storage.reftree.RefTree;
 import org.eclipse.jgit.internal.storage.reftree.RefTreeDatabase;
 import org.eclipse.jgit.lib.CommitBuilder;
+import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectReader;
@@ -133,8 +134,11 @@ protected void run() throws Exception {
 
 			if (enable && !(db.getRefDatabase() instanceof RefTreeDatabase)) {
 				StoredConfig cfg = db.getConfig();
-				cfg.setInt("core", null, "repositoryformatversion", 1); //$NON-NLS-1$ //$NON-NLS-2$
-				cfg.setString("extensions", null, "refStorage", "reftree"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				cfg.setInt(ConfigConstants.CONFIG_CORE_SECTION, null,
+						ConfigConstants.CONFIG_KEY_REPO_FORMAT_VERSION, 1);
+				cfg.setString(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
+						ConfigConstants.CONFIG_KEY_REFSTORAGE,
+						ConfigConstants.CONFIG_REFSTORAGE_REFTREE);
 				cfg.save();
 				errw.println("Enabled reftree."); //$NON-NLS-1$
 				errw.flush();
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 b3a343e..8fd1756 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -15,15 +15,15 @@
  org.apache.sshd.common.session;version="[2.2.0,2.3.0)",
  org.apache.sshd.common.util.net;version="[2.2.0,2.3.0)",
  org.apache.sshd.common.util.security;version="[2.2.0,2.3.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit.ssh;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.ssh;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.sshd;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit.ssh;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.ssh;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.sshd;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.experimental.theories;version="[4.12,5.0.0)",
  org.junit.runner;version="[4.12,5.0.0)"
diff --git a/org.eclipse.jgit.ssh.apache.test/pom.xml b/org.eclipse.jgit.ssh.apache.test/pom.xml
index c65a1df..413daae 100644
--- a/org.eclipse.jgit.ssh.apache.test/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index 5f9490d..2ca1175 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.jgit.internal.transport.sshd;version="5.6.1";x-internal:=true;
+Export-Package: org.eclipse.jgit.internal.transport.sshd;version="5.7.0";x-internal:=true;
   uses:="org.apache.sshd.client,
    org.apache.sshd.client.auth,
    org.apache.sshd.client.auth.keyboard,
@@ -23,9 +23,9 @@
    org.apache.sshd.common.signature,
    org.apache.sshd.common.util.buffer,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.auth;version="5.6.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="5.6.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.transport.sshd;version="5.6.1";
+ org.eclipse.jgit.internal.transport.sshd.auth;version="5.7.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="5.7.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.transport.sshd;version="5.7.0";
   uses:="org.eclipse.jgit.transport,
    org.apache.sshd.client.config.hosts,
    org.apache.sshd.common.keyprovider,
@@ -75,12 +75,12 @@
  org.apache.sshd.common.util.net;version="[2.2.0,2.3.0)",
  org.apache.sshd.common.util.security;version="[2.2.0,2.3.0)",
  org.apache.sshd.server.auth;version="[2.2.0,2.3.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.fnmatch;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.fnmatch;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
  org.slf4j;version="[1.7.0,2.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 5ff8d33..56d4bcd 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index b780189..af0f0fd 100644
--- a/org.eclipse.jgit.ssh.apache/pom.xml
+++ b/org.eclipse.jgit.ssh.apache/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
index 79bd3fa..be5eaa4 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java
@@ -251,12 +251,13 @@ protected String resolveAvailableSignaturesProposal(
 				.getProperty(SshConstants.HOST_KEY_ALGORITHMS);
 		if (hostKeyAlgorithms != null && !hostKeyAlgorithms.isEmpty()) {
 			char first = hostKeyAlgorithms.charAt(0);
-			if (first == '+') {
+			switch (first) {
+			case '+':
 				// Additions make not much sense -- it's either in
 				// defaultSignatures already, or we have no implementation for
 				// it. No point in proposing it.
 				return String.join(",", defaultSignatures); //$NON-NLS-1$
-			} else if (first == '-') {
+			case '-':
 				// This takes wildcard patterns!
 				removeFromList(defaultSignatures,
 						SshConstants.HOST_KEY_ALGORITHMS,
@@ -269,7 +270,7 @@ protected String resolveAvailableSignaturesProposal(
 							hostKeyAlgorithms));
 				}
 				return String.join(",", defaultSignatures); //$NON-NLS-1$
-			} else {
+			default:
 				// Default is overridden -- only accept the ones for which we do
 				// have an implementation.
 				List<String> newNames = filteredList(defaultSignatures,
@@ -282,6 +283,7 @@ protected String resolveAvailableSignaturesProposal(
 				} else {
 					return String.join(",", newNames); //$NON-NLS-1$
 				}
+				break;
 			}
 		}
 		// No HostKeyAlgorithms; using default -- change order to put existing
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 8612e36..d8f6bcf 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -18,58 +18,58 @@
  org.apache.commons.compress.compressors.gzip;version="[1.15.0,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.15.0,2.0)",
  org.bouncycastle.util.encoders;version="[1.61.0,2.0.0)",
- org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.archive;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.awtui;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.blame;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.diff;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.events;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.fnmatch;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.gitrepo;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.hooks;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.ignore;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.ignore.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.fsck;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.io;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.internal.transport.parser;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit.ssh;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.junit.time;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lfs;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.merge;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.notes;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.patch;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.pgm;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.pgm.internal;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revplot;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.storage.pack;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.submodule;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util.sha1;version="[5.6.1,5.7.0)",
+ org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.archive;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.awtui;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.blame;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.diff;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.events;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.fnmatch;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.gitrepo;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.hooks;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.ignore;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.ignore.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.fsck;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.io;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit.ssh;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.junit.time;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lfs;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.merge;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.notes;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.patch;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.pgm;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.pgm.internal;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revplot;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.storage.pack;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.submodule;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util.sha1;version="[5.7.0,5.8.0)",
  org.junit;version="[4.12,5.0.0)",
  org.junit.experimental.theories;version="[4.12,5.0.0)",
  org.junit.rules;version="[4.12,5.0.0)",
@@ -84,4 +84,4 @@
  org.tukaani.xz;version="[1.6.0,2.0)"
 Require-Bundle: org.hamcrest.core;bundle-version="[1.1.0,2.0.0)",
  org.hamcrest.library;bundle-version="[1.1.0,2.0.0)"
-Export-Package: org.eclipse.jgit.transport.ssh;version="5.6.1";x-friends:="org.eclipse.jgit.ssh.apache.test"
+Export-Package: org.eclipse.jgit.transport.ssh;version="5.7.0";x-friends:="org.eclipse.jgit.ssh.apache.test"
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index e19312f..1bd4b27 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -52,7 +52,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
index cfc275a..6e0762f 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
@@ -169,12 +169,16 @@ public void testCollectionWithGarbage() throws Exception {
 		DfsPackFile garbage = null;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gc = pack;
-			} else if (d.getPackSource() == UNREACHABLE_GARBAGE) {
+				break;
+			case UNREACHABLE_GARBAGE:
 				garbage = pack;
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 
@@ -200,16 +204,20 @@ public void testCollectionWithGarbageAndGarbagePacksPurged()
 		boolean garbagePackFound = false;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gcPackFound = true;
 				assertTrue("has commit0", isObjectInPack(commit0, pack));
 				assertFalse("no commit1", isObjectInPack(commit1, pack));
-			} else if (d.getPackSource() == UNREACHABLE_GARBAGE) {
+				break;
+			case UNREACHABLE_GARBAGE:
 				garbagePackFound = true;
 				assertFalse("no commit0", isObjectInPack(commit0, pack));
 				assertTrue("has commit1", isObjectInPack(commit1, pack));
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 		assertTrue("gc pack found", gcPackFound);
@@ -240,16 +248,20 @@ public void testCollectionWithGarbageAndRereferencingGarbage()
 		boolean garbagePackFound = false;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gcPackFound = true;
 				assertTrue("has commit0", isObjectInPack(commit0, pack));
 				assertFalse("no commit1", isObjectInPack(commit1, pack));
-			} else if (d.getPackSource() == UNREACHABLE_GARBAGE) {
+				break;
+			case UNREACHABLE_GARBAGE:
 				garbagePackFound = true;
 				assertFalse("no commit0", isObjectInPack(commit0, pack));
 				assertTrue("has commit1", isObjectInPack(commit1, pack));
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 		assertTrue("gc pack found", gcPackFound);
@@ -448,12 +460,16 @@ public void testEstimateGcPackSizeWithAnExistingGcPack() throws Exception {
 		long inputPacksSize = 32;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gcPackFound = true;
-			} else if (d.getPackSource() == INSERT) {
+				break;
+			case INSERT:
 				insertPackFound = true;
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 			inputPacksSize += d.getFileSize(PACK) - 32;
 		}
@@ -512,12 +528,16 @@ public void testEstimateGcRestPackSizeWithAnExistingGcPack()
 		long inputPacksSize = 32;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC_REST) {
+			switch (d.getPackSource()) {
+			case GC_REST:
 				gcRestPackFound = true;
-			} else if (d.getPackSource() == INSERT) {
+				break;
+			case INSERT:
 				insertPackFound = true;
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 			inputPacksSize += d.getFileSize(PACK) - 32;
 		}
@@ -555,17 +575,22 @@ public void testEstimateGcPackSizesWithGcAndGcRestPacks() throws Exception {
 		long insertPackSize = 0;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gcPackFound = true;
 				gcPackSize = d.getFileSize(PACK);
-			} else if (d.getPackSource() == GC_REST) {
+				break;
+			case GC_REST:
 				gcRestPackFound = true;
 				gcRestPackSize = d.getFileSize(PACK);
-			} else if (d.getPackSource() == INSERT) {
+				break;
+			case INSERT:
 				insertPackFound = true;
 				insertPackSize = d.getFileSize(PACK);
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 		assertTrue(gcPackFound);
@@ -583,16 +608,20 @@ public void testEstimateGcPackSizesWithGcAndGcRestPacks() throws Exception {
 		gcRestPackFound = false;
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				gcPackFound = true;
 				assertEquals(gcPackSize + insertPackSize - 32,
 						pack.getPackDescription().getEstimatedPackSize());
-			} else if (d.getPackSource() == GC_REST) {
+				break;
+			case GC_REST:
 				gcRestPackFound = true;
 				assertEquals(gcRestPackSize + insertPackSize - 32,
 						pack.getPackDescription().getEstimatedPackSize());
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 		assertTrue(gcPackFound);
@@ -629,18 +658,22 @@ public void testEstimateUnreachableGarbagePackSize() throws Exception {
 		assertEquals(2, odb.getPacks().length);
 		for (DfsPackFile pack : odb.getPacks()) {
 			DfsPackDescription d = pack.getPackDescription();
-			if (d.getPackSource() == GC) {
+			switch (d.getPackSource()) {
+			case GC:
 				// Even though just commit0 will end up in GC pack, because
 				// there is no good way to know that up front, both the pack
 				// sizes are considered while computing the estimated size of GC
 				// pack.
 				assertEquals(packSize0 + packSize1 - 32,
 						d.getEstimatedPackSize());
-			} else if (d.getPackSource() == UNREACHABLE_GARBAGE) {
+				break;
+			case UNREACHABLE_GARBAGE:
 				// commit1 is moved to UNREACHABLE_GARBAGE pack.
 				assertEquals(packSize1, d.getEstimatedPackSize());
-			} else {
+				break;
+			default:
 				fail("unexpected " + d.getPackSource());
+				break;
 			}
 		}
 	}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java
index 89ac2fe..daf7b9f 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java
@@ -495,8 +495,7 @@ public void testIncludesInvalidGitmodules() throws Exception {
 			receive(rp, inBuf, outBuf);
 			fail("Expected UnpackException");
 		} catch (UnpackException failed) {
-			Throwable err = failed.getCause();
-			assertTrue(err instanceof IOException);
+			// Expected
 		}
 
 		final PacketLineIn r = asPacketLineIn(outBuf);
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index 02ca5f6..d382c9a 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: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.jgit.awtui;version="5.6.1"
-Import-Package: org.eclipse.jgit.errors;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.lib;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.nls;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revplot;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.transport;version="[5.6.1,5.7.0)",
- org.eclipse.jgit.util;version="[5.6.1,5.7.0)"
+Export-Package: org.eclipse.jgit.awtui;version="5.7.0"
+Import-Package: org.eclipse.jgit.errors;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.lib;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.nls;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revplot;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.transport;version="[5.7.0,5.8.0)",
+ org.eclipse.jgit.util;version="[5.7.0,5.8.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index 5b649f4..782f24d 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index 0f4d1c5..c4687aa 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -52,7 +52,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
index edf94cf..22409a3 100644
--- a/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
+++ b/org.eclipse.jgit.ui/src/org/eclipse/jgit/awtui/AwtCredentialsProvider.java
@@ -108,10 +108,10 @@ else if (i instanceof CredentialItem.InformationalMessage)
 	@Override
 	public boolean get(URIish uri, CredentialItem... items)
 			throws UnsupportedCredentialItem {
-		if (items.length == 0) {
+		switch (items.length) {
+		case 0:
 			return true;
-
-		} else if (items.length == 1) {
+		case 1:
 			final CredentialItem item = items[0];
 
 			if (item instanceof CredentialItem.InformationalMessage) {
@@ -141,8 +141,7 @@ public boolean get(URIish uri, CredentialItem... items)
 			} else {
 				return interactive(uri, items);
 			}
-
-		} else {
+		default:
 			return interactive(uri, items);
 		}
 	}
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
index 3242322..b7f6db0 100644
--- a/org.eclipse.jgit/.settings/.api_filters
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -1,133 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.jgit" version="2">
-    <resource path="META-INF/MANIFEST.MF" type="org.eclipse.jgit.transport.BaseReceivePack">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="305324134">
+    <resource path="src/org/eclipse/jgit/lib/RefDatabase.java" type="org.eclipse.jgit.lib.RefDatabase">
+        <filter id="1141899266">
             <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.BaseReceivePack"/>
-                <message_argument value="org.eclipse.jgit_5.6.0"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/lib/Config.java" type="org.eclipse.jgit.lib.Config">
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.5.2"/>
-                <message_argument value="getBaseConfig()"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/lib/Constants.java" type="org.eclipse.jgit.lib.Constants">
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.5.2"/>
-                <message_argument value="XDG_CONFIG_HOME"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/revwalk/ReachabilityChecker.java" type="org.eclipse.jgit.revwalk.ReachabilityChecker">
-        <filter id="403804204">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.revwalk.ReachabilityChecker"/>
-                <message_argument value="areAllReachable(Collection&lt;RevCommit&gt;, Stream&lt;RevCommit&gt;)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/storage/pack/PackStatistics.java" type="org.eclipse.jgit.storage.pack.PackStatistics$Accumulator">
-        <filter id="336658481">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.storage.pack.PackStatistics.Accumulator"/>
-                <message_argument value="offloadedPackfileSize"/>
-            </message_arguments>
-        </filter>
-        <filter id="336658481">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.storage.pack.PackStatistics.Accumulator"/>
-                <message_argument value="offloadedPackfiles"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/transport/AbstractAdvertiseRefsHook.java" type="org.eclipse.jgit.transport.AbstractAdvertiseRefsHook">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="338792546">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.AbstractAdvertiseRefsHook"/>
-                <message_argument value="advertiseRefs(BaseReceivePack)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/transport/AdvertiseRefsHook.java" type="org.eclipse.jgit.transport.AdvertiseRefsHook">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="403804204">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.AdvertiseRefsHook"/>
-                <message_argument value="advertiseRefs(ReceivePack)"/>
-            </message_arguments>
-        </filter>
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="405901410">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.AdvertiseRefsHook"/>
-                <message_argument value="advertiseRefs(BaseReceivePack)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java" type="org.eclipse.jgit.transport.AdvertiseRefsHookChain">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="338792546">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.AdvertiseRefsHookChain"/>
-                <message_argument value="advertiseRefs(BaseReceivePack)"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/transport/ReceiveCommand.java" type="org.eclipse.jgit.transport.ReceiveCommand">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="338792546">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.ReceiveCommand"/>
-                <message_argument value="execute(BaseReceivePack)"/>
+                <message_argument value="5.6"/>
+                <message_argument value="5.7"/>
+                <message_argument value="hasFastTipsWithSha1()"/>
             </message_arguments>
         </filter>
     </resource>
     <resource path="src/org/eclipse/jgit/transport/ReceivePack.java" type="org.eclipse.jgit.transport.ReceivePack">
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="338792546">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.ReceivePack"/>
-                <message_argument value="getLockMessageProcessName()"/>
-            </message_arguments>
-        </filter>
-        <filter comment="Merged BaseReceivePack into ReceivePack, replace BaseReceivePack with ReceivePack" id="338849923">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.ReceivePack"/>
-            </message_arguments>
-        </filter>
-        <filter id="421572723">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.transport.ReceivePack"/>
-                <message_argument value="enableCapabilities()"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/util/QuotedString.java" type="org.eclipse.jgit.util.QuotedString">
         <filter id="336658481">
             <message_arguments>
-                <message_argument value="org.eclipse.jgit.util.QuotedString"/>
-                <message_argument value="GIT_PATH_MINIMAL"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/jgit/util/SystemReader.java" type="org.eclipse.jgit.util.SystemReader">
-        <filter id="336695337">
-            <message_arguments>
-                <message_argument value="org.eclipse.jgit.util.SystemReader"/>
-                <message_argument value="openJGitConfig(Config, FS)"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.5.2"/>
-                <message_argument value="getJGitConfig()"/>
-            </message_arguments>
-        </filter>
-        <filter id="1142947843">
-            <message_arguments>
-                <message_argument value="5.5.2"/>
-                <message_argument value="openJGitConfig(Config, FS)"/>
+                <message_argument value="org.eclipse.jgit.transport.ReceivePack"/>
+                <message_argument value="connectivityChecker"/>
             </message_arguments>
         </filter>
     </resource>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index 08aa047..1fd2578 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.jgit.annotations;version="5.6.1",
- org.eclipse.jgit.api;version="5.6.1";
+Export-Package: org.eclipse.jgit.annotations;version="5.7.0",
+ org.eclipse.jgit.api;version="5.7.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
@@ -22,53 +22,53 @@
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="5.6.1",
- org.eclipse.jgit.blame;version="5.6.1";
+ org.eclipse.jgit.api.errors;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
+ org.eclipse.jgit.attributes;version="5.7.0",
+ org.eclipse.jgit.blame;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="5.6.1";
+ org.eclipse.jgit.diff;version="5.7.0";
   uses:="org.eclipse.jgit.patch,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="5.6.1";
+ org.eclipse.jgit.dircache;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util,
    org.eclipse.jgit.events,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.errors;version="5.6.1";
+ org.eclipse.jgit.errors;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.internal.storage.pack,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache",
- org.eclipse.jgit.events;version="5.6.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="5.6.1",
- org.eclipse.jgit.gitrepo;version="5.6.1";
+ org.eclipse.jgit.events;version="5.7.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.fnmatch;version="5.7.0",
+ org.eclipse.jgit.gitrepo;version="5.7.0";
   uses:="org.eclipse.jgit.api,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax.helpers,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="5.6.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="5.6.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="5.6.1",
- org.eclipse.jgit.ignore.internal;version="5.6.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="5.6.1";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.fsck;version="5.6.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.ketch;version="5.6.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.revwalk;version="5.6.1";x-internal:=true,
- org.eclipse.jgit.internal.storage.dfs;version="5.6.1";
+ org.eclipse.jgit.gitrepo.internal;version="5.7.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="5.7.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="5.7.0",
+ org.eclipse.jgit.ignore.internal;version="5.7.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal;version="5.7.0";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
+ org.eclipse.jgit.internal.fsck;version="5.7.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal.ketch;version="5.7.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.revwalk;version="5.7.0";x-internal:=true,
+ org.eclipse.jgit.internal.storage.dfs;version="5.7.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="5.6.1";
+ org.eclipse.jgit.internal.storage.file;version="5.7.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -77,19 +77,19 @@
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.internal.storage.io;version="5.6.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.pack;version="5.6.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="5.6.1";
+ org.eclipse.jgit.internal.storage.io;version="5.7.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.pack;version="5.7.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.reftable;version="5.7.0";
   x-friends:="org.eclipse.jgit.http.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftree;version="5.6.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.submodule;version="5.6.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.http;version="5.6.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="5.6.1";x-friends:="org.eclipse.jgit.http.server,org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="5.6.1";x-friends:="org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.lib;version="5.6.1";
+ org.eclipse.jgit.internal.storage.reftree;version="5.7.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.submodule;version="5.7.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.http;version="5.7.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal.transport.parser;version="5.7.0";x-friends:="org.eclipse.jgit.http.server,org.eclipse.jgit.test",
+ org.eclipse.jgit.internal.transport.ssh;version="5.7.0";x-friends:="org.eclipse.jgit.ssh.apache",
+ org.eclipse.jgit.lib;version="5.7.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
@@ -99,33 +99,33 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.submodule",
- org.eclipse.jgit.lib.internal;version="5.6.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.merge;version="5.6.1";
+ org.eclipse.jgit.lib.internal;version="5.7.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.merge;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.api",
- org.eclipse.jgit.nls;version="5.6.1",
- org.eclipse.jgit.notes;version="5.6.1";
+ org.eclipse.jgit.nls;version="5.7.0",
+ org.eclipse.jgit.notes;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="5.6.1";
+ org.eclipse.jgit.patch;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
+ org.eclipse.jgit.revplot;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
+ org.eclipse.jgit.revwalk;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.revwalk.filter",
- org.eclipse.jgit.revwalk.filter;version="5.6.1";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="5.6.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
- org.eclipse.jgit.transport;version="5.6.1";
+ org.eclipse.jgit.revwalk.filter;version="5.7.0";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.file;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.pack;version="5.7.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.submodule;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.transport;version="5.7.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.internal.storage.pack,
@@ -138,24 +138,24 @@
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.errors,
    org.eclipse.jgit.storage.pack",
- org.eclipse.jgit.transport.http;version="5.6.1";uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="5.6.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
- org.eclipse.jgit.treewalk;version="5.6.1";
+ org.eclipse.jgit.transport.http;version="5.7.0";uses:="javax.net.ssl",
+ org.eclipse.jgit.transport.resolver;version="5.7.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
+ org.eclipse.jgit.treewalk;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
    org.eclipse.jgit.dircache",
- org.eclipse.jgit.treewalk.filter;version="5.6.1";uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="5.6.1";
+ org.eclipse.jgit.treewalk.filter;version="5.7.0";uses:="org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.util;version="5.7.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.storage.file,
    org.ietf.jgss",
- org.eclipse.jgit.util.io;version="5.6.1",
- org.eclipse.jgit.util.sha1;version="5.6.1",
- org.eclipse.jgit.util.time;version="5.6.1"
+ org.eclipse.jgit.util.io;version="5.7.0",
+ org.eclipse.jgit.util.sha1;version="5.7.0",
+ org.eclipse.jgit.util.time;version="5.7.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  com.jcraft.jsch;version="[0.1.37,0.2.0)",
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index e24b595..a926b8f 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: 5.6.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="5.6.1.qualifier";roots="."
+Bundle-Version: 5.7.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="5.7.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index cc1b616..3b37cee 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -53,7 +53,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>5.6.1-SNAPSHOT</version>
+    <version>5.7.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 27d3e6a..c80d616 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -719,6 +719,7 @@
 unknownObjectInIndex=unknown object {0} found in index but not in pack file
 unknownObjectType=Unknown object type {0}.
 unknownObjectType2=unknown
+unknownRefStorageFormat=Unknown ref storage format "{0}"
 unknownRepositoryFormat=Unknown repository format
 unknownRepositoryFormat2=Unknown repository format "{0}"; expected "0".
 unknownTransportCommand=unknown command {0}
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 5ea6015..217785d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
@@ -64,7 +64,10 @@
 import org.eclipse.jgit.revwalk.filter.MaxCountRevFilter;
 import org.eclipse.jgit.revwalk.filter.RevFilter;
 import org.eclipse.jgit.revwalk.filter.SkipRevFilter;
-import org.eclipse.jgit.treewalk.filter.*;
+import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
+import org.eclipse.jgit.treewalk.filter.PathFilter;
+import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
+import org.eclipse.jgit.treewalk.filter.TreeFilter;
 
 /**
  * A class used to execute a {@code Log} command. It has setters for all
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
index 1067378..4e544d1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/ReverseWalk.java
@@ -92,15 +92,19 @@ void addChild(ReverseCommit c) {
 			// visited first by BlameGenerator when considering candidates.
 
 			int cnt = children.length;
-			if (cnt == 0)
+			switch (cnt) {
+			case 0:
 				children = new ReverseCommit[] { c };
-			else if (cnt == 1)
+				break;
+			case 1:
 				children = new ReverseCommit[] { c, children[0] };
-			else {
+				break;
+			default:
 				ReverseCommit[] n = new ReverseCommit[1 + cnt];
 				n[0] = c;
 				System.arraycopy(children, 0, n, 1, cnt);
 				children = n;
+				break;
 			}
 		}
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
index febdb92..4c652e5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
@@ -183,54 +183,61 @@ public void read(InputStream inputStream) throws IOException {
 	}
 
 	/** {@inheritDoc} */
+	@SuppressWarnings("nls")
 	@Override
 	public void startElement(
 			String uri,
 			String localName,
 			String qName,
 			Attributes attributes) throws SAXException {
-		if ("project".equals(qName)) { //$NON-NLS-1$
-			if (attributes.getValue("name") == null) { //$NON-NLS-1$
+		if (qName == null) {
+			return;
+		}
+		switch (qName) {
+		case "project":
+			if (attributes.getValue("name") == null) {
 				throw new SAXException(RepoText.get().invalidManifest);
 			}
-			currentProject = new RepoProject(
-					attributes.getValue("name"), //$NON-NLS-1$
-					attributes.getValue("path"), //$NON-NLS-1$
-					attributes.getValue("revision"), //$NON-NLS-1$
-					attributes.getValue("remote"), //$NON-NLS-1$
-					attributes.getValue("groups")); //$NON-NLS-1$
-			currentProject.setRecommendShallow(
-				attributes.getValue("clone-depth")); //$NON-NLS-1$
-		} else if ("remote".equals(qName)) { //$NON-NLS-1$
-			String alias = attributes.getValue("alias"); //$NON-NLS-1$
-			String fetch = attributes.getValue("fetch"); //$NON-NLS-1$
-			String revision = attributes.getValue("revision"); //$NON-NLS-1$
+			currentProject = new RepoProject(attributes.getValue("name"),
+					attributes.getValue("path"),
+					attributes.getValue("revision"),
+					attributes.getValue("remote"),
+					attributes.getValue("groups"));
+			currentProject
+					.setRecommendShallow(attributes.getValue("clone-depth"));
+			break;
+		case "remote":
+			String alias = attributes.getValue("alias");
+			String fetch = attributes.getValue("fetch");
+			String revision = attributes.getValue("revision");
 			Remote remote = new Remote(fetch, revision);
-			remotes.put(attributes.getValue("name"), remote); //$NON-NLS-1$
-			if (alias != null)
+			remotes.put(attributes.getValue("name"), remote);
+			if (alias != null) {
 				remotes.put(alias, remote);
-		} else if ("default".equals(qName)) { //$NON-NLS-1$
-			defaultRemote = attributes.getValue("remote"); //$NON-NLS-1$
-			defaultRevision = attributes.getValue("revision"); //$NON-NLS-1$
-		} else if ("copyfile".equals(qName)) { //$NON-NLS-1$
-			if (currentProject == null)
-				throw new SAXException(RepoText.get().invalidManifest);
-			currentProject.addCopyFile(new CopyFile(
-						rootRepo,
-						currentProject.getPath(),
-						attributes.getValue("src"), //$NON-NLS-1$
-						attributes.getValue("dest"))); //$NON-NLS-1$
-		} else if ("linkfile".equals(qName)) { //$NON-NLS-1$
+			}
+			break;
+		case "default":
+			defaultRemote = attributes.getValue("remote");
+			defaultRevision = attributes.getValue("revision");
+			break;
+		case "copyfile":
 			if (currentProject == null) {
 				throw new SAXException(RepoText.get().invalidManifest);
 			}
-			currentProject.addLinkFile(new LinkFile(
-						rootRepo,
-						currentProject.getPath(),
-						attributes.getValue("src"), //$NON-NLS-1$
-						attributes.getValue("dest"))); //$NON-NLS-1$
-		} else if ("include".equals(qName)) { //$NON-NLS-1$
-			String name = attributes.getValue("name"); //$NON-NLS-1$
+			currentProject.addCopyFile(new CopyFile(rootRepo,
+					currentProject.getPath(), attributes.getValue("src"),
+					attributes.getValue("dest")));
+			break;
+		case "linkfile":
+			if (currentProject == null) {
+				throw new SAXException(RepoText.get().invalidManifest);
+			}
+			currentProject.addLinkFile(new LinkFile(rootRepo,
+					currentProject.getPath(), attributes.getValue("src"),
+					attributes.getValue("dest")));
+			break;
+		case "include":
+			String name = attributes.getValue("name");
 			if (includedReader != null) {
 				try (InputStream is = includedReader.readIncludeFile(name)) {
 					if (is == null) {
@@ -239,8 +246,8 @@ public void startElement(
 					}
 					read(is);
 				} catch (Exception e) {
-					throw new SAXException(MessageFormat.format(
-							RepoText.get().errorIncludeFile, name), e);
+					throw new SAXException(MessageFormat
+							.format(RepoText.get().errorIncludeFile, name), e);
 				}
 			} else if (filename != null) {
 				int index = filename.lastIndexOf('/');
@@ -248,13 +255,18 @@ public void startElement(
 				try (InputStream is = new FileInputStream(path)) {
 					read(is);
 				} catch (IOException e) {
-					throw new SAXException(MessageFormat.format(
-							RepoText.get().errorIncludeFile, path), e);
+					throw new SAXException(MessageFormat
+							.format(RepoText.get().errorIncludeFile, path), e);
 				}
 			}
-		} else if ("remove-project".equals(qName)) { //$NON-NLS-1$
-			String name = attributes.getValue("name"); //$NON-NLS-1$
-			projects.removeIf((p) -> p.getName().equals(name));
+			break;
+		case "remove-project": {
+			String name2 = attributes.getValue("name");
+			projects.removeIf((p) -> p.getName().equals(name2));
+			break;
+		}
+		default:
+			break;
 		}
 	}
 
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 0cea60f..e8ee8b4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -780,6 +780,7 @@ public static JGitText get() {
 	/***/ public String unknownObjectInIndex;
 	/***/ public String unknownObjectType;
 	/***/ public String unknownObjectType2;
+	/***/ public String unknownRefStorageFormat;
 	/***/ public String unknownRepositoryFormat;
 	/***/ public String unknownRepositoryFormat2;
 	/***/ public String unknownTransportCommand;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
index 2f6ef51..ff9b32c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
@@ -205,12 +205,15 @@ public FileRepository(BaseRepositoryBuilder options) throws IOException {
 				ConfigConstants.CONFIG_KEY_REPO_FORMAT_VERSION, 0);
 
 		String reftype = repoConfig.getString(
-				"extensions", null, "refStorage"); //$NON-NLS-1$ //$NON-NLS-2$
+				ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
+				ConfigConstants.CONFIG_KEY_REFSTORAGE);
 		if (repositoryFormatVersion >= 1 && reftype != null) {
-			if (StringUtils.equalsIgnoreCase(reftype, "reftable")) { //$NON-NLS-1$
+			if (StringUtils.equalsIgnoreCase(reftype,
+					ConfigConstants.CONFIG_REFSTORAGE_REFTABLE)) {
 				refs = new FileReftableDatabase(this,
 						new File(getDirectory(), "refs")); //$NON-NLS-1$
-			} else if (StringUtils.equalsIgnoreCase(reftype, "reftree")) { //$NON-NLS-1$
+			} else if (StringUtils.equalsIgnoreCase(reftype,
+					ConfigConstants.CONFIG_REFSTORAGE_REFTREE)) {
 				refs = new RefTreeDatabase(this, new RefDirectory(this));
 			} else {
 				throw new IOException(JGitText.get().unknownRepositoryFormat);
@@ -721,6 +724,10 @@ void convertToPackedRefs(boolean backup) throws IOException {
 			FileUtils.delete(reftableDir,
 					FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS);
 		}
+
+		repoConfig.unset(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
+				ConfigConstants.CONFIG_KEY_REFSTORAGE);
+		repoConfig.save();
 	}
 
 	@SuppressWarnings("nls")
@@ -774,6 +781,11 @@ void convertToReftable(boolean writeLogs, boolean backup)
 
 		refs.close();
 		refs = new FileReftableDatabase(this, refsFile);
+
+		repoConfig.setString(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
+				ConfigConstants.CONFIG_KEY_REFSTORAGE,
+				ConfigConstants.CONFIG_REFSTORAGE_REFTABLE);
+		repoConfig.save();
 	}
 
 	/**
@@ -788,7 +800,6 @@ void convertToReftable(boolean writeLogs, boolean backup)
 	 * @throws IOException
 	 *             on I/O problems.
 	 */
-	@SuppressWarnings("nls")
 	public void convertRefStorage(String format, boolean writeLogs,
 			boolean backup) throws IOException {
 		if (format.equals("reftable")) { //$NON-NLS-1$
@@ -800,8 +811,8 @@ public void convertRefStorage(String format, boolean writeLogs,
 				convertToPackedRefs(backup);
 			}
 		} else {
-			throw new IOException(String.format(
-					"unknown supported ref storage format '%s'", format));
+			throw new IOException(MessageFormat
+					.format(JGitText.get().unknownRefStorageFormat, format));
 		}
 	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
index 14b821a..394d78b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java
@@ -561,7 +561,7 @@ public void close() {
 	private class LogCursorImpl extends LogCursor {
 		private final long scanEnd;
 		private final byte[] match;
-	    
+
 		private String refName;
 		private long updateIndex;
 		private ReflogEntry entry;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
index 13f71a7..d905922 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CommitBuilder.java
@@ -410,7 +410,8 @@ static void writeGpgSignatureString(String in, OutputStream out)
 			throws IOException, IllegalArgumentException {
 		for (int i = 0; i < in.length(); ++i) {
 			char ch = in.charAt(i);
-			if (ch == '\r') {
+			switch (ch) {
+			case '\r':
 				if (i + 1 < in.length() && in.charAt(i + 1) == '\n') {
 					out.write('\n');
 					out.write(' ');
@@ -419,15 +420,18 @@ static void writeGpgSignatureString(String in, OutputStream out)
 					out.write('\n');
 					out.write(' ');
 				}
-			} else if (ch == '\n') {
+				break;
+			case '\n':
 				out.write('\n');
 				out.write(' ');
-			} else {
+				break;
+			default:
 				// sanity check
 				if (ch > 127)
 					throw new IllegalArgumentException(MessageFormat
 							.format(JGitText.get().notASCIIString, in));
 				out.write(ch);
+				break;
 			}
 		}
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
index e0bd592..b6ffb84 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
@@ -503,8 +503,31 @@ public final class ConfigConstants {
 
 	/**
 	 * The "minRacyThreshold" key
-	 *
 	 * @since 5.1.9
 	 */
 	public static final String CONFIG_KEY_MIN_RACY_THRESHOLD = "minRacyThreshold";
+
+	/**
+	 * The "extensions" section
+	 * @since 5.7
+	 */
+	public static final String CONFIG_EXTENSIONS_SECTION = "extensions";
+
+	/**
+	 * The extensions.refStorage key
+	 * @since 5.7
+	 */
+	public static final String CONFIG_KEY_REFSTORAGE = "refStorage";
+
+	/**
+	 * The "reftable" refStorage format
+	 * @since 5.7
+	 */
+	public static final String CONFIG_REFSTORAGE_REFTABLE = "reftable";
+
+	/**
+	 * The "reftree" refStorage format
+	 * @since 5.7
+	 */
+	public static final String CONFIG_REFSTORAGE_REFTREE = "reftree";
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
index 9914b0c..a575dee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommit.java
@@ -102,27 +102,34 @@ void addMergingLane(PlotLane m) {
 
 	private static PlotLane[] addLane(PlotLane l, PlotLane[] lanes) {
 		final int cnt = lanes.length;
-		if (cnt == 0)
+		switch (cnt) {
+		case 0:
 			lanes = new PlotLane[] { l };
-		else if (cnt == 1)
+			break;
+		case 1:
 			lanes = new PlotLane[] { lanes[0], l };
-		else {
+			break;
+		default:
 			final PlotLane[] n = new PlotLane[cnt + 1];
 			System.arraycopy(lanes, 0, n, 0, cnt);
 			n[cnt] = l;
 			lanes = n;
+			break;
 		}
 		return lanes;
 	}
 
 	void addChild(PlotCommit c) {
 		final int cnt = children.length;
-		if (cnt == 0)
+		switch (cnt) {
+		case 0:
 			children = new PlotCommit[] { c };
-		else if (cnt == 1) {
+			break;
+		case 1:
 			if (!c.getId().equals(children[0].getId()))
 				children = new PlotCommit[] { children[0], c };
-		} else {
+			break;
+		default:
 			for (PlotCommit pc : children)
 				if (c.getId().equals(pc.getId()))
 					return;
@@ -130,6 +137,7 @@ else if (cnt == 1) {
 			System.arraycopy(children, 0, n, 0, cnt);
 			n[cnt] = c;
 			children = n;
+			break;
 		}
 	}
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
index af4ec1f..98fb765 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java
@@ -188,18 +188,22 @@ void parseCanonical(RevWalk walk, byte[] raw) throws IOException {
 				}
 				idBuffer.fromString(raw, ptr + 7);
 				final RevCommit p = walk.lookupCommit(idBuffer);
-				if (nParents == 0) {
+				switch (nParents) {
+				case 0:
 					pList[nParents++] = p;
-				} else if (nParents == 1) {
+					break;
+				case 1:
 					pList = new RevCommit[] { pList[0], p };
 					nParents = 2;
-				} else {
+					break;
+				default:
 					if (pList.length <= nParents) {
 						RevCommit[] old = pList;
 						pList = new RevCommit[pList.length + 32];
 						System.arraycopy(old, 0, pList, 0, nParents);
 					}
 					pList[nParents++] = p;
+					break;
 				}
 				ptr += 48;
 			}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
index 54c1978..1c670b7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/AdvertiseRefsHookChain.java
@@ -72,12 +72,14 @@ public static AdvertiseRefsHook newChain(List<? extends AdvertiseRefsHook> hooks
 		for (AdvertiseRefsHook hook : hooks)
 			if (hook != AdvertiseRefsHook.DEFAULT)
 				newHooks[i++] = hook;
-		if (i == 0)
+		switch (i) {
+		case 0:
 			return AdvertiseRefsHook.DEFAULT;
-		else if (i == 1)
+		case 1:
 			return newHooks[0];
-		else
+		default:
 			return new AdvertiseRefsHookChain(newHooks, i);
+		}
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
index d73e193..2af7f06 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
@@ -148,12 +148,16 @@ AckNackResult readACK(MutableObjectId returnedId) throws IOException {
 				return AckNackResult.ACK;
 
 			final String arg = line.substring(44);
-			if (arg.equals(" continue")) //$NON-NLS-1$
+			switch (arg) {
+			case " continue": //$NON-NLS-1$
 				return AckNackResult.ACK_CONTINUE;
-			else if (arg.equals(" common")) //$NON-NLS-1$
+			case " common": //$NON-NLS-1$
 				return AckNackResult.ACK_COMMON;
-			else if (arg.equals(" ready")) //$NON-NLS-1$
+			case " ready": //$NON-NLS-1$
 				return AckNackResult.ACK_READY;
+			default:
+				break;
+			}
 		}
 		if (line.startsWith("ERR ")) //$NON-NLS-1$
 			throw new PackProtocolException(line.substring(4));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
index 0bdf7d4..64598e1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PostReceiveHookChain.java
@@ -70,12 +70,14 @@ public static PostReceiveHook newChain(
 		for (PostReceiveHook hook : hooks)
 			if (hook != PostReceiveHook.NULL)
 				newHooks[i++] = hook;
-		if (i == 0)
+		switch (i) {
+		case 0:
 			return PostReceiveHook.NULL;
-		else if (i == 1)
+		case 1:
 			return newHooks[0];
-		else
+		default:
 			return new PostReceiveHookChain(newHooks, i);
+		}
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
index 47b94c6..30594bd 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PreReceiveHookChain.java
@@ -69,12 +69,14 @@ public static PreReceiveHook newChain(List<? extends PreReceiveHook> hooks) {
 		for (PreReceiveHook hook : hooks)
 			if (hook != PreReceiveHook.NULL)
 				newHooks[i++] = hook;
-		if (i == 0)
+		switch (i) {
+		case 0:
 			return PreReceiveHook.NULL;
-		else if (i == 1)
+		case 1:
 			return newHooks[0];
-		else
+		default:
 			return new PreReceiveHookChain(newHooks, i);
+		}
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommandErrorHandler.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommandErrorHandler.java
new file mode 100644
index 0000000..d9a1486
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommandErrorHandler.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2019, Google LLC  and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.transport;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.jgit.errors.MissingObjectException;
+import org.eclipse.jgit.transport.ReceiveCommand.Result;
+
+/**
+ * Exception handler for processing {@link ReceiveCommand}.
+ *
+ * @since 5.7
+ */
+public interface ReceiveCommandErrorHandler {
+	/**
+	 * Handle an exception thrown while validating the new commit ID.
+	 *
+	 * @param cmd
+	 *            offending command
+	 * @param e
+	 *            exception thrown
+	 */
+	default void handleNewIdValidationException(ReceiveCommand cmd,
+			IOException e) {
+		cmd.setResult(Result.REJECTED_MISSING_OBJECT, cmd.getNewId().name());
+	}
+
+	/**
+	 * Handle an exception thrown while validating the old commit ID.
+	 *
+	 * @param cmd
+	 *            offending command
+	 * @param e
+	 *            exception thrown
+	 */
+	default void handleOldIdValidationException(ReceiveCommand cmd,
+			IOException e) {
+		cmd.setResult(Result.REJECTED_MISSING_OBJECT, cmd.getOldId().name());
+	}
+
+	/**
+	 * Handle an exception thrown while checking if the update is fast-forward.
+	 *
+	 * @param cmd
+	 *            offending command
+	 * @param e
+	 *            exception thrown
+	 */
+	default void handleFastForwardCheckException(ReceiveCommand cmd,
+			IOException e) {
+		if (e instanceof MissingObjectException) {
+			cmd.setResult(Result.REJECTED_MISSING_OBJECT, e.getMessage());
+		} else {
+			cmd.setResult(Result.REJECTED_OTHER_REASON);
+		}
+	}
+
+	/**
+	 * Handle an exception thrown while checking if the update is fast-forward.
+	 *
+	 * @param cmds
+	 *            commands being processed
+	 * @param e
+	 *            exception thrown
+	 */
+	default void handleBatchRefUpdateException(List<ReceiveCommand> cmds,
+			IOException e) {
+		for (ReceiveCommand cmd : cmds) {
+			if (cmd.getResult() == Result.NOT_ATTEMPTED) {
+				cmd.reject(e);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
index 16fbbd4..69e6471 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
@@ -74,7 +74,6 @@
 import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.InvalidObjectIdException;
 import org.eclipse.jgit.errors.LargeObjectException;
-import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.PackProtocolException;
 import org.eclipse.jgit.errors.TooLargePackException;
 import org.eclipse.jgit.errors.UnpackException;
@@ -93,24 +92,21 @@
 import org.eclipse.jgit.lib.ObjectChecker;
 import org.eclipse.jgit.lib.ObjectDatabase;
 import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectIdSubclassMap;
 import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectLoader;
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.ProgressMonitor;
 import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.revwalk.ObjectWalk;
-import org.eclipse.jgit.revwalk.RevBlob;
 import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.revwalk.RevFlag;
 import org.eclipse.jgit.revwalk.RevObject;
-import org.eclipse.jgit.revwalk.RevSort;
-import org.eclipse.jgit.revwalk.RevTree;
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.transport.PacketLineIn.InputOverLimitIOException;
 import org.eclipse.jgit.transport.ReceiveCommand.Result;
 import org.eclipse.jgit.transport.RefAdvertiser.PacketLineOutRefAdvertiser;
+import org.eclipse.jgit.transport.internal.ConnectivityChecker.ConnectivityCheckInfo;
+import org.eclipse.jgit.transport.internal.ConnectivityChecker;
+import org.eclipse.jgit.transport.internal.FullConnectivityChecker;
 import org.eclipse.jgit.util.io.InterruptTimer;
 import org.eclipse.jgit.util.io.LimitedInputStream;
 import org.eclipse.jgit.util.io.TimeoutInputStream;
@@ -273,7 +269,7 @@ public Set<String> getCapabilities() {
 	/** Lock around the received pack file, while updating refs. */
 	private PackLock packLock;
 
-	private boolean checkReferencedIsReachable;
+	private boolean checkReferencedAreReachable;
 
 	/** Git object size limit */
 	private long maxObjectSizeLimit;
@@ -292,9 +288,21 @@ public Set<String> getCapabilities() {
 
 	private ReceivedPackStatistics stats;
 
+	/**
+	 * Connectivity checker to use.
+	 * @since 5.7
+	 */
+	protected ConnectivityChecker connectivityChecker = new FullConnectivityChecker();
+
 	/** Hook to validate the update commands before execution. */
 	private PreReceiveHook preReceive;
 
+	private ReceiveCommandErrorHandler receiveCommandErrorHandler = new ReceiveCommandErrorHandler() {
+		// Use the default implementation.
+	};
+
+	private UnpackErrorHandler unpackErrorHandler = new DefaultUnpackErrorHandler();
+
 	/** Hook to report on the commands after execution. */
 	private PostReceiveHook postReceive;
 
@@ -508,7 +516,7 @@ public final Set<ObjectId> getAdvertisedObjects() {
 	 *         reference.
 	 */
 	public boolean isCheckReferencedObjectsAreReachable() {
-		return checkReferencedIsReachable;
+		return checkReferencedAreReachable;
 	}
 
 	/**
@@ -533,7 +541,7 @@ public boolean isCheckReferencedObjectsAreReachable() {
 	 *            {@code true} to enable the additional check.
 	 */
 	public void setCheckReferencedObjectsAreReachable(boolean b) {
-		this.checkReferencedIsReachable = b;
+		this.checkReferencedAreReachable = b;
 	}
 
 	/**
@@ -1021,6 +1029,17 @@ public List<ReceiveCommand> getAllCommands() {
 	}
 
 	/**
+	 * Set an error handler for {@link ReceiveCommand}.
+	 *
+	 * @param receiveCommandErrorHandler
+	 * @since 5.7
+	 */
+	public void setReceiveCommandErrorHandler(
+			ReceiveCommandErrorHandler receiveCommandErrorHandler) {
+		this.receiveCommandErrorHandler = receiveCommandErrorHandler;
+	}
+
+	/**
 	 * Send an error message to the client.
 	 * <p>
 	 * If any error messages are sent before the references are advertised to
@@ -1217,8 +1236,13 @@ private Map<String, Ref> getAdvertisedOrDefaultRefs() {
 	 *
 	 * @throws java.io.IOException
 	 *             an error occurred during unpacking or connectivity checking.
+	 * @throws LargeObjectException
+	 *             an large object needs to be opened for the check.
+	 * @throws SubmoduleValidationException
+	 *             fails to validate the submodule.
 	 */
-	protected void receivePackAndCheckConnectivity() throws IOException {
+	protected void receivePackAndCheckConnectivity() throws IOException,
+			LargeObjectException, SubmoduleValidationException {
 		receivePack();
 		if (needCheckConnectivity()) {
 			checkSubmodules();
@@ -1368,15 +1392,9 @@ private void recvCommands() throws IOException {
 			if (hasCommands()) {
 				readPostCommands(pck);
 			}
-		} catch (PackProtocolException e) {
+		} catch (Throwable t) {
 			discardCommands();
-			fatalError(e.getMessage());
-			throw e;
-		} catch (InputOverLimitIOException e) {
-			String msg = JGitText.get().tooManyCommands;
-			discardCommands();
-			fatalError(msg);
-			throw new PackProtocolException(msg);
+			throw t;
 		}
 	}
 
@@ -1498,10 +1516,10 @@ private void receivePack() throws IOException {
 
 			parser = ins.newPackParser(packInputStream());
 			parser.setAllowThin(true);
-			parser.setNeedNewObjectIds(checkReferencedIsReachable);
-			parser.setNeedBaseObjectIds(checkReferencedIsReachable);
-			parser.setCheckEofAfterPackFooter(
-					!biDirectionalPipe && !isExpectDataAfterPackFooter());
+			parser.setNeedNewObjectIds(checkReferencedAreReachable);
+			parser.setNeedBaseObjectIds(checkReferencedAreReachable);
+			parser.setCheckEofAfterPackFooter(!biDirectionalPipe
+					&& !isExpectDataAfterPackFooter());
 			parser.setExpectDataAfterPackFooter(isExpectDataAfterPackFooter());
 			parser.setObjectChecker(objectChecker);
 			parser.setLockMessage(lockMsg);
@@ -1535,7 +1553,8 @@ private boolean needCheckConnectivity() {
 				|| !getClientShallowCommits().isEmpty();
 	}
 
-	private void checkSubmodules() throws IOException {
+	private void checkSubmodules() throws IOException, LargeObjectException,
+			SubmoduleValidationException {
 		ObjectDatabase odb = db.getObjectDatabase();
 		if (objectChecker == null) {
 			return;
@@ -1544,18 +1563,12 @@ private void checkSubmodules() throws IOException {
 			AnyObjectId blobId = entry.getBlobId();
 			ObjectLoader blob = odb.open(blobId, Constants.OBJ_BLOB);
 
-			try {
-				SubmoduleValidator.assertValidGitModulesFile(
-						new String(blob.getBytes(), UTF_8));
-			} catch (LargeObjectException | SubmoduleValidationException e) {
-				throw new IOException(e);
-			}
+			SubmoduleValidator.assertValidGitModulesFile(
+					new String(blob.getBytes(), UTF_8));
 		}
 	}
 
 	private void checkConnectivity() throws IOException {
-		ObjectIdSubclassMap<ObjectId> baseObjects = null;
-		ObjectIdSubclassMap<ObjectId> providedObjects = null;
 		ProgressMonitor checking = NullProgressMonitor.INSTANCE;
 		if (sideBand && !quiet) {
 			SideBandProgressMonitor m = new SideBandProgressMonitor(msgOut);
@@ -1563,76 +1576,18 @@ private void checkConnectivity() throws IOException {
 			checking = m;
 		}
 
-		if (checkReferencedIsReachable) {
-			baseObjects = parser.getBaseObjectIds();
-			providedObjects = parser.getNewObjectIds();
-		}
-		parser = null;
+		connectivityChecker.checkConnectivity(createConnectivityCheckInfo(),
+				advertisedHaves, checking);
+	}
 
-		try (ObjectWalk ow = new ObjectWalk(db)) {
-			if (baseObjects != null) {
-				ow.sort(RevSort.TOPO);
-				if (!baseObjects.isEmpty())
-					ow.sort(RevSort.BOUNDARY, true);
-			}
-
-			for (ReceiveCommand cmd : commands) {
-				if (cmd.getResult() != Result.NOT_ATTEMPTED)
-					continue;
-				if (cmd.getType() == ReceiveCommand.Type.DELETE)
-					continue;
-				ow.markStart(ow.parseAny(cmd.getNewId()));
-			}
-			for (ObjectId have : advertisedHaves) {
-				RevObject o = ow.parseAny(have);
-				ow.markUninteresting(o);
-
-				if (baseObjects != null && !baseObjects.isEmpty()) {
-					o = ow.peel(o);
-					if (o instanceof RevCommit)
-						o = ((RevCommit) o).getTree();
-					if (o instanceof RevTree)
-						ow.markUninteresting(o);
-				}
-			}
-
-			checking.beginTask(JGitText.get().countingObjects,
-					ProgressMonitor.UNKNOWN);
-			RevCommit c;
-			while ((c = ow.next()) != null) {
-				checking.update(1);
-				if (providedObjects != null //
-						&& !c.has(RevFlag.UNINTERESTING) //
-						&& !providedObjects.contains(c))
-					throw new MissingObjectException(c, Constants.TYPE_COMMIT);
-			}
-
-			RevObject o;
-			while ((o = ow.nextObject()) != null) {
-				checking.update(1);
-				if (o.has(RevFlag.UNINTERESTING))
-					continue;
-
-				if (providedObjects != null) {
-					if (providedObjects.contains(o)) {
-						continue;
-					}
-					throw new MissingObjectException(o, o.getType());
-				}
-
-				if (o instanceof RevBlob && !db.getObjectDatabase().has(o))
-					throw new MissingObjectException(o, Constants.TYPE_BLOB);
-			}
-			checking.endTask();
-
-			if (baseObjects != null) {
-				for (ObjectId id : baseObjects) {
-					o = ow.parseAny(id);
-					if (!o.has(RevFlag.UNINTERESTING))
-						throw new MissingObjectException(o, o.getType());
-				}
-			}
-		}
+	private ConnectivityCheckInfo createConnectivityCheckInfo() {
+		ConnectivityCheckInfo info = new ConnectivityCheckInfo();
+		info.setCheckObjects(checkReferencedAreReachable);
+		info.setCommands(getAllCommands());
+		info.setRepository(db);
+		info.setParser(parser);
+		info.setWalk(walk);
+		return info;
 	}
 
 	/**
@@ -1730,16 +1685,16 @@ private void validateCommands() {
 				try {
 					oldObj = walk.parseAny(cmd.getOldId());
 				} catch (IOException e) {
-					cmd.setResult(Result.REJECTED_MISSING_OBJECT,
-							cmd.getOldId().name());
+					receiveCommandErrorHandler
+							.handleOldIdValidationException(cmd, e);
 					continue;
 				}
 
 				try {
 					newObj = walk.parseAny(cmd.getNewId());
 				} catch (IOException e) {
-					cmd.setResult(Result.REJECTED_MISSING_OBJECT,
-							cmd.getNewId().name());
+					receiveCommandErrorHandler
+							.handleNewIdValidationException(cmd, e);
 					continue;
 				}
 
@@ -1747,16 +1702,14 @@ private void validateCommands() {
 						&& newObj instanceof RevCommit) {
 					try {
 						if (walk.isMergedInto((RevCommit) oldObj,
-								(RevCommit) newObj))
+								(RevCommit) newObj)) {
 							cmd.setTypeFastForwardUpdate();
-						else
-							cmd.setType(
-									ReceiveCommand.Type.UPDATE_NONFASTFORWARD);
-					} catch (MissingObjectException e) {
-						cmd.setResult(Result.REJECTED_MISSING_OBJECT,
-								e.getMessage());
+						} else {
+							cmd.setType(ReceiveCommand.Type.UPDATE_NONFASTFORWARD);
+						}
 					} catch (IOException e) {
-						cmd.setResult(Result.REJECTED_OTHER_REASON);
+						receiveCommandErrorHandler
+								.handleFastForwardCheckException(cmd, e);
 					}
 				} else {
 					cmd.setType(ReceiveCommand.Type.UPDATE_NONFASTFORWARD);
@@ -1835,109 +1788,122 @@ private void executeCommands() {
 		try {
 			batch.setPushCertificate(getPushCertificate());
 			batch.execute(walk, updating);
-		} catch (IOException err) {
-			for (ReceiveCommand cmd : toApply) {
-				if (cmd.getResult() == Result.NOT_ATTEMPTED)
-					cmd.reject(err);
-			}
+		} catch (IOException e) {
+			receiveCommandErrorHandler.handleBatchRefUpdateException(toApply,
+					e);
 		}
 	}
 
 	/**
 	 * Send a status report.
 	 *
-	 * @param forClient
-	 *            true if this report is for a Git client, false if it is for an
-	 *            end-user.
 	 * @param unpackError
 	 *            an error that occurred during unpacking, or {@code null}
-	 * @param out
-	 *            the reporter for sending the status strings.
 	 * @throws java.io.IOException
 	 *             an error occurred writing the status report.
 	 * @since 5.6
 	 */
-	private void sendStatusReport(final boolean forClient,
-			final Throwable unpackError, final Reporter out)
-			throws IOException {
-		if (unpackError != null) {
-			out.sendString("unpack error " + unpackError.getMessage()); //$NON-NLS-1$
-			if (forClient) {
-				for (ReceiveCommand cmd : commands) {
-					out.sendString("ng " + cmd.getRefName() //$NON-NLS-1$
-							+ " n/a (unpacker error)"); //$NON-NLS-1$
+	private void sendStatusReport(Throwable unpackError) throws IOException {
+		Reporter out = new Reporter() {
+			@Override
+			void sendString(String s) throws IOException {
+				if (reportStatus) {
+					pckOut.writeString(s + "\n"); //$NON-NLS-1$
+				} else if (msgOut != null) {
+					msgOut.write(Constants.encode(s + "\n")); //$NON-NLS-1$
 				}
 			}
-			return;
-		}
+		};
 
-		if (forClient)
-			out.sendString("unpack ok"); //$NON-NLS-1$
-		for (ReceiveCommand cmd : commands) {
-			if (cmd.getResult() == Result.OK) {
-				if (forClient)
-					out.sendString("ok " + cmd.getRefName()); //$NON-NLS-1$
-				continue;
+		try {
+			if (unpackError != null) {
+				out.sendString("unpack error " + unpackError.getMessage()); //$NON-NLS-1$
+				if (reportStatus) {
+					for (ReceiveCommand cmd : commands) {
+						out.sendString("ng " + cmd.getRefName() //$NON-NLS-1$
+								+ " n/a (unpacker error)"); //$NON-NLS-1$
+					}
+				}
+				return;
 			}
 
-			final StringBuilder r = new StringBuilder();
-			if (forClient)
-				r.append("ng ").append(cmd.getRefName()).append(" "); //$NON-NLS-1$ //$NON-NLS-2$
-			else
-				r.append(" ! [rejected] ").append(cmd.getRefName()) //$NON-NLS-1$
-						.append(" ("); //$NON-NLS-1$
-
-			switch (cmd.getResult()) {
-			case NOT_ATTEMPTED:
-				r.append("server bug; ref not processed"); //$NON-NLS-1$
-				break;
-
-			case REJECTED_NOCREATE:
-				r.append("creation prohibited"); //$NON-NLS-1$
-				break;
-
-			case REJECTED_NODELETE:
-				r.append("deletion prohibited"); //$NON-NLS-1$
-				break;
-
-			case REJECTED_NONFASTFORWARD:
-				r.append("non-fast forward"); //$NON-NLS-1$
-				break;
-
-			case REJECTED_CURRENT_BRANCH:
-				r.append("branch is currently checked out"); //$NON-NLS-1$
-				break;
-
-			case REJECTED_MISSING_OBJECT:
-				if (cmd.getMessage() == null)
-					r.append("missing object(s)"); //$NON-NLS-1$
-				else if (cmd.getMessage()
-						.length() == Constants.OBJECT_ID_STRING_LENGTH) {
-					r.append("object "); //$NON-NLS-1$
-					r.append(cmd.getMessage());
-					r.append(" missing"); //$NON-NLS-1$
-				} else
-					r.append(cmd.getMessage());
-				break;
-
-			case REJECTED_OTHER_REASON:
-				if (cmd.getMessage() == null)
-					r.append("unspecified reason"); //$NON-NLS-1$
-				else
-					r.append(cmd.getMessage());
-				break;
-
-			case LOCK_FAILURE:
-				r.append("failed to lock"); //$NON-NLS-1$
-				break;
-
-			case OK:
-				// We shouldn't have reached this case (see 'ok' case above).
-				continue;
+			if (reportStatus) {
+				out.sendString("unpack ok"); //$NON-NLS-1$
 			}
-			if (!forClient)
-				r.append(")"); //$NON-NLS-1$
-			out.sendString(r.toString());
+			for (ReceiveCommand cmd : commands) {
+				if (cmd.getResult() == Result.OK) {
+					if (reportStatus) {
+						out.sendString("ok " + cmd.getRefName()); //$NON-NLS-1$
+					}
+					continue;
+				}
+
+				final StringBuilder r = new StringBuilder();
+				if (reportStatus) {
+					r.append("ng ").append(cmd.getRefName()).append(" "); //$NON-NLS-1$ //$NON-NLS-2$
+				} else {
+					r.append(" ! [rejected] ").append(cmd.getRefName()) //$NON-NLS-1$
+							.append(" ("); //$NON-NLS-1$
+				}
+
+				switch (cmd.getResult()) {
+				case NOT_ATTEMPTED:
+					r.append("server bug; ref not processed"); //$NON-NLS-1$
+					break;
+
+				case REJECTED_NOCREATE:
+					r.append("creation prohibited"); //$NON-NLS-1$
+					break;
+
+				case REJECTED_NODELETE:
+					r.append("deletion prohibited"); //$NON-NLS-1$
+					break;
+
+				case REJECTED_NONFASTFORWARD:
+					r.append("non-fast forward"); //$NON-NLS-1$
+					break;
+
+				case REJECTED_CURRENT_BRANCH:
+					r.append("branch is currently checked out"); //$NON-NLS-1$
+					break;
+
+				case REJECTED_MISSING_OBJECT:
+					if (cmd.getMessage() == null)
+						r.append("missing object(s)"); //$NON-NLS-1$
+					else if (cmd.getMessage()
+							.length() == Constants.OBJECT_ID_STRING_LENGTH) {
+						r.append("object "); //$NON-NLS-1$
+						r.append(cmd.getMessage());
+						r.append(" missing"); //$NON-NLS-1$
+					} else
+						r.append(cmd.getMessage());
+					break;
+
+				case REJECTED_OTHER_REASON:
+					if (cmd.getMessage() == null)
+						r.append("unspecified reason"); //$NON-NLS-1$
+					else
+						r.append(cmd.getMessage());
+					break;
+
+				case LOCK_FAILURE:
+					r.append("failed to lock"); //$NON-NLS-1$
+					break;
+
+				case OK:
+					// We shouldn't have reached this case (see 'ok' case
+					// above).
+					continue;
+				}
+				if (!reportStatus) {
+					r.append(")"); //$NON-NLS-1$
+				}
+				out.sendString(r.toString());
+			}
+		} finally {
+			if (reportStatus) {
+				pckOut.end();
+			}
 		}
 	}
 
@@ -2123,6 +2089,15 @@ public void setPostReceiveHook(PostReceiveHook h) {
 	}
 
 	/**
+	 * @param unpackErrorHandler
+	 *            the unpackErrorHandler to set
+	 * @since 5.7
+	 */
+	public void setUnpackErrorHandler(UnpackErrorHandler unpackErrorHandler) {
+		this.unpackErrorHandler = unpackErrorHandler;
+	}
+
+	/**
 	 * Set whether this class will report command failures as warning messages
 	 * before sending the command results.
 	 *
@@ -2161,6 +2136,50 @@ public void receive(final InputStream input, final OutputStream output,
 		init(input, output, messages);
 		try {
 			service();
+		} catch (PackProtocolException e) {
+			fatalError(e.getMessage());
+			throw e;
+		} catch (InputOverLimitIOException e) {
+			String msg = JGitText.get().tooManyCommands;
+			fatalError(msg);
+			throw new PackProtocolException(msg);
+		} finally {
+			try {
+				close();
+			} finally {
+				release();
+			}
+		}
+	}
+
+	/**
+	 * Execute the receive task on the socket.
+	 *
+	 * <p>
+	 * Same as {@link #receive}, but the exceptions are not reported to the
+	 * client yet.
+	 *
+	 * @param input
+	 *            raw input to read client commands and pack data from. Caller
+	 *            must ensure the input is buffered, otherwise read performance
+	 *            may suffer.
+	 * @param output
+	 *            response back to the Git network client. Caller must ensure
+	 *            the output is buffered, otherwise write performance may
+	 *            suffer.
+	 * @param messages
+	 *            secondary "notice" channel to send additional messages out
+	 *            through. When run over SSH this should be tied back to the
+	 *            standard error channel of the command execution. For most
+	 *            other network connections this should be null.
+	 * @throws java.io.IOException
+	 * @since 5.7
+	 */
+	public void receiveWithExceptionPropagation(InputStream input,
+			OutputStream output, OutputStream messages) throws IOException {
+		init(input, output, messages);
+		try {
+			service();
 		} finally {
 			try {
 				close();
@@ -2178,19 +2197,23 @@ private void service() throws IOException {
 			getAdvertisedOrDefaultRefs();
 		if (hasError())
 			return;
-		recvCommands();
-		if (hasCommands()) {
-			Throwable unpackError = null;
-			if (needPack()) {
-				try {
-					receivePackAndCheckConnectivity();
-				} catch (IOException | RuntimeException | Error err) {
-					unpackError = err;
-				}
-			}
 
-			try {
-				if (unpackError == null) {
+		recvCommands();
+
+		if (hasCommands()) {
+			try (PostReceiveExecutor e = new PostReceiveExecutor()) {
+				if (needPack()) {
+					try {
+						receivePackAndCheckConnectivity();
+					} catch (IOException | RuntimeException
+							| SubmoduleValidationException | Error err) {
+						unlockPack();
+						unpackErrorHandler.handleUnpackException(err);
+						throw new UnpackException(err);
+					}
+				}
+
+				try {
 					setAtomic(isCapabilityEnabled(CAPABILITY_ATOMIC));
 
 					validateCommands();
@@ -2204,39 +2227,12 @@ private void service() throws IOException {
 						failPendingCommands();
 					}
 					executeCommands();
+				} finally {
+					unlockPack();
 				}
-			} finally {
-				unlockPack();
-			}
 
-			if (reportStatus) {
-				sendStatusReport(true, unpackError, new Reporter() {
-					@Override
-					void sendString(String s) throws IOException {
-						pckOut.writeString(s + "\n"); //$NON-NLS-1$
-					}
-				});
-				pckOut.end();
-			} else if (msgOut != null) {
-				sendStatusReport(false, unpackError, new Reporter() {
-					@Override
-					void sendString(String s) throws IOException {
-						msgOut.write(Constants.encode(s + "\n")); //$NON-NLS-1$
-					}
-				});
+				sendStatusReport(null);
 			}
-
-			if (unpackError != null) {
-				// we already know which exception to throw. Ignore
-				// potential additional exceptions raised in postReceiveHooks
-				try {
-					postReceive.onPostReceive(this, filterCommands(Result.OK));
-				} catch (Throwable e) {
-					// empty
-				}
-				throw new UnpackException(unpackError);
-			}
-			postReceive.onPostReceive(this, filterCommands(Result.OK));
 			autoGc();
 		}
 	}
@@ -2273,4 +2269,19 @@ static ReceiveCommand parseCommand(String line)
 		}
 		return new ReceiveCommand(oldId, newId, name);
 	}
+
+	private class PostReceiveExecutor implements AutoCloseable {
+		@Override
+		public void close() {
+			postReceive.onPostReceive(ReceivePack.this,
+					filterCommands(Result.OK));
+		}
+	}
+
+	private class DefaultUnpackErrorHandler implements UnpackErrorHandler {
+		@Override
+		public void handleUnpackException(Throwable t) throws IOException {
+			sendStatusReport(t);
+		}
+	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UnpackErrorHandler.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UnpackErrorHandler.java
new file mode 100644
index 0000000..12c9a76
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UnpackErrorHandler.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2019, Google LLC  and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.transport;
+
+import java.io.IOException;
+
+/**
+ * Exception handler for processing an incoming pack file.
+ *
+ * @since 5.7
+ */
+public interface UnpackErrorHandler {
+	/**
+	 * Handle an exception thrown while unpacking the pack file.
+	 *
+	 * @param t
+	 *            exception thrown
+	 * @throws IOException
+	 *             thrown when failed to write an error back to the client.
+	 */
+	void handleUnpackException(Throwable t) throws IOException;
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/ConnectivityChecker.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/ConnectivityChecker.java
new file mode 100644
index 0000000..d6efada
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/ConnectivityChecker.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2019, Google LLC  and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.transport.internal;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.transport.PackParser;
+import org.eclipse.jgit.transport.ReceiveCommand;
+
+/**
+ * Checks that a received pack only depends on objects which are reachable from
+ * a defined set of references.
+ */
+public interface ConnectivityChecker {
+
+	/**
+	 * Checks connectivity of the commit graph after pack uploading.
+	 *
+	 * @param connectivityCheckInfo
+	 *            Input for the connectivity check.
+	 * @param haves
+	 *            Set of references known for client.
+	 * @param pm
+	 *            Monitor to publish progress to.
+	 * @throws IOException
+	 *             an error occurred during connectivity checking.
+	 *
+	 */
+	void checkConnectivity(ConnectivityCheckInfo connectivityCheckInfo,
+			Set<ObjectId> haves, ProgressMonitor pm)
+			throws IOException;
+
+	/**
+	 * POJO which is used to pass all information which is needed to perform
+	 * connectivity check.
+	 */
+	public static class ConnectivityCheckInfo {
+		private Repository repository;
+
+		private PackParser parser;
+
+		private boolean checkObjects;
+
+		private List<ReceiveCommand> commands;
+
+		private RevWalk walk;
+
+		/**
+		 * @return database we write the stored objects into.
+		 */
+		public Repository getRepository() {
+			return repository;
+		}
+
+		/**
+		 * @param repository
+		 *            set database we write the stored objects into.
+		 */
+		public void setRepository(Repository repository) {
+			this.repository = repository;
+		}
+
+		/**
+		 * @return the parser used to parse pack.
+		 */
+		public PackParser getParser() {
+			return parser;
+		}
+
+		/**
+		 * @param parser
+		 *            the parser to set
+		 */
+		public void setParser(PackParser parser) {
+			this.parser = parser;
+		}
+
+		/**
+		 * @return if checker should check objects.
+		 */
+		public boolean isCheckObjects() {
+			return checkObjects;
+		}
+
+		/**
+		 * @param checkObjects
+		 *            set if checker should check referenced objects outside of
+		 *            the received pack are reachable.
+		 */
+		public void setCheckObjects(boolean checkObjects) {
+			this.checkObjects = checkObjects;
+		}
+
+		/**
+		 * @return command received by the current request.
+		 */
+		public List<ReceiveCommand> getCommands() {
+			return commands;
+		}
+
+		/**
+		 * @param commands
+		 *            set command received by the current request.
+		 */
+		public void setCommands(List<ReceiveCommand> commands) {
+			this.commands = commands;
+		}
+
+		/**
+		 * @param walk
+		 *            the walk to parse commits
+		 */
+		public void setWalk(RevWalk walk) {
+			this.walk = walk;
+		}
+
+		/**
+		 * @return the walk to parse commits
+		 */
+		public RevWalk getWalk() {
+			return walk;
+		}
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/FullConnectivityChecker.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/FullConnectivityChecker.java
new file mode 100644
index 0000000..4adddf0
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/internal/FullConnectivityChecker.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2019, Google LLC  and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.transport.internal;
+
+import java.io.IOException;
+import java.util.Set;
+
+import org.eclipse.jgit.errors.MissingObjectException;
+import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectIdSubclassMap;
+import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.revwalk.ObjectWalk;
+import org.eclipse.jgit.revwalk.RevBlob;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevFlag;
+import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevSort;
+import org.eclipse.jgit.revwalk.RevTree;
+import org.eclipse.jgit.transport.ReceiveCommand;
+import org.eclipse.jgit.transport.ReceiveCommand.Result;
+
+/**
+ * A connectivity checker that uses the entire reference database to perform
+ * reachability checks when checking the connectivity of objects. If
+ * info.isCheckObjects() is set it will also check that objects referenced by
+ * deltas are either provided or reachable as well.
+ */
+public final class FullConnectivityChecker implements ConnectivityChecker {
+	@Override
+	public void checkConnectivity(ConnectivityCheckInfo connectivityCheckInfo,
+			Set<ObjectId> haves, ProgressMonitor pm)
+			throws MissingObjectException, IOException {
+		pm.beginTask(JGitText.get().countingObjects,
+				ProgressMonitor.UNKNOWN);
+		try (ObjectWalk ow = new ObjectWalk(connectivityCheckInfo.getRepository())) {
+			if (!markStartAndKnownNodes(connectivityCheckInfo, ow, haves,
+					pm)) {
+				return;
+			}
+			checkCommitTree(connectivityCheckInfo, ow, pm);
+			checkObjects(connectivityCheckInfo, ow, pm);
+		} finally {
+			pm.endTask();
+		}
+	}
+
+	/**
+	 * @param connectivityCheckInfo
+	 *            Source for connectivity check.
+	 * @param ow
+	 *            Walk which can also check blobs.
+	 * @param haves
+	 *            Set of references known for client.
+	 * @param pm
+	 *            Monitor to publish progress to.
+	 * @return true if at least one new node was marked.
+	 * @throws IOException
+	 *             an error occurred during connectivity checking.
+	 */
+	private boolean markStartAndKnownNodes(
+			ConnectivityCheckInfo connectivityCheckInfo,
+			ObjectWalk ow,
+			Set<ObjectId> haves, ProgressMonitor pm)
+			throws IOException {
+		boolean markTrees = connectivityCheckInfo
+				.isCheckObjects()
+				&& !connectivityCheckInfo.getParser().getBaseObjectIds()
+						.isEmpty();
+		if (connectivityCheckInfo.isCheckObjects()) {
+			ow.sort(RevSort.TOPO);
+			if (!connectivityCheckInfo.getParser().getBaseObjectIds()
+					.isEmpty()) {
+				ow.sort(RevSort.BOUNDARY, true);
+			}
+		}
+		boolean hasInteresting = false;
+
+		for (ReceiveCommand cmd : connectivityCheckInfo.getCommands()) {
+			if (cmd.getResult() != Result.NOT_ATTEMPTED) {
+				continue;
+			}
+			if (cmd.getType() == ReceiveCommand.Type.DELETE) {
+				continue;
+			}
+			if (haves.contains(cmd.getNewId())) {
+				continue;
+			}
+			ow.markStart(ow.parseAny(cmd.getNewId()));
+			pm.update(1);
+			hasInteresting = true;
+		}
+		if (!hasInteresting) {
+			return false;
+		}
+		for (ObjectId have : haves) {
+			RevObject o = ow.parseAny(have);
+			ow.markUninteresting(o);
+			pm.update(1);
+
+			if (markTrees) {
+				o = ow.peel(o);
+				if (o instanceof RevCommit) {
+					o = ((RevCommit) o).getTree();
+				}
+				if (o instanceof RevTree) {
+					ow.markUninteresting(o);
+				}
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * @param connectivityCheckInfo
+	 *            Source for connectivity check.
+	 * @param ow
+	 *            Walk which can also check blobs.
+	 * @param pm
+	 *            Monitor to publish progress to.
+	 * @throws IOException
+	 *             an error occurred during connectivity checking.
+	 */
+	private void checkCommitTree(ConnectivityCheckInfo connectivityCheckInfo,
+			ObjectWalk ow,
+			ProgressMonitor pm) throws IOException {
+		RevCommit c;
+		ObjectIdSubclassMap<ObjectId> newObjectIds = connectivityCheckInfo
+				.getParser()
+				.getNewObjectIds();
+		while ((c = ow.next()) != null) {
+			pm.update(1);
+			if (connectivityCheckInfo.isCheckObjects()
+					&& !c.has(RevFlag.UNINTERESTING)
+					&& !newObjectIds.contains(c)) {
+				throw new MissingObjectException(c, Constants.TYPE_COMMIT);
+			}
+		}
+	}
+
+	/**
+	 * @param connectivityCheckInfo
+	 *            Source for connectivity check.
+	 * @param ow
+	 *            Walk which can also check blobs.
+	 * @param pm
+	 *            Monitor to publish progress to.
+	 * @throws IOException
+	 *             an error occurred during connectivity checking.
+	 *
+	 */
+	private void checkObjects(ConnectivityCheckInfo connectivityCheckInfo,
+			ObjectWalk ow,
+			ProgressMonitor pm) throws IOException {
+		RevObject o;
+		ObjectIdSubclassMap<ObjectId> newObjectIds = connectivityCheckInfo
+				.getParser()
+				.getNewObjectIds();
+
+		while ((o = ow.nextObject()) != null) {
+			pm.update(1);
+			if (o.has(RevFlag.UNINTERESTING)) {
+				continue;
+			}
+
+			if (connectivityCheckInfo.isCheckObjects()) {
+				if (newObjectIds.contains(o)) {
+					continue;
+				}
+				throw new MissingObjectException(o, o.getType());
+
+			}
+
+			if (o instanceof RevBlob
+					&& !connectivityCheckInfo.getRepository().getObjectDatabase()
+							.has(o)) {
+				throw new MissingObjectException(o, Constants.TYPE_BLOB);
+			}
+		}
+
+		if (connectivityCheckInfo.isCheckObjects()) {
+			for (ObjectId id : connectivityCheckInfo.getParser()
+					.getBaseObjectIds()) {
+				o = ow.parseAny(id);
+				if (!o.has(RevFlag.UNINTERESTING)) {
+					throw new MissingObjectException(o, o.getType());
+				}
+			}
+		}
+	}
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
index c6a6899..1af11b2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
@@ -252,12 +252,13 @@ private static Date parse_simple(String dateStr,
 	}
 
 	// tries to parse a string with a relative time specification
+	@SuppressWarnings("nls")
 	private static Date parse_relative(String dateStr, Calendar now) {
 		Calendar cal;
 		SystemReader sysRead = SystemReader.getInstance();
 
 		// check for the static words "yesterday" or "now"
-		if ("now".equals(dateStr)) { //$NON-NLS-1$
+		if ("now".equals(dateStr)) {
 			return ((now == null) ? new Date(sysRead.getCurrentTime()) : now
 					.getTime());
 		}
@@ -269,7 +270,7 @@ private static Date parse_relative(String dateStr, Calendar now) {
 		} else
 			cal = (Calendar) now.clone();
 
-		if ("yesterday".equals(dateStr)) { //$NON-NLS-1$
+		if ("yesterday".equals(dateStr)) {
 			cal.add(Calendar.DATE, -1);
 			cal.set(Calendar.HOUR_OF_DAY, 0);
 			cal.set(Calendar.MINUTE, 0);
@@ -280,12 +281,12 @@ private static Date parse_relative(String dateStr, Calendar now) {
 		}
 
 		// parse constructs like "3 days ago", "5.week.2.day.ago"
-		String[] parts = dateStr.split("\\.| "); //$NON-NLS-1$
+		String[] parts = dateStr.split("\\.| ");
 		int partsLength = parts.length;
 		// check we have an odd number of parts (at least 3) and that the last
 		// part is "ago"
 		if (partsLength < 3 || (partsLength & 1) == 0
-				|| !"ago".equals(parts[parts.length - 1])) //$NON-NLS-1$
+				|| !"ago".equals(parts[parts.length - 1]))
 			return null;
 		int number;
 		for (int i = 0; i < parts.length - 2; i += 2) {
@@ -294,27 +295,41 @@ private static Date parse_relative(String dateStr, Calendar now) {
 			} catch (NumberFormatException e) {
 				return null;
 			}
-			if ("year".equals(parts[i + 1]) || "years".equals(parts[i + 1])) //$NON-NLS-1$ //$NON-NLS-2$
-				cal.add(Calendar.YEAR, -number);
-			else if ("month".equals(parts[i + 1]) //$NON-NLS-1$
-					|| "months".equals(parts[i + 1])) //$NON-NLS-1$
-				cal.add(Calendar.MONTH, -number);
-			else if ("week".equals(parts[i + 1]) //$NON-NLS-1$
-					|| "weeks".equals(parts[i + 1])) //$NON-NLS-1$
-				cal.add(Calendar.WEEK_OF_YEAR, -number);
-			else if ("day".equals(parts[i + 1]) || "days".equals(parts[i + 1])) //$NON-NLS-1$ //$NON-NLS-2$
-				cal.add(Calendar.DATE, -number);
-			else if ("hour".equals(parts[i + 1]) //$NON-NLS-1$
-					|| "hours".equals(parts[i + 1])) //$NON-NLS-1$
-				cal.add(Calendar.HOUR_OF_DAY, -number);
-			else if ("minute".equals(parts[i + 1]) //$NON-NLS-1$
-					|| "minutes".equals(parts[i + 1])) //$NON-NLS-1$
-				cal.add(Calendar.MINUTE, -number);
-			else if ("second".equals(parts[i + 1]) //$NON-NLS-1$
-					|| "seconds".equals(parts[i + 1])) //$NON-NLS-1$
-				cal.add(Calendar.SECOND, -number);
-			else
+			if (parts[i + 1] == null){
 				return null;
+			}
+			switch (parts[i + 1]) {
+			case "year":
+			case "years":
+				cal.add(Calendar.YEAR, -number);
+				break;
+			case "month":
+			case "months":
+				cal.add(Calendar.MONTH, -number);
+				break;
+			case "week":
+			case "weeks":
+				cal.add(Calendar.WEEK_OF_YEAR, -number);
+				break;
+			case "day":
+			case "days":
+				cal.add(Calendar.DATE, -number);
+				break;
+			case "hour":
+			case "hours":
+				cal.add(Calendar.HOUR_OF_DAY, -number);
+				break;
+			case "minute":
+			case "minutes":
+				cal.add(Calendar.MINUTE, -number);
+				break;
+			case "second":
+			case "seconds":
+				cal.add(Calendar.SECOND, -number);
+				break;
+			default:
+				return null;
+			}
 		}
 		return cal.getTime();
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
index f4b6f9d..b2e3446 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
@@ -121,7 +121,7 @@ public static String capitalize(String str) {
 		if (str == null || (strLen = str.length()) == 0) {
 			return str;
 		}
-		return new StringBuffer(strLen)
+		return new StringBuilder(strLen)
 				.append(Character.toTitleCase(str.charAt(0)))
 				.append(str.substring(1)).toString();
 	}
@@ -322,16 +322,21 @@ public static String replaceLineBreaksWithSpace(String in) {
 		int o = 0;
 		for (int i = 0; i < buf.length; ++i) {
 			char ch = in.charAt(i);
-			if (ch == '\r') {
+			switch (ch) {
+			case '\r':
 				if (i + 1 < buf.length && in.charAt(i + 1) == '\n') {
 					buf[o++] = ' ';
 					++i;
 				} else
 					buf[o++] = ' ';
-			} else if (ch == '\n')
+				break;
+			case '\n':
 				buf[o++] = ' ';
-			else
+				break;
+			default:
 				buf[o++] = ch;
+				break;
+			}
 		}
 		return new String(buf, 0, o);
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
index d8cfee7..8eca6dc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoCRLFOutputStream.java
@@ -129,9 +129,11 @@ public void write(byte[] b, int startOff, int startLen)
 		}
 		for (int i = off; i < off + len; ++i) {
 			final byte c = b[i];
-			if (c == '\r') {
+			switch (c) {
+			case '\r':
 				buf = '\r';
-			} else if (c == '\n') {
+				break;
+			case '\n':
 				if (buf != '\r') {
 					if (lastw < i) {
 						out.write(b, lastw, i - lastw);
@@ -140,8 +142,10 @@ public void write(byte[] b, int startOff, int startLen)
 					lastw = i;
 				}
 				buf = -1;
-			} else {
+				break;
+			default:
 				buf = -1;
+				break;
 			}
 		}
 		if (lastw < off + len) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
index 908d0a0..e235aa0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/AutoLFOutputStream.java
@@ -138,14 +138,16 @@ public void write(byte[] b, int startOff, int startLen)
 		}
 		for (int i = off; i < off + len; ++i) {
 			final byte c = b[i];
-			if (c == '\r') {
+			switch (c) {
+			case '\r':
 				// skip write r but backlog r
 				if (lastw < i) {
 					out.write(b, lastw, i - lastw);
 				}
 				lastw = i + 1;
 				buf = '\r';
-			} else if (c == '\n') {
+				break;
+			case '\n':
 				if (buf == '\r') {
 					out.write('\n');
 					lastw = i + 1;
@@ -156,12 +158,14 @@ public void write(byte[] b, int startOff, int startLen)
 					}
 					lastw = i + 1;
 				}
-			} else {
+				break;
+			default:
 				if (buf == '\r') {
 					out.write('\r');
 					lastw = i;
 				}
 				buf = -1;
+				break;
 			}
 		}
 		if (lastw < off + len) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
index 1ad6602..661b194 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/sha1/SHA1.java
@@ -325,11 +325,14 @@ private void compress() {
 
 	private void recompress(int t) {
 		State s;
-		if (t == 58) {
+		switch (t) {
+		case 58:
 			s = state58;
-		} else if (t == 65) {
+			break;
+		case 65:
 			s = state65;
-		} else {
+			break;
+		default:
 			throw new IllegalStateException();
 		}
 		int a = s.a, b = s.b, c = s.c, d = s.d, e = s.e;
diff --git a/pom.xml b/pom.xml
index 963380f..702e52d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>org.eclipse.jgit-parent</artifactId>
   <packaging>pom</packaging>
-  <version>5.6.1-SNAPSHOT</version>
+  <version>5.7.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
@@ -184,7 +184,7 @@
     <maven.compiler.target>1.8</maven.compiler.target>
     <bundle-manifest>${project.build.directory}/META-INF/MANIFEST.MF</bundle-manifest>
 
-    <jgit-last-release-version>5.4.0.201906121030-r</jgit-last-release-version>
+    <jgit-last-release-version>5.6.0.201912101111-r</jgit-last-release-version>
     <apache-sshd-version>2.2.0</apache-sshd-version>
     <jsch-version>0.1.55</jsch-version>
     <jzlib-version>1.1.1</jzlib-version>
@@ -195,7 +195,7 @@
     <commons-compress-version>1.18</commons-compress-version>
     <osgi-core-version>4.3.1</osgi-core-version>
     <servlet-api-version>3.1.0</servlet-api-version>
-    <jetty-version>9.4.22.v20191022</jetty-version>
+    <jetty-version>9.4.24.v20191120</jetty-version>
     <japicmp-version>0.14.1</japicmp-version>
     <httpclient-version>4.5.6</httpclient-version>
     <httpcore-version>4.4.10</httpcore-version>
@@ -285,7 +285,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-source-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.2.1</version>
         </plugin>
 
         <plugin>
@@ -890,7 +890,7 @@
               <dependency>
                 <groupId>com.google.errorprone</groupId>
                 <artifactId>error_prone_core</artifactId>
-                <version>2.3.3</version>
+                <version>2.3.4</version>
               </dependency>
             </dependencies>
           </plugin>
@@ -928,7 +928,7 @@
               <dependency>
                 <groupId>org.eclipse.jdt</groupId>
                 <artifactId>ecj</artifactId>
-                <version>3.19.0</version>
+                <version>3.20.0</version>
               </dependency>
             </dependencies>
           </plugin>