Merge branch 'stable-5.0'

* stable-5.0:
  Prepare 5.0.1-SNAPSHOT builds
  JGit v5.0.0.201806131550-r
  JGit v5.0.0.201806131210-r
  Downgrade Apache httpclient to 4.5.2.v20170210-0925
  RefUpdateTest: Refactor to not use deprecated Repository#getAllRefs
  Propagate failure of ssh command to caller of SshSupport
  Make JGit describe behaves same as c-git for lightweight tags
  Fix issues with LFS on GitHub (SSH)

Change-Id: I0471440919adfdbfc72996711d9e0bbd1f3cf477
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 5ae5e2a..bd3c963 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -4,13 +4,13 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.ant.test
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.ant.tasks;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.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 46dfbc3..3765582 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 5bad4c6..d4dc839 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ant
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)"
+  org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)"
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
-Export-Package: org.eclipse.jgit.ant.tasks;version="5.0.1";
+Export-Package: org.eclipse.jgit.ant.tasks;version="5.1.0";
  uses:="org.apache.tools.ant.types,org.apache.tools.ant"
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 0a2a816..4fe0f3f 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.0.1-SNAPSHOT</version>
+		<version>5.1.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 3b84511..3fd49f7 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.archive
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -13,15 +13,15 @@
  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.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.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.0.1";
+Export-Package: org.eclipse.jgit.archive;version="5.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.api,
    org.apache.commons.compress.archivers,
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index 0e7fc63..ae65f94 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.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="5.0.1.qualifier";roots="."
+Bundle-Version: 5.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="5.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 164131d..1b4a994 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index c849069..fb9ec51 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.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
@@ -23,10 +23,10 @@
  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.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="5.0.1";
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="5.1.0";
   uses:="org.apache.http.client,
    org.eclipse.jgit.transport.http,
    org.apache.http.entity,
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index 797a9a3..844cb00 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.0.1-SNAPSHOT</version>
+		<version>5.1.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 93b1a9e..33057c3 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.http.server;version="5.0.1",
- org.eclipse.jgit.http.server.glue;version="5.0.1";
+Export-Package: org.eclipse.jgit.http.server;version="5.1.0",
+ org.eclipse.jgit.http.server.glue;version="5.1.0";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="5.0.1";
+ org.eclipse.jgit.http.server.resolver;version="5.1.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -18,12 +18,12 @@
 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.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.resolver;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)"
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)"
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index b14da3b..815afae 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 1c62d30..0bb8050 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.http.test
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -25,25 +25,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.0.1,5.1.0)",
- org.eclipse.jgit.http.server;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.http.server.glue;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.http.server.resolver;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.resolver;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.http.server;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.http.server.glue;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.http.server.resolver;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.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 61bba27..c4a8580 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index 1eb83fe..31f9e2c 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.junit.http
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 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.0.1,5.1.0)",
- org.eclipse.jgit.http.server;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.resolver;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.http.server;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.1.0,5.2.0)",
  org.junit;version="[4.12,5.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="5.0.1";
+Export-Package: org.eclipse.jgit.junit.http;version="5.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.junit,
    javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 2e2f09a..77d9372 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 5c1bf39..1ed1a55 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,31 +3,31 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.junit
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.api;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.dircache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.merge;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.io;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.time;version="[5.0.1,5.1.0)",
+Import-Package: org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.dircache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.merge;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.io;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.time;version="[5.1.0,5.2.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.model;version="[4.12,5.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="5.0.1";
+Export-Package: org.eclipse.jgit.junit;version="5.1.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -36,4 +36,4 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.storage.file,
    org.eclipse.jgit.api",
- org.eclipse.jgit.junit.time;version="5.0.1"
+ org.eclipse.jgit.junit.time;version="5.1.0"
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 017d5c0..589e641 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
index d23c0d3..29a4100 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
@@ -757,7 +757,7 @@ public RevCommit cherryPick(AnyObjectId id) throws Exception {
 	public void updateServerInfo() throws Exception {
 		if (db instanceof FileRepository) {
 			final FileRepository fr = (FileRepository) db;
-			RefWriter rw = new RefWriter(fr.getAllRefs().values()) {
+			RefWriter rw = new RefWriter(fr.getRefDatabase().getRefs()) {
 				@Override
 				protected void writeFile(String name, byte[] bin)
 						throws IOException {
@@ -852,7 +852,7 @@ public void fsck(RevObject... tips) throws MissingObjectException,
 				for (RevObject o : tips)
 					ow.markStart(ow.parseAny(o));
 			} else {
-				for (Ref r : db.getAllRefs().values())
+				for (Ref r : db.getRefDatabase().getRefs())
 					ow.markStart(ow.parseAny(r.getObjectId()));
 			}
 
@@ -905,7 +905,7 @@ public void packAndPrune() throws Exception {
 			final File pack, idx;
 			try (PackWriter pw = new PackWriter(db)) {
 				Set<ObjectId> all = new HashSet<>();
-				for (Ref r : db.getAllRefs().values())
+				for (Ref r : db.getRefDatabase().getRefs())
 					all.add(r.getObjectId());
 				pw.preparePack(m, all, PackWriter.NONE);
 
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 ea474cc..6962942 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 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.0.1,5.1.0)",
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.server;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.server.fs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.test;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.server;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.test;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.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 de827f8..6848a01 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 8792944..eceb02b 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs.server;version="5.0.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="5.1.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="5.0.1";
+ org.eclipse.jgit.lfs.server.fs;version="5.1.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.0.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="5.0.1";
+ org.eclipse.jgit.lfs.server.internal;version="5.1.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="5.1.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.0.1,5.1.0)",
- org.eclipse.jgit.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.annotations;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 2dfbe15..5c64b93 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 986ddab..91f0d22 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,23 +3,23 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
+Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.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.0.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="5.1.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 6006df3..a0bd8fd 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 fb73576..dcfe841 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,34 +3,33 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.lfs
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs;version="5.0.1",
- org.eclipse.jgit.lfs.errors;version="5.0.1",
- org.eclipse.jgit.lfs.internal;version="5.0.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.0.1"
+Export-Package: org.eclipse.jgit.lfs;version="5.1.0",
+ org.eclipse.jgit.lfs.errors;version="5.1.0",
+ org.eclipse.jgit.lfs.internal;version="5.1.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.1.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.0.1,5.1.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.attributes;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.diff;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.hooks;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.io;version="[5.0.1,5.1.0)",
- org.slf4j;version="[1.7.0,2.0.0)"
+ org.eclipse.jgit.annotations;version="[5.1.0,5.2.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.attributes;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.diff;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.hooks;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.io;version="[5.1.0,5.2.0)"
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index 0d6b8ca..7628eb2 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 d6cea9d..1e28693 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.0.1.qualifier"
+      version="5.1.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 f27e18e..bcb943f 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 418417f..6372eed 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.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
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 33abc97..ca2f59a 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 f35ba69..271eb61 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.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
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 bab44b2..8add83c 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 647e29c..99d68ee 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.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
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 62af5b5..36d8b87 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 a9d8826..6864b8b 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.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -31,8 +31,8 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="5.0.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="5.0.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="5.1.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="5.1.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 8e8cffa..37fe1af 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
index 5fb7fa8..cd25071 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm.source"
       label="%featureName"
-      version="5.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
index 16ded58..74f9e6a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>5.0.1-SNAPSHOT</version>
+    <version>5.1.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 edc2abc..7904064 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 0cd5fc9..9086623 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.0.1.qualifier"
+      version="5.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
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 29ffacf..1f589a7 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.0.1-SNAPSHOT</version>
+    <version>5.1.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 05e7d23..d728459 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.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
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 f2fcad4..6ac5e24 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.target</artifactId>
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 9777529..b48c484 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -53,7 +53,7 @@
 
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>jgit.tycho.parent</artifactId>
-  <version>5.0.1-SNAPSHOT</version>
+  <version>5.1.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 6a59dfa..d5e8fc4 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.pgm.test
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.api;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.diff;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.dircache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="5.0.1",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.merge;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.pgm;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.pgm.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.pgm.opt;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.io;version="[5.0.1,5.1.0)",
+Import-Package: org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.diff;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.dircache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="5.1.0",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.merge;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.pgm;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.pgm.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.pgm.opt;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.io;version="[5.1.0,5.2.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 d31b1f7..ac30368 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index 06108c2..56c1141 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.pgm
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
@@ -28,49 +28,49 @@
  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.0.1,5.1.0)",
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.archive;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.awtui;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.blame;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.diff;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.dircache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.gitrepo;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.ketch;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.io;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.server;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.server.fs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs.server.s3;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.merge;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.notes;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revplot;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.resolver;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.io;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.archive;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.awtui;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.blame;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.diff;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.dircache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.gitrepo;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.ketch;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.io;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.server;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.merge;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.notes;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revplot;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.io;version="[5.1.0,5.2.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.0.1";
+Export-Package: org.eclipse.jgit.console;version="5.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="5.0.1";
+ org.eclipse.jgit.pgm;version="5.1.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.pgm.opt,
@@ -81,11 +81,11 @@
    org.eclipse.jgit.treewalk,
    javax.swing,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.pgm.debug;version="5.0.1";
+ org.eclipse.jgit.pgm.debug;version="5.1.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.pgm.internal;version="5.0.1";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="5.0.1";
+ org.eclipse.jgit.pgm.internal;version="5.1.0";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
+ org.eclipse.jgit.pgm.opt;version="5.1.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 3f2a6a3..affd3c9 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.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="5.0.1.qualifier";roots="."
+Bundle-Version: 5.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="5.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 59c110f..d050e79 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index b54e6a4..e0ad0b4 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -3,58 +3,58 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.test
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  com.jcraft.jsch;version="[0.1.54,0.2.0)",
- org.eclipse.jgit.api;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.api.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.attributes;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.awtui;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.blame;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.diff;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.dircache;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.events;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.fnmatch;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.gitrepo;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.hooks;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.ignore;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.ignore.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.fsck;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.io;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.junit;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lfs;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.merge;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.notes;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.patch;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.pgm;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.pgm.internal;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revplot;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.file;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.storage.pack;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.submodule;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.http;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport.resolver;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.io;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util.sha1;version="[5.0.1,5.1.0)",
+ org.eclipse.jgit.api;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.api.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.attributes;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.awtui;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.blame;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.diff;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.dircache;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.events;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.fnmatch;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.gitrepo;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.hooks;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.ignore;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.ignore.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.fsck;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.io;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.junit;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lfs;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.merge;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.notes;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.patch;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.pgm;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.pgm.internal;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revplot;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.file;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.storage.pack;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.submodule;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.http;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.io;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util.sha1;version="[5.1.0,5.2.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)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 730d3bb..c2fd83e 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
@@ -153,7 +153,7 @@
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
-          <argLine>-Xmx256m -Dfile.encoding=UTF-8 -Djava.io.tmpdir=${project.build.directory}</argLine>
+          <argLine>-Xmx1024m -Dfile.encoding=UTF-8 -Djava.io.tmpdir=${project.build.directory}</argLine>
           <includes>
             <include>**/*Test.java</include>
             <include>**/*Tests.java</include>
diff --git a/org.eclipse.jgit.test/tests.bzl b/org.eclipse.jgit.test/tests.bzl
index b1b7b7a..64dfe07 100644
--- a/org.eclipse.jgit.test/tests.bzl
+++ b/org.eclipse.jgit.test/tests.bzl
@@ -42,6 +42,10 @@
         '//lib:jsch',
       ]
 
+    heap_size = "-Xmx256m"
+    if src.endswith("HugeCommitMessageTest.java"):
+      heap_size = "-Xmx512m"
+
     junit_tests(
       name = name,
       tags = labels,
@@ -57,5 +61,5 @@
         '//org.eclipse.jgit.lfs:jgit-lfs',
       ],
       flaky = flaky,
-      jvm_flags = ["-Xmx256m", "-Dfile.encoding=UTF-8"],
+      jvm_flags = [heap_size, "-Dfile.encoding=UTF-8"],
     )
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
index 1af37e2..ca86d81 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
@@ -245,7 +245,7 @@ public void testPushRefUpdate() throws Exception {
 				git.add().addFilepattern("f" + i).call();
 				commit = git.commit().setMessage("adding f" + i).call();
 				git.push().setRemote("test").call();
-				git2.getRepository().getAllRefs();
+				git2.getRepository().getRefDatabase().getRefs();
 				assertEquals("failed to update on attempt " + i, commit.getId(),
 						git2.getRepository().resolve("refs/heads/test"));
 			}
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 5b567d0..bfa30d5 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
@@ -972,7 +972,7 @@ private void run(DfsGarbageCollector gc) throws IOException {
 	private static boolean isReachable(Repository repo, AnyObjectId id)
 			throws IOException {
 		try (RevWalk rw = new RevWalk(repo)) {
-			for (Ref ref : repo.getAllRefs().values()) {
+			for (Ref ref : repo.getRefDatabase().getRefs()) {
 				rw.markStart(rw.parseCommit(ref.getObjectId()));
 			}
 			for (RevCommit next; (next = rw.next()) != null;) {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackDescriptionTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackDescriptionTest.java
new file mode 100644
index 0000000..55e1a9c
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsPackDescriptionTest.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2018, Google LLC.
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.jgit.internal.storage.dfs;
+
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.COMPACT;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC_REST;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC_TXN;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.INSERT;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.RECEIVE;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.UNREACHABLE_GARBAGE;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
+import static org.junit.Assert.assertEquals;
+
+import java.util.Comparator;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DfsPackDescriptionTest {
+	private AtomicInteger counter;
+
+	@Before
+	public void setUp() {
+		counter = new AtomicInteger();
+	}
+
+	@Test
+	public void objectLookupComparatorEqual() throws Exception {
+		DfsPackDescription a = create(RECEIVE);
+		a.setFileSize(PACK, 1);
+		a.setFileSize(INDEX, 1);
+		a.setLastModified(1);
+		a.setObjectCount(1);
+		a.setMaxUpdateIndex(1);
+
+		DfsPackDescription b = create(INSERT);
+		b.setFileSize(PACK, 1);
+		b.setFileSize(INDEX, 2);
+		b.setLastModified(1);
+		b.setObjectCount(1);
+		b.setMaxUpdateIndex(2);
+
+		assertComparesEqual(DfsPackDescription.objectLookupComparator(), a, b);
+	}
+
+	@Test
+	public void objectLookupComparatorPackSource() throws Exception {
+		DfsPackDescription a = create(COMPACT);
+		a.setFileSize(PACK, 2);
+		a.setLastModified(1);
+		a.setObjectCount(2);
+
+		DfsPackDescription b = create(GC);
+		b.setFileSize(PACK, 1);
+		b.setLastModified(2);
+		b.setObjectCount(1);
+
+		assertComparesLessThan(DfsPackDescription.objectLookupComparator(), a, b);
+	}
+
+	@Test
+	public void objectLookupComparatorCustomPackSourceComparator()
+			throws Exception {
+		DfsPackDescription a = create(GC);
+
+		DfsPackDescription b = create(COMPACT);
+
+		assertComparesLessThan(DfsPackDescription.objectLookupComparator(), b, a);
+		assertComparesLessThan(
+				DfsPackDescription.objectLookupComparator(
+					new PackSource.ComparatorBuilder()
+						.add(GC)
+						.add(INSERT, RECEIVE, GC_REST, GC_TXN, UNREACHABLE_GARBAGE)
+						.add(COMPACT)
+						.build()),
+				a, b);
+	}
+
+	@Test
+	public void objectLookupComparatorGcFileSize() throws Exception {
+		// a is older and smaller.
+		DfsPackDescription a = create(GC_REST);
+		a.setFileSize(PACK, 100);
+		a.setLastModified(1);
+		a.setObjectCount(2);
+
+		// b is newer and larger.
+		DfsPackDescription b = create(GC_REST);
+		b.setFileSize(PACK, 200);
+		b.setLastModified(2);
+		b.setObjectCount(1);
+
+		// Since they have the same GC type, tiebreaker is size, and a comes first.
+		assertComparesLessThan(DfsPackDescription.objectLookupComparator(), a, b);
+	}
+
+	@Test
+	public void objectLookupComparatorNonGcLastModified()
+			throws Exception {
+		// a is older and smaller.
+		DfsPackDescription a = create(INSERT);
+		a.setFileSize(PACK, 100);
+		a.setLastModified(1);
+		a.setObjectCount(2);
+
+		// b is newer and larger.
+		DfsPackDescription b = create(INSERT);
+		b.setFileSize(PACK, 200);
+		b.setLastModified(2);
+		b.setObjectCount(1);
+
+		// Since they have the same type but not GC, tiebreaker is last modified,
+		// and b comes first.
+		assertComparesLessThan(DfsPackDescription.objectLookupComparator(), b, a);
+	}
+
+	@Test
+	public void objectLookupComparatorObjectCount() throws Exception {
+		DfsPackDescription a = create(INSERT);
+		a.setObjectCount(1);
+
+		DfsPackDescription b = create(INSERT);
+		b.setObjectCount(2);
+
+		assertComparesLessThan(DfsPackDescription.objectLookupComparator(), a, b);
+	}
+
+	@Test
+	public void reftableComparatorEqual() throws Exception {
+		DfsPackDescription a = create(INSERT);
+		a.setFileSize(PACK, 100);
+		a.setObjectCount(1);
+
+		DfsPackDescription b = create(INSERT);
+		b.setFileSize(PACK, 200);
+		a.setObjectCount(2);
+
+		assertComparesEqual(DfsPackDescription.reftableComparator(), a, b);
+	}
+
+	@Test
+	public void reftableComparatorPackSource() throws Exception {
+		DfsPackDescription a = create(INSERT);
+		a.setMaxUpdateIndex(1);
+		a.setLastModified(1);
+
+		DfsPackDescription b = create(GC);
+		b.setMaxUpdateIndex(2);
+		b.setLastModified(2);
+
+		assertComparesLessThan(DfsPackDescription.reftableComparator(), b, a);
+	}
+
+	@Test
+	public void reftableComparatorMaxUpdateIndex() throws Exception {
+		DfsPackDescription a = create(INSERT);
+		a.setMaxUpdateIndex(1);
+		a.setLastModified(2);
+
+		DfsPackDescription b = create(INSERT);
+		b.setMaxUpdateIndex(2);
+		b.setLastModified(1);
+
+		assertComparesLessThan(DfsPackDescription.reftableComparator(), a, b);
+	}
+
+	@Test
+	public void reftableComparatorLastModified() throws Exception {
+		DfsPackDescription a = create(INSERT);
+		a.setLastModified(1);
+
+		DfsPackDescription b = create(INSERT);
+		b.setLastModified(2);
+
+		assertComparesLessThan(DfsPackDescription.reftableComparator(), a, b);
+	}
+
+	@Test
+	public void reuseComparatorEqual() throws Exception {
+		DfsPackDescription a = create(RECEIVE);
+		a.setFileSize(PACK, 1);
+		a.setFileSize(INDEX, 1);
+		a.setLastModified(1);
+		a.setObjectCount(1);
+		a.setMaxUpdateIndex(1);
+
+		DfsPackDescription b = create(INSERT);
+		b.setFileSize(PACK, 2);
+		b.setFileSize(INDEX, 2);
+		b.setLastModified(2);
+		b.setObjectCount(2);
+		b.setMaxUpdateIndex(2);
+
+		assertComparesEqual(DfsPackDescription.reuseComparator(), a, b);
+	}
+
+	@Test
+	public void reuseComparatorGcPackSize() throws Exception {
+		DfsPackDescription a = create(GC_REST);
+		a.setFileSize(PACK, 1);
+		a.setFileSize(INDEX, 1);
+		a.setLastModified(2);
+		a.setObjectCount(1);
+		a.setMaxUpdateIndex(1);
+
+		DfsPackDescription b = create(GC_REST);
+		b.setFileSize(PACK, 2);
+		b.setFileSize(INDEX, 2);
+		b.setLastModified(1);
+		b.setObjectCount(2);
+		b.setMaxUpdateIndex(2);
+
+		assertComparesLessThan(DfsPackDescription.reuseComparator(), b, a);
+	}
+
+	private DfsPackDescription create(PackSource source) {
+		return new DfsPackDescription(
+				new DfsRepositoryDescription("repo"),
+				"pack_" + counter.incrementAndGet(),
+				source);
+	}
+
+	private static <T> void assertComparesEqual(
+			Comparator<T> comparator, T o1, T o2) {
+		assertEquals(
+				"first object must compare equal to itself",
+				0, comparator.compare(o1, o1));
+		assertEquals(
+				"second object must compare equal to itself",
+				0, comparator.compare(o2, o2));
+		assertEquals(
+				"first object must compare equal to second object",
+				0, comparator.compare(o1, o2));
+	}
+
+	private static <T> void assertComparesLessThan(
+			Comparator<T> comparator, T o1, T o2) {
+		assertEquals(
+				"first object must compare equal to itself",
+				0, comparator.compare(o1, o1));
+		assertEquals(
+				"second object must compare equal to itself",
+				0, comparator.compare(o2, o2));
+		assertEquals(
+				"first object must compare less than second object",
+				-1, comparator.compare(o1, o2));
+	}
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/PackSourceTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/PackSourceTest.java
new file mode 100644
index 0000000..7bf1f58
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/PackSourceTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2018, Google LLC.
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.jgit.internal.storage.dfs;
+
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.COMPACT;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.DEFAULT_COMPARATOR;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC_REST;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.GC_TXN;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.INSERT;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.RECEIVE;
+import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.UNREACHABLE_GARBAGE;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class PackSourceTest {
+	@Test
+	public void defaultComaprator() throws Exception {
+		assertEquals(0, DEFAULT_COMPARATOR.compare(INSERT, INSERT));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(RECEIVE, RECEIVE));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(COMPACT, COMPACT));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(GC, GC));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(GC_REST, GC_REST));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(GC_TXN, GC_TXN));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(UNREACHABLE_GARBAGE, UNREACHABLE_GARBAGE));
+
+		assertEquals(0, DEFAULT_COMPARATOR.compare(INSERT, RECEIVE));
+		assertEquals(0, DEFAULT_COMPARATOR.compare(RECEIVE, INSERT));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(INSERT, COMPACT));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(COMPACT, INSERT));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(RECEIVE, COMPACT));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(COMPACT, RECEIVE));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(COMPACT, GC));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(GC, COMPACT));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(GC, GC_REST));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(GC_REST, GC));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(GC_REST, GC_TXN));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(GC_TXN, GC_REST));
+
+		assertEquals(-1, DEFAULT_COMPARATOR.compare(GC_TXN, UNREACHABLE_GARBAGE));
+		assertEquals(1, DEFAULT_COMPARATOR.compare(UNREACHABLE_GARBAGE, GC_TXN));
+	}
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/HugeCommitMessageTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/HugeCommitMessageTest.java
new file mode 100644
index 0000000..4193c4b
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/HugeCommitMessageTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018, Thomas Wolf <thomas.wolf@paranor.ch>
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.jgit.lib;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.storage.file.WindowCacheConfig;
+import org.eclipse.jgit.storage.pack.PackConfig;
+import org.junit.Test;
+
+public class HugeCommitMessageTest extends RepositoryTestCase {
+
+	private static final int HUGE_SIZE = Math.max(15 * WindowCacheConfig.MB,
+			PackConfig.DEFAULT_BIG_FILE_THRESHOLD + WindowCacheConfig.MB);
+	// Larger than the 5MB fallback limit in RevWalk.getCachedBytes(RevObject
+	// obj, ObjectLoader ldr), and also larger than the default
+	// streamFileThreshold.
+
+	@Test
+	public void testHugeCommitMessage() throws Exception {
+		try (Git git = new Git(db)) {
+			writeTrashFile("foo", "foo");
+			git.add().addFilepattern("foo").call();
+			WindowCacheConfig wc = new WindowCacheConfig();
+			wc.setStreamFileThreshold(HUGE_SIZE + WindowCacheConfig.MB);
+			wc.install();
+			RevCommit commit = git.commit()
+					.setMessage(insanelyHugeCommitMessage()).call();
+			Ref master = db.findRef("master");
+			List<Ref> actual = git.branchList().setContains(commit.getName())
+					.call();
+			assertTrue("Should be contained in branch master",
+					actual.contains(master));
+		}
+	}
+
+	private String insanelyHugeCommitMessage() {
+		final String oneLine = "012345678901234567890123456789012345678901234567890123456789\n";
+		StringBuilder b = new StringBuilder(HUGE_SIZE + oneLine.length());
+		// Give the message a real header; otherwise even writing the reflog
+		// message may run into troubles because RevCommit.getShortMessage()
+		// will return the whole message.
+		b.append("An insanely huge commit message\n\n");
+		while (b.length() < HUGE_SIZE) {
+			b.append(oneLine);
+		}
+		return b.toString();
+	}
+
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
index 2481e64..a42027b 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
@@ -58,7 +58,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.List;
-import java.util.Map;
+import java.util.Optional;
 import java.util.TreeSet;
 
 import org.eclipse.jgit.lib.Ref.Storage;
@@ -148,17 +148,22 @@ public void testReadAllIncludingSymrefs() throws Exception {
 		ObjectId r = db.resolve("refs/remotes/origin/HEAD");
 		assertEquals(masterId, r);
 
-		Map<String, Ref> allRefs = db.getAllRefs();
-		Ref refHEAD = allRefs.get("refs/remotes/origin/HEAD");
-		assertNotNull(refHEAD);
-		assertEquals(masterId, refHEAD.getObjectId());
-		assertFalse(refHEAD.isPeeled());
-		assertNull(refHEAD.getPeeledObjectId());
+		List<Ref> allRefs = db.getRefDatabase().getRefs();
+		Optional<Ref> refHEAD = allRefs.stream()
+				.filter(ref -> ref.getName().equals("refs/remotes/origin/HEAD"))
+				.findAny();
+		assertTrue(refHEAD.isPresent());
+		assertEquals(masterId, refHEAD.get().getObjectId());
+		assertFalse(refHEAD.get().isPeeled());
+		assertNull(refHEAD.get().getPeeledObjectId());
 
-		Ref refmaster = allRefs.get("refs/remotes/origin/master");
-		assertEquals(masterId, refmaster.getObjectId());
-		assertFalse(refmaster.isPeeled());
-		assertNull(refmaster.getPeeledObjectId());
+		Optional<Ref> refmaster = allRefs.stream().filter(
+				ref -> ref.getName().equals("refs/remotes/origin/master"))
+				.findAny();
+		assertTrue(refmaster.isPresent());
+		assertEquals(masterId, refmaster.get().getObjectId());
+		assertFalse(refmaster.get().isPeeled());
+		assertNull(refmaster.get().getPeeledObjectId());
 	}
 
 	@Test
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkUtilsReachableTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkUtilsReachableTest.java
index a26ae10..cb92a95 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkUtilsReachableTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevWalkUtilsReachableTest.java
@@ -115,7 +115,7 @@ private Ref branch(String name, RevCommit dst) throws Exception {
 	}
 
 	private void assertContains(RevCommit commit, Collection<Ref> refsThatShouldContainCommit) throws Exception {
-		Collection<Ref> allRefs = db.getAllRefs().values();
+		Collection<Ref> allRefs = db.getRefDatabase().getRefs();
 		Collection<Ref> sortedRefs = RefComparator.sort(allRefs);
 		List<Ref> actual = RevWalkUtils.findBranchesReachableFrom(commit,
 				rw, sortedRefs);
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index e01ec10..c8d6d4d 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: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit.ui
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.jgit.awtui;version="5.0.1"
-Import-Package: org.eclipse.jgit.errors;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.lib;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.nls;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revplot;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.revwalk;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.transport;version="[5.0.1,5.1.0)",
- org.eclipse.jgit.util;version="[5.0.1,5.1.0)"
+Export-Package: org.eclipse.jgit.awtui;version="5.1.0"
+Import-Package: org.eclipse.jgit.errors;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.lib;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.nls;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revplot;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.revwalk;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.transport;version="[5.1.0,5.2.0)",
+ org.eclipse.jgit.util;version="[5.1.0,5.2.0)"
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index 2c548ff..b52840d 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index a52ea43..82e088c 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@
 Bundle-Name: %plugin_name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.jgit.annotations;version="5.0.1",
- org.eclipse.jgit.api;version="5.0.1";
+Export-Package: org.eclipse.jgit.annotations;version="5.1.0",
+ org.eclipse.jgit.api;version="5.1.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
@@ -22,52 +22,52 @@
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="5.0.1",
- org.eclipse.jgit.blame;version="5.0.1";
+ org.eclipse.jgit.api.errors;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
+ org.eclipse.jgit.attributes;version="5.1.0",
+ org.eclipse.jgit.blame;version="5.1.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.0.1";
+ org.eclipse.jgit.diff;version="5.1.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.0.1";
+ org.eclipse.jgit.dircache;version="5.1.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.0.1";
+ org.eclipse.jgit.errors;version="5.1.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.0.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="5.0.1",
- org.eclipse.jgit.gitrepo;version="5.0.1";
+ org.eclipse.jgit.events;version="5.1.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.fnmatch;version="5.1.0",
+ org.eclipse.jgit.gitrepo;version="5.1.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.0.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="5.0.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="5.0.1",
- org.eclipse.jgit.ignore.internal;version="5.0.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="5.0.1";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.fsck;version="5.0.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.ketch;version="5.0.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.dfs;version="5.0.1";
+ org.eclipse.jgit.gitrepo.internal;version="5.1.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="5.1.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="5.1.0",
+ org.eclipse.jgit.ignore.internal;version="5.1.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal;version="5.1.0";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
+ org.eclipse.jgit.internal.fsck;version="5.1.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal.ketch;version="5.1.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.dfs;version="5.1.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.0.1";
+ org.eclipse.jgit.internal.storage.file;version="5.1.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -75,12 +75,12 @@
    org.eclipse.jgit.lfs,
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test",
- org.eclipse.jgit.internal.storage.io;version="5.0.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.pack;version="5.0.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="5.0.1";
+ org.eclipse.jgit.internal.storage.io;version="5.1.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.pack;version="5.1.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.reftable;version="5.1.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.0.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.lib;version="5.0.1";
+ org.eclipse.jgit.internal.storage.reftree;version="5.1.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.lib;version="5.1.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
@@ -90,33 +90,33 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.submodule",
- org.eclipse.jgit.lib.internal;version="5.0.1";x-internal:=true,
- org.eclipse.jgit.merge;version="5.0.1";
+ org.eclipse.jgit.lib.internal;version="5.1.0";x-internal:=true,
+ org.eclipse.jgit.merge;version="5.1.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.0.1",
- org.eclipse.jgit.notes;version="5.0.1";
+ org.eclipse.jgit.nls;version="5.1.0",
+ org.eclipse.jgit.notes;version="5.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="5.0.1";
+ org.eclipse.jgit.patch;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
+ org.eclipse.jgit.revplot;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
+ org.eclipse.jgit.revwalk;version="5.1.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.0.1";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="5.0.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
- org.eclipse.jgit.transport;version="5.0.1";
+ org.eclipse.jgit.revwalk.filter;version="5.1.0";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.file;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.pack;version="5.1.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.submodule;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.transport;version="5.1.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.internal.storage.pack,
@@ -128,24 +128,24 @@
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.errors,
    org.eclipse.jgit.storage.pack",
- org.eclipse.jgit.transport.http;version="5.0.1";uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="5.0.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
- org.eclipse.jgit.treewalk;version="5.0.1";
+ org.eclipse.jgit.transport.http;version="5.1.0";uses:="javax.net.ssl",
+ org.eclipse.jgit.transport.resolver;version="5.1.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
+ org.eclipse.jgit.treewalk;version="5.1.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.0.1";uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="5.0.1";
+ org.eclipse.jgit.treewalk.filter;version="5.1.0";uses:="org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.util;version="5.1.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.0.1",
- org.eclipse.jgit.util.sha1;version="5.0.1",
- org.eclipse.jgit.util.time;version="5.0.1"
+ org.eclipse.jgit.util.io;version="5.1.0",
+ org.eclipse.jgit.util.sha1;version="5.1.0",
+ org.eclipse.jgit.util.time;version="5.1.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 28f663a..99e4c0c 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.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="5.0.1.qualifier";roots="."
+Bundle-Version: 5.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="5.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 2d52a2e..9dc588d 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.0.1-SNAPSHOT</version>
+    <version>5.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsFsck.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsFsck.java
index 985393c..3f96d09 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsFsck.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsFsck.java
@@ -146,7 +146,7 @@ private void checkConnectivity(ProgressMonitor pm, FsckError errors)
 			throws IOException {
 		pm.beginTask(JGitText.get().countingObjects, ProgressMonitor.UNKNOWN);
 		try (ObjectWalk ow = new ObjectWalk(repo)) {
-			for (Ref r : repo.getAllRefs().values()) {
+			for (Ref r : repo.getRefDatabase().getRefs()) {
 				ObjectId objectId = r.getObjectId();
 				if (objectId == null) {
 					// skip unborn branch
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
index ca54ee2..09d5937 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsObjDatabase.java
@@ -43,13 +43,17 @@
 
 package org.eclipse.jgit.internal.storage.dfs;
 
+import static java.util.stream.Collectors.joining;
+
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -86,10 +90,16 @@ public void markDirty() {
 		}
 	};
 
-	/** Sources for a pack file. */
+	/**
+	 * Sources for a pack file.
+	 * <p>
+	 * <strong>Note:</strong> When sorting packs by source, do not use the default
+	 * comparator based on {@link Enum#compareTo}. Prefer {@link
+	 * #DEFAULT_COMPARATOR} or your own {@link ComparatorBuilder}.
+	 */
 	public static enum PackSource {
 		/** The pack is created by ObjectInserter due to local activity. */
-		INSERT(0),
+		INSERT,
 
 		/**
 		 * The pack is created by PackParser due to a network event.
@@ -100,7 +110,7 @@ public static enum PackSource {
 		 * storage layout preferred by this version. Received packs are likely
 		 * to be either compacted or garbage collected in the future.
 		 */
-		RECEIVE(0),
+		RECEIVE,
 
 		/**
 		 * The pack was created by compacting multiple packs together.
@@ -111,7 +121,7 @@ public static enum PackSource {
 		 *
 		 * @see DfsPackCompactor
 		 */
-		COMPACT(1),
+		COMPACT,
 
 		/**
 		 * Pack was created by Git garbage collection by this implementation.
@@ -122,17 +132,17 @@ public static enum PackSource {
 		 *
 		 * @see DfsGarbageCollector
 		 */
-		GC(2),
+		GC,
 
 		/** Created from non-heads by {@link DfsGarbageCollector}. */
-		GC_REST(3),
+		GC_REST,
 
 		/**
 		 * RefTreeGraph pack was created by Git garbage collection.
 		 *
 		 * @see DfsGarbageCollector
 		 */
-		GC_TXN(4),
+		GC_TXN,
 
 		/**
 		 * Pack was created by Git garbage collection.
@@ -141,12 +151,86 @@ public static enum PackSource {
 		 * last GC pass. It is retained in a new pack until it is safe to prune
 		 * these objects from the repository.
 		 */
-		UNREACHABLE_GARBAGE(5);
+		UNREACHABLE_GARBAGE;
 
-		final int category;
+		/**
+		 * Default comparator for sources.
+		 * <p>
+		 * Sorts generally newer, smaller types such as {@code INSERT} and {@code
+		 * RECEIVE} earlier; older, larger types such as {@code GC} later; and
+		 * {@code UNREACHABLE_GARBAGE} at the end.
+		 */
+		public static final Comparator<PackSource> DEFAULT_COMPARATOR =
+				new ComparatorBuilder()
+						.add(INSERT, RECEIVE)
+						.add(COMPACT)
+						.add(GC)
+						.add(GC_REST)
+						.add(GC_TXN)
+						.add(UNREACHABLE_GARBAGE)
+						.build();
 
-		PackSource(int category) {
-			this.category = category;
+		/**
+		 * Builder for describing {@link PackSource} ordering where some values are
+		 * explicitly considered equal to others.
+		 */
+		public static class ComparatorBuilder {
+			private final Map<PackSource, Integer> ranks = new HashMap<>();
+			private int counter;
+
+			/**
+			 * Add a collection of sources that should sort as equal.
+			 * <p>
+			 * Sources in the input will sort after sources listed in previous calls
+			 * to this method.
+			 *
+			 * @param sources
+			 *            sources in this equivalence class.
+			 * @return this.
+			 */
+			public ComparatorBuilder add(PackSource... sources) {
+				for (PackSource s : sources) {
+					ranks.put(s, Integer.valueOf(counter));
+				}
+				counter++;
+				return this;
+			}
+
+			/**
+			 * Build the comparator.
+			 *
+			 * @return new comparator instance.
+			 * @throws IllegalArgumentException
+			 *             not all {@link PackSource} instances were explicitly assigned
+			 *             an equivalence class.
+			 */
+			public Comparator<PackSource> build() {
+				return new PackSourceComparator(ranks);
+			}
+		}
+
+		private static class PackSourceComparator implements Comparator<PackSource> {
+			private final Map<PackSource, Integer> ranks;
+
+			private PackSourceComparator(Map<PackSource, Integer> ranks) {
+				if (!ranks.keySet().equals(
+							new HashSet<>(Arrays.asList(PackSource.values())))) {
+					throw new IllegalArgumentException();
+				}
+				this.ranks = new HashMap<>(ranks);
+			}
+
+			@Override
+			public int compare(PackSource a, PackSource b) {
+				return ranks.get(a).compareTo(ranks.get(b));
+			}
+
+			@Override
+			public String toString() {
+				return Arrays.stream(PackSource.values())
+						.map(s -> s + "=" + ranks.get(s)) //$NON-NLS-1$
+						.collect(joining(", ", getClass().getSimpleName() + "{", "}")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			}
 		}
 	}
 
@@ -156,6 +240,8 @@ public static enum PackSource {
 
 	private DfsReaderOptions readerOptions;
 
+	private Comparator<DfsPackDescription> packComparator;
+
 	/**
 	 * Initialize an object database for our repository.
 	 *
@@ -169,6 +255,7 @@ protected DfsObjDatabase(DfsRepository repository,
 		this.repository = repository;
 		this.packList = new AtomicReference<>(NO_PACKS);
 		this.readerOptions = options;
+		this.packComparator = DfsPackDescription.objectLookupComparator();
 	}
 
 	/**
@@ -180,6 +267,21 @@ public DfsReaderOptions getReaderOptions() {
 		return readerOptions;
 	}
 
+	/**
+	 * Set the comparator used when searching for objects across packs.
+	 * <p>
+	 * An optimal comparator will find more objects without having to load large
+	 * idx files from storage only to find that they don't contain the object.
+	 * See {@link DfsPackDescription#objectLookupComparator()} for the default
+	 * heuristics.
+	 *
+	 * @param packComparator
+	 *            comparator.
+	 */
+	public void setPackComparator(Comparator<DfsPackDescription> packComparator) {
+		this.packComparator = packComparator;
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public DfsReader newReader() {
@@ -523,7 +625,7 @@ private PackList scanPacksImpl(PackList old) throws IOException {
 		Map<DfsPackDescription, DfsReftable> reftables = reftableMap(old);
 
 		List<DfsPackDescription> scanned = listPacks();
-		Collections.sort(scanned);
+		Collections.sort(scanned, packComparator);
 
 		List<DfsPackFile> newPacks = new ArrayList<>(scanned.size());
 		List<DfsReftable> newReftables = new ArrayList<>(scanned.size());
@@ -584,30 +686,9 @@ private static Map<DfsPackDescription, DfsReftable> reftableMap(PackList old) {
 	 * @return comparator to sort {@link DfsReftable} by priority.
 	 */
 	protected Comparator<DfsReftable> reftableComparator() {
-		return (fa, fb) -> {
-			DfsPackDescription a = fa.getPackDescription();
-			DfsPackDescription b = fb.getPackDescription();
-
-			// GC, COMPACT reftables first by higher category.
-			int c = category(b) - category(a);
-			if (c != 0) {
-				return c;
-			}
-
-			// Lower maxUpdateIndex first.
-			c = Long.signum(a.getMaxUpdateIndex() - b.getMaxUpdateIndex());
-			if (c != 0) {
-				return c;
-			}
-
-			// Older reftable first.
-			return Long.signum(a.getLastModified() - b.getLastModified());
-		};
-	}
-
-	static int category(DfsPackDescription d) {
-		PackSource s = d.getPackSource();
-		return s != null ? s.category : 0;
+		return Comparator.comparing(
+				DfsReftable::getPackDescription,
+				DfsPackDescription.reftableComparator());
 	}
 
 	/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java
index b43b9b1..127ee6b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackCompactor.java
@@ -404,12 +404,11 @@ private void addObjectsToPack(PackWriter pw, DfsReader ctx,
 		// Sort packs by description ordering, this places newer packs before
 		// older packs, allowing the PackWriter to be handed newer objects
 		// first and older objects last.
-		Collections.sort(srcPacks, new Comparator<DfsPackFile>() {
-			@Override
-			public int compare(DfsPackFile a, DfsPackFile b) {
-				return a.getPackDescription().compareTo(b.getPackDescription());
-			}
-		});
+		Collections.sort(
+				srcPacks,
+				Comparator.comparing(
+						DfsPackFile::getPackDescription,
+						DfsPackDescription.objectLookupComparator()));
 
 		rw = new RevWalk(ctx);
 		added = rw.newFlag("ADDED"); //$NON-NLS-1$
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java
index 45eb7b0..5a1ac02 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackDescription.java
@@ -47,7 +47,9 @@
 import static org.eclipse.jgit.internal.storage.pack.PackExt.REFTABLE;
 
 import java.util.Arrays;
+import java.util.Comparator;
 
+import org.eclipse.jgit.annotations.NonNull;
 import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
 import org.eclipse.jgit.internal.storage.pack.PackExt;
 import org.eclipse.jgit.internal.storage.reftable.ReftableWriter;
@@ -61,7 +63,107 @@
  * Instances of this class are cached with the DfsPackFile, and should not be
  * modified once initialized and presented to the JGit DFS library.
  */
-public class DfsPackDescription implements Comparable<DfsPackDescription> {
+public class DfsPackDescription {
+	/**
+	 * Comparator for packs when looking up objects in indexes.
+	 * <p>
+	 * This comparator tries to position packs in the order readers should examine
+	 * them when looking for objects by SHA-1. The default tries to sort packs
+	 * with more recent modification dates before older packs, and packs with
+	 * fewer objects before packs with more objects.
+	 * <p>
+	 * Uses {@link PackSource#DEFAULT_COMPARATOR} for the portion of comparison
+	 * where packs are sorted by source.
+	 *
+	 * @return comparator.
+	 */
+	public static Comparator<DfsPackDescription> objectLookupComparator() {
+		return objectLookupComparator(PackSource.DEFAULT_COMPARATOR);
+	}
+
+	/**
+	 * Comparator for packs when looking up objects in indexes.
+	 * <p>
+	 * This comparator tries to position packs in the order readers should examine
+	 * them when looking for objects by SHA-1. The default tries to sort packs
+	 * with more recent modification dates before older packs, and packs with
+	 * fewer objects before packs with more objects.
+	 *
+	 * @param packSourceComparator
+	 *            comparator for the {@link PackSource}, used as the first step in
+	 *            comparison.
+	 * @return comparator.
+	 */
+	public static Comparator<DfsPackDescription> objectLookupComparator(
+			Comparator<PackSource> packSourceComparator) {
+		return Comparator.comparing(
+					DfsPackDescription::getPackSource, packSourceComparator)
+			.thenComparing((a, b) -> {
+				PackSource as = a.getPackSource();
+				PackSource bs = b.getPackSource();
+
+				// Tie break GC type packs by smallest first. There should be at most
+				// one of each source, but when multiple exist concurrent GCs may have
+				// run. Preferring the smaller file selects higher quality delta
+				// compression, placing less demand on the DfsBlockCache.
+				if (as == bs && isGC(as)) {
+					int cmp = Long.signum(a.getFileSize(PACK) - b.getFileSize(PACK));
+					if (cmp != 0) {
+						return cmp;
+					}
+				}
+
+				// Newer packs should sort first.
+				int cmp = Long.signum(b.getLastModified() - a.getLastModified());
+				if (cmp != 0) {
+					return cmp;
+				}
+
+				// Break ties on smaller index. Readers may get lucky and find
+				// the object they care about in the smaller index. This also pushes
+				// big historical packs to the end of the list, due to more objects.
+				return Long.signum(a.getObjectCount() - b.getObjectCount());
+			});
+	}
+
+	static Comparator<DfsPackDescription> reftableComparator() {
+		return (a, b) -> {
+				// GC, COMPACT reftables first by reversing default order.
+				int c = PackSource.DEFAULT_COMPARATOR.reversed()
+						.compare(a.getPackSource(), b.getPackSource());
+				if (c != 0) {
+					return c;
+				}
+
+				// Lower maxUpdateIndex first.
+				c = Long.signum(a.getMaxUpdateIndex() - b.getMaxUpdateIndex());
+				if (c != 0) {
+					return c;
+				}
+
+				// Older reftable first.
+				return Long.signum(a.getLastModified() - b.getLastModified());
+			};
+	}
+
+	static Comparator<DfsPackDescription> reuseComparator() {
+		return (a, b) -> {
+			PackSource as = a.getPackSource();
+			PackSource bs = b.getPackSource();
+
+			if (as == bs && DfsPackDescription.isGC(as)) {
+				// Push smaller GC files last; these likely have higher quality
+				// delta compression and the contained representation should be
+				// favored over other files.
+				return Long.signum(b.getFileSize(PACK) - a.getFileSize(PACK));
+			}
+
+			// DfsPackDescription.compareTo already did a reasonable sort.
+			// Rely on Arrays.sort being stable, leaving equal elements.
+			return 0;
+		};
+	}
+
 	private final DfsRepositoryDescription repoDesc;
 	private final String packName;
 	private PackSource packSource;
@@ -93,11 +195,15 @@ public class DfsPackDescription implements Comparable<DfsPackDescription> {
 	 *            name of the pack file. Must end with ".pack".
 	 * @param repoDesc
 	 *            description of the repo containing the pack file.
+	 * @param packSource
+	 *            the source of the pack.
 	 */
-	public DfsPackDescription(DfsRepositoryDescription repoDesc, String name) {
+	public DfsPackDescription(DfsRepositoryDescription repoDesc, String name,
+			@NonNull PackSource packSource) {
 		this.repoDesc = repoDesc;
 		int dot = name.lastIndexOf('.');
 		this.packName = (dot < 0) ? name : name.substring(0, dot);
+		this.packSource = packSource;
 
 		int extCnt = PackExt.values().length;
 		sizeMap = new long[extCnt];
@@ -162,6 +268,7 @@ public DfsStreamKey getStreamKey(PackExt ext) {
 	 *
 	 * @return the source of the pack.
 	 */
+	@NonNull
 	public PackSource getPackSource() {
 		return packSource;
 	}
@@ -173,7 +280,7 @@ public PackSource getPackSource() {
 	 *            the source of the pack.
 	 * @return {@code this}
 	 */
-	public DfsPackDescription setPackSource(PackSource source) {
+	public DfsPackDescription setPackSource(@NonNull PackSource source) {
 		packSource = source;
 		return this;
 	}
@@ -455,49 +562,6 @@ public boolean equals(Object b) {
 		return false;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * <p>
-	 * Sort packs according to the optimal lookup ordering.
-	 * <p>
-	 * This method tries to position packs in the order readers should examine
-	 * them when looking for objects by SHA-1. The default tries to sort packs
-	 * with more recent modification dates before older packs, and packs with
-	 * fewer objects before packs with more objects.
-	 */
-	@Override
-	public int compareTo(DfsPackDescription b) {
-		// Cluster by PackSource, pushing UNREACHABLE_GARBAGE to the end.
-		PackSource as = getPackSource();
-		PackSource bs = b.getPackSource();
-		if (as != null && bs != null) {
-			int cmp = as.category - bs.category;
-			if (cmp != 0)
-				return cmp;
-		}
-
-		// Tie break GC type packs by smallest first. There should be at most
-		// one of each source, but when multiple exist concurrent GCs may have
-		// run. Preferring the smaller file selects higher quality delta
-		// compression, placing less demand on the DfsBlockCache.
-		if (as != null && as == bs && isGC(as)) {
-			int cmp = Long.signum(getFileSize(PACK) - b.getFileSize(PACK));
-			if (cmp != 0) {
-				return cmp;
-			}
-		}
-
-		// Newer packs should sort first.
-		int cmp = Long.signum(b.getLastModified() - getLastModified());
-		if (cmp != 0)
-			return cmp;
-
-		// Break ties on smaller index. Readers may get lucky and find
-		// the object they care about in the smaller index. This also pushes
-		// big historical packs to the end of the list, due to more objects.
-		return Long.signum(getObjectCount() - b.getObjectCount());
-	}
-
 	static boolean isGC(PackSource s) {
 		switch (s) {
 		case GC:
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
index 197114b..d04709f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java
@@ -45,7 +45,6 @@
 package org.eclipse.jgit.internal.storage.dfs;
 
 import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.UNREACHABLE_GARBAGE;
-import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
 import static org.eclipse.jgit.lib.Constants.OBJECT_ID_LENGTH;
 
 import java.io.IOException;
@@ -66,7 +65,6 @@
 import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException;
 import org.eclipse.jgit.internal.JGitText;
 import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackList;
-import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
 import org.eclipse.jgit.internal.storage.file.BitmapIndexImpl;
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 import org.eclipse.jgit.internal.storage.file.PackIndex;
@@ -611,26 +609,9 @@ private void trySelectRepresentation(PackWriter packer,
 		}
 	}
 
-	private static final Comparator<DfsPackFile> PACK_SORT_FOR_REUSE = new Comparator<DfsPackFile>() {
-		@Override
-		public int compare(DfsPackFile af, DfsPackFile bf) {
-			DfsPackDescription ad = af.getPackDescription();
-			DfsPackDescription bd = bf.getPackDescription();
-			PackSource as = ad.getPackSource();
-			PackSource bs = bd.getPackSource();
-
-			if (as != null && as == bs && DfsPackDescription.isGC(as)) {
-				// Push smaller GC files last; these likely have higher quality
-				// delta compression and the contained representation should be
-				// favored over other files.
-				return Long.signum(bd.getFileSize(PACK) - ad.getFileSize(PACK));
-			}
-
-			// DfsPackDescription.compareTo already did a reasonable sort.
-			// Rely on Arrays.sort being stable, leaving equal elements.
-			return 0;
-		}
-	};
+	private static final Comparator<DfsPackFile> PACK_SORT_FOR_REUSE =
+		Comparator.comparing(
+				DfsPackFile::getPackDescription, DfsPackDescription.reuseComparator());
 
 	private List<DfsPackFile> sortPacksForSelectRepresentation()
 			throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
index 662c3fe..5b6894d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
@@ -10,6 +10,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.jgit.annotations.Nullable;
+import org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource;
 import org.eclipse.jgit.internal.storage.pack.PackExt;
 import org.eclipse.jgit.internal.storage.reftable.ReftableConfig;
 import org.eclipse.jgit.lib.RefDatabase;
@@ -118,10 +119,10 @@ protected synchronized List<DfsPackDescription> listPacks() {
 		@Override
 		protected DfsPackDescription newPack(PackSource source) {
 			int id = packId.incrementAndGet();
-			DfsPackDescription desc = new MemPack(
+			return new MemPack(
 					"pack-" + id + "-" + source.name(), //$NON-NLS-1$ //$NON-NLS-2$
-					getRepository().getDescription());
-			return desc.setPackSource(source);
+					getRepository().getDescription(),
+					source);
 		}
 
 		@Override
@@ -169,8 +170,8 @@ public void flush() {
 	private static class MemPack extends DfsPackDescription {
 		final byte[][] fileMap = new byte[PackExt.values().length][];
 
-		MemPack(String name, DfsRepositoryDescription repoDesc) {
-			super(repoDesc, name);
+		MemPack(String name, DfsRepositoryDescription repoDesc, PackSource source) {
+			super(repoDesc, name, source);
 		}
 
 		void put(PackExt ext, byte[] data) {
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 d02888a..5ced686 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
@@ -480,7 +480,7 @@ private File descriptionFile() {
 	/**
 	 * {@inheritDoc}
 	 * <p>
-	 * Objects known to exist but not expressed by {@link #getAllRefs()}.
+	 * Objects known to exist but not expressed by {@code #getAllRefs()}.
 	 * <p>
 	 * When a repository borrows objects from another repository, it can
 	 * advertise that it safely has that other repository's references, without
@@ -493,12 +493,12 @@ public Set<ObjectId> getAdditionalHaves() {
 	}
 
 	/**
-	 * Objects known to exist but not expressed by {@link #getAllRefs()}.
+	 * Objects known to exist but not expressed by {@code #getAllRefs()}.
 	 * <p>
 	 * When a repository borrows objects from another repository, it can
 	 * advertise that it safely has that other repository's references, without
-	 * exposing any other details about the other repository.  This may help
-	 * a client trying to push changes avoid pushing more than it needs to.
+	 * exposing any other details about the other repository. This may help a
+	 * client trying to push changes avoid pushing more than it needs to.
 	 *
 	 * @param skips
 	 *            Set of AlternateHandle Ids already seen
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
index 29cc19c..d73c05e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
@@ -1094,7 +1094,9 @@ public final Ref findRef(String name) throws IOException {
 	 * not point to any object yet.
 	 *
 	 * @return mutable map of all known refs (heads, tags, remotes).
+	 * @deprecated use {@code getRefDatabase().getRefs()} instead.
 	 */
+	@Deprecated
 	@NonNull
 	public Map<String, Ref> getAllRefs() {
 		try {
diff --git a/pom.xml b/pom.xml
index 7a3236c..1cae96c 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.0.1-SNAPSHOT</version>
+  <version>5.1.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>