Merge branch 'stable-4.7'

* stable-4.7:
  Prepare 4.5.3-SNAPSHOT builds
  JGit v4.5.2.201704071617-r

Change-Id: Id52cd145a94919b43bc31274d28940c101790080
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 7720d33..83361e5 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.ant.tasks;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index 10c6301..63021ae 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 f51ec50..6f59d0b 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)"
+  org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)"
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
-Export-Package: org.eclipse.jgit.ant.tasks;version="4.7.1";
+Export-Package: org.eclipse.jgit.ant.tasks;version="4.8.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 bda8af5..9965cde 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>4.7.1-SNAPSHOT</version>
+		<version>4.8.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 fd51e30..ccbbb71 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -12,15 +12,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="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.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="4.7.1";
+Export-Package: org.eclipse.jgit.archive;version="4.8.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 09db2a4..6f25f24 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: 4.7.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="4.7.1.qualifier";roots="."
+Bundle-Version: 4.8.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="4.8.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index a1d1115..56a5b96 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 d58eed5..01ade87 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
@@ -22,10 +22,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="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="4.7.1";
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="4.8.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 c28958a..214f4ac 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>4.7.1-SNAPSHOT</version>
+		<version>4.8.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 f335b44..3e6b667 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.http.server;version="4.7.1",
- org.eclipse.jgit.http.server.glue;version="4.7.1";
+Export-Package: org.eclipse.jgit.http.server;version="4.8.0",
+ org.eclipse.jgit.http.server.glue;version="4.8.0";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="4.7.1";
+ org.eclipse.jgit.http.server.resolver;version="4.8.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -17,12 +17,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="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)"
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)"
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index 37c0c3b..3c995b4 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 61ed994..a7f7169 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -22,24 +22,24 @@
  org.eclipse.jetty.util.log;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,9.4.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.http.server;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.http.server.glue;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.http.server.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.http.server;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.http.server.glue;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.http.server.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index 51f78c9..c1edbe8 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 bd7fcfd..c611b31 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
@@ -20,16 +20,16 @@
  org.eclipse.jetty.util.component;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.log;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,9.4.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.http.server;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.http.server;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
  org.junit;version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="4.7.1";
+Export-Package: org.eclipse.jgit.junit.http;version="4.8.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 8b80738..4ec39b1 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 d9ae52b..8910659 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -2,31 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.api;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.api.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.dircache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.merge;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.io;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.time;version="[4.7.1,4.8.0)",
+Import-Package: org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.api.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.dircache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.merge;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.io;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.time;version="[4.8.0,4.9.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.rules;version="[4.9.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
  org.junit.runners.model;version="[4.5.0,5.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="4.7.1";
+Export-Package: org.eclipse.jgit.junit;version="4.8.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -35,4 +35,4 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.storage.file,
    org.eclipse.jgit.api",
- org.eclipse.jgit.junit.time;version="4.7.1"
+ org.eclipse.jgit.junit.time;version="4.8.0"
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 97cd869..fb37640 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
index 3f8762e..f78e812 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -27,11 +27,11 @@
  org.eclipse.jetty.util.log;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,9.4.0)",
- org.eclipse.jgit.junit.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.server.fs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.test;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.junit.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.test;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index ab18966..0d10fc7 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 aa2762f..d13ec99 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -2,19 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs.server;version="4.7.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="4.8.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="4.7.1";
+ org.eclipse.jgit.lfs.server.fs;version="4.8.0";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="4.7.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="4.7.1";
+ org.eclipse.jgit.lfs.server.internal;version="4.8.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="4.8.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -24,14 +24,14 @@
  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="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.annotations;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.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 5fe68de..9d487ae 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 eaabe90..78dc263 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -2,23 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
+Import-Package: org.eclipse.jgit.internal.storage.dfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
  org.junit.runners;version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="4.7.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="4.8.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 d58ff58..8268c85 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 c9ca864..daf4a56 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -2,20 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs;version="4.7.1",
- org.eclipse.jgit.lfs.errors;version="4.7.1",
- org.eclipse.jgit.lfs.internal;version="4.7.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="4.7.1"
+Export-Package: org.eclipse.jgit.lfs;version="4.8.0",
+ org.eclipse.jgit.lfs.errors;version="4.8.0",
+ org.eclipse.jgit.lfs.internal;version="4.8.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="4.8.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.annotations;version="[4.7.1,4.8.0)";resolution:=optional,
- org.eclipse.jgit.attributes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)"
+Import-Package: org.eclipse.jgit.annotations;version="[4.8.0,4.9.0)";resolution:=optional,
+ org.eclipse.jgit.attributes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)"
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index 2a517a0..f2ec75c 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 5f1dae3..4ea616f 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="4.7.1.qualifier"
+      version="4.8.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 4750750..92b9a5f 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 b925415..b7dc997 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="4.7.1.qualifier"
+      version="4.8.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 0cff96e..dfbc5ce 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 e105700..429877c 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="4.7.1.qualifier"
+      version="4.8.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 5f40e63..e3ebb83 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 6354b36..2453965 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="4.7.1.qualifier"
+      version="4.8.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 564c750..eacab7b 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 a7fe925..a7af646 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="4.7.1.qualifier"
+      version="4.8.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="4.7.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="4.7.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="4.8.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="4.8.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 d2d5394..d1498e8 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 5723818..a1f9098 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="4.7.1.qualifier"
+      version="4.8.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 e059b23..ac6f987 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 387909c..ed9446a 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 4606843..65301d6 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="4.7.1.qualifier"
+      version="4.8.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 edc749d..857d9e5 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 cceecd3..ceaf8b8 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: 4.7.1.qualifier
+Bundle-Version: 4.8.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 8716d7c..2ef4d49 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 6dcffbd..0cb41b1 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>4.7.1-SNAPSHOT</version>
+  <version>4.8.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 eb1cf15..381e272 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -2,28 +2,28 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.eclipse.jgit.api;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.api.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.diff;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.dircache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="4.7.1",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.merge;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm.opt;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.io;version="[4.7.1,4.8.0)",
+Import-Package: org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.api.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.diff;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.dircache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="4.8.0",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.merge;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm.opt;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.io;version="[4.8.0,4.9.0)",
  org.hamcrest.core;bundle-version="[1.1.0,2.0.0)",
  org.junit;version="[4.11.0,5.0.0)",
  org.junit.rules;version="[4.11.0,5.0.0)",
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index 21ae79d..d9c7d1d 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 3a97aaf..df3406c 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
@@ -27,46 +27,46 @@
  org.eclipse.jetty.util.log;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,9.4.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,9.4.0)",
- org.eclipse.jgit.api;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.api.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.archive;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.awtui;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.blame;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.diff;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.dircache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.gitrepo;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.ketch;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.server;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.server.fs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs.server.s3;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.merge;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.notes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revplot;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.io;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.api.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.archive;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.awtui;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.blame;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.diff;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.dircache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.gitrepo;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.ketch;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.server;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.merge;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.notes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revplot;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.io;version="[4.8.0,4.9.0)",
  org.kohsuke.args4j;version="[2.0.12,2.1.0)",
  org.kohsuke.args4j.spi;version="[2.0.15,2.1.0)"
-Export-Package: org.eclipse.jgit.console;version="4.7.1";
+Export-Package: org.eclipse.jgit.console;version="4.8.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="4.7.1";
+ org.eclipse.jgit.pgm;version="4.8.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.pgm.opt,
@@ -77,11 +77,11 @@
    org.eclipse.jgit.treewalk,
    javax.swing,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.pgm.debug;version="4.7.1";
+ org.eclipse.jgit.pgm.debug;version="4.8.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.pgm.internal;version="4.7.1";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="4.7.1";
+ org.eclipse.jgit.pgm.internal;version="4.8.0";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
+ org.eclipse.jgit.pgm.opt;version="4.8.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 f6d2297..5b80357 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: 4.7.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="4.7.1.qualifier";roots="."
+Bundle-Version: 4.8.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="4.8.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index d3f34d2..9bb8bfd 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.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 00659d8..4b2e535 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -2,54 +2,54 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.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)",
- org.eclipse.jgit.api;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.api.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.attributes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.awtui;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.blame;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.diff;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.dircache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.events;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.fnmatch;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.gitrepo;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.hooks;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.ignore;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.ignore.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.merge;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.notes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.patch;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revplot;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.submodule;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.io;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.sha1;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.api.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.attributes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.awtui;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.blame;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.diff;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.dircache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.events;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.fnmatch;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.gitrepo;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.hooks;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.ignore;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.ignore.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.merge;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.notes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.patch;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revplot;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.submodule;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.io;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.sha1;version="[4.8.0,4.9.0)",
  org.junit;version="[4.4.0,5.0.0)",
  org.junit.experimental.theories;version="[4.4.0,5.0.0)",
  org.junit.rules;version="[4.11.0,5.0.0)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index aac4c33..e3b0dcd 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
index b8f8dcb..4130b7e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
@@ -196,6 +196,32 @@
 	}
 
 	@Test
+	public void testEdit_DeleteNearCommonTail() {
+		EditList r = diff(t("aCq}nD}nb"), t("aq}nb"));
+		assertEquals(new Edit(1, 2, 1, 1), r.get(0));
+		assertEquals(new Edit(5, 8, 4, 4), r.get(1));
+		assertEquals(2, r.size());
+	}
+
+	@Test
+	public void testEdit_DeleteNearCommonCenter() {
+		EditList r = diff(t("abcd123123uvwxpq"), t("aBcd123uvwxPq"));
+		assertEquals(new Edit(1, 2, 1, 2), r.get(0));
+		assertEquals(new Edit(7, 10, 7, 7), r.get(1));
+		assertEquals(new Edit(14, 15, 11, 12), r.get(2));
+		assertEquals(3, r.size());
+	}
+
+	@Test
+	public void testEdit_InsertNearCommonCenter() {
+		EditList r = diff(t("aBcd123uvwxPq"), t("abcd123123uvwxpq"));
+		assertEquals(new Edit(1, 2, 1, 2), r.get(0));
+		assertEquals(new Edit(7, 7, 7, 10), r.get(1));
+		assertEquals(new Edit(11, 12, 14, 15), r.get(2));
+		assertEquals(3, r.size());
+	}
+
+	@Test
 	public void testEdit_LinuxBug() {
 		EditList r = diff(t("a{bcdE}z"), t("a{0bcdEE}z"));
 		assertEquals(new Edit(2, 2, 2, 3), r.get(0));
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
index d4a3d62..5af62b6 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
@@ -132,6 +132,45 @@
 	}
 
 	/**
+	 * Merge two modifications with a shared delete at the end. The underlying
+	 * diff algorithm has to provide consistent edit results to get the expected
+	 * merge result.
+	 *
+	 * @throws IOException
+	 */
+	@Test
+	public void testTwoModificationsWithSharedDelete() throws IOException {
+		assertEquals(t("Cb}n}"),
+				merge("ab}n}n}", "ab}n}", "Cb}n}"));
+	}
+
+	/**
+	 * Merge modifications with a shared insert in the middle. The
+	 * underlying diff algorithm has to provide consistent edit
+	 * results to get the expected merge result.
+	 *
+	 * @throws IOException
+	 */
+	@Test
+	public void testModificationsWithMiddleInsert() throws IOException {
+		assertEquals(t("aBcd123123uvwxPq"),
+				merge("abcd123uvwxpq", "aBcd123123uvwxPq", "abcd123123uvwxpq"));
+	}
+
+	/**
+	 * Merge modifications with a shared delete in the middle. The
+	 * underlying diff algorithm has to provide consistent edit
+	 * results to get the expected merge result.
+	 *
+	 * @throws IOException
+	 */
+	@Test
+	public void testModificationsWithMiddleDelete() throws IOException {
+		assertEquals(t("Abz}z123Q"),
+				merge("abz}z}z123q", "Abz}z123Q", "abz}z123q"));
+	}
+
+	/**
 	 * Test a conflicting region at the very start of the text.
 	 *
 	 * @throws IOException
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
index a08dbbc..d8b8750 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
@@ -42,12 +42,17 @@
  */
 package org.eclipse.jgit.merge;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.util.Arrays;
 
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.MergeResult;
@@ -59,8 +64,14 @@
 import org.eclipse.jgit.errors.NoMergeBaseException;
 import org.eclipse.jgit.errors.NoMergeBaseException.MergeBaseFailureReason;
 import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
 import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevTree;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.FileTreeIterator;
 import org.eclipse.jgit.util.FS;
 import org.eclipse.jgit.util.FileUtils;
@@ -408,7 +419,7 @@
 
 	/**
 	 * Merging two equal subtrees with an incore merger should lead to a merged
-	 * state (The 'Gerrit' use case).
+	 * state.
 	 *
 	 * @param strategy
 	 * @throws Exception
@@ -442,6 +453,43 @@
 	}
 
 	/**
+	 * Merging two equal subtrees with an incore merger should lead to a merged
+	 * state, without using a Repository (the 'Gerrit' use case).
+	 *
+	 * @param strategy
+	 * @throws Exception
+	 */
+	@Theory
+	public void checkMergeEqualTreesInCore_noRepo(MergeStrategy strategy)
+			throws Exception {
+		Git git = Git.wrap(db);
+
+		writeTrashFile("d/1", "orig");
+		git.add().addFilepattern("d/1").call();
+		RevCommit first = git.commit().setMessage("added d/1").call();
+
+		writeTrashFile("d/1", "modified");
+		RevCommit masterCommit = git.commit().setAll(true)
+				.setMessage("modified d/1 on master").call();
+
+		git.checkout().setCreateBranch(true).setStartPoint(first)
+				.setName("side").call();
+		writeTrashFile("d/1", "modified");
+		RevCommit sideCommit = git.commit().setAll(true)
+				.setMessage("modified d/1 on side").call();
+
+		git.rm().addFilepattern("d/1").call();
+		git.rm().addFilepattern("d").call();
+
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			ThreeWayMerger resolveMerger =
+					(ThreeWayMerger) strategy.newMerger(ins, db.getConfig());
+			boolean noProblems = resolveMerger.merge(masterCommit, sideCommit);
+			assertTrue(noProblems);
+		}
+	}
+
+	/**
 	 * Merging two equal subtrees when the index and HEAD does not contain any
 	 * file in that subtree should lead to a merged state.
 	 *
@@ -586,6 +634,136 @@
 		}
 	}
 
+	@Theory
+	public void checkContentMergeNoConflict(MergeStrategy strategy)
+			throws Exception {
+		Git git = Git.wrap(db);
+
+		writeTrashFile("file", "1\n2\n3");
+		git.add().addFilepattern("file").call();
+		RevCommit first = git.commit().setMessage("added file").call();
+
+		writeTrashFile("file", "1master\n2\n3");
+		git.commit().setAll(true).setMessage("modified file on master").call();
+
+		git.checkout().setCreateBranch(true).setStartPoint(first)
+				.setName("side").call();
+		writeTrashFile("file", "1\n2\n3side");
+		RevCommit sideCommit = git.commit().setAll(true)
+				.setMessage("modified file on side").call();
+
+		git.checkout().setName("master").call();
+		MergeResult result =
+				git.merge().setStrategy(strategy).include(sideCommit).call();
+		assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+		String expected = "1master\n2\n3side";
+		assertEquals(expected, read("file"));
+	}
+
+	@Theory
+	public void checkContentMergeNoConflict_noRepo(MergeStrategy strategy)
+			throws Exception {
+		Git git = Git.wrap(db);
+
+		writeTrashFile("file", "1\n2\n3");
+		git.add().addFilepattern("file").call();
+		RevCommit first = git.commit().setMessage("added file").call();
+
+		writeTrashFile("file", "1master\n2\n3");
+		RevCommit masterCommit = git.commit().setAll(true)
+				.setMessage("modified file on master").call();
+
+		git.checkout().setCreateBranch(true).setStartPoint(first)
+				.setName("side").call();
+		writeTrashFile("file", "1\n2\n3side");
+		RevCommit sideCommit = git.commit().setAll(true)
+				.setMessage("modified file on side").call();
+
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			ResolveMerger merger =
+					(ResolveMerger) strategy.newMerger(ins, db.getConfig());
+			boolean noProblems = merger.merge(masterCommit, sideCommit);
+			assertTrue(noProblems);
+			assertEquals("1master\n2\n3side",
+					readBlob(merger.getResultTreeId(), "file"));
+		}
+	}
+
+	@Theory
+	public void checkContentMergeConflict(MergeStrategy strategy)
+			throws Exception {
+		Git git = Git.wrap(db);
+
+		writeTrashFile("file", "1\n2\n3");
+		git.add().addFilepattern("file").call();
+		RevCommit first = git.commit().setMessage("added file").call();
+
+		writeTrashFile("file", "1master\n2\n3");
+		git.commit().setAll(true).setMessage("modified file on master").call();
+
+		git.checkout().setCreateBranch(true).setStartPoint(first)
+				.setName("side").call();
+		writeTrashFile("file", "1side\n2\n3");
+		RevCommit sideCommit = git.commit().setAll(true)
+				.setMessage("modified file on side").call();
+
+		git.checkout().setName("master").call();
+		MergeResult result =
+				git.merge().setStrategy(strategy).include(sideCommit).call();
+		assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+		String expected = "<<<<<<< HEAD\n"
+				+ "1master\n"
+				+ "=======\n"
+				+ "1side\n"
+				+ ">>>>>>> " + sideCommit.name() + "\n"
+				+ "2\n"
+				+ "3";
+		assertEquals(expected, read("file"));
+	}
+
+	@Theory
+	public void checkContentMergeConflict_noTree(MergeStrategy strategy)
+			throws Exception {
+		Git git = Git.wrap(db);
+
+		writeTrashFile("file", "1\n2\n3");
+		git.add().addFilepattern("file").call();
+		RevCommit first = git.commit().setMessage("added file").call();
+
+		writeTrashFile("file", "1master\n2\n3");
+		RevCommit masterCommit = git.commit().setAll(true)
+				.setMessage("modified file on master").call();
+
+		git.checkout().setCreateBranch(true).setStartPoint(first)
+				.setName("side").call();
+		writeTrashFile("file", "1side\n2\n3");
+		RevCommit sideCommit = git.commit().setAll(true)
+				.setMessage("modified file on side").call();
+
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			ResolveMerger merger =
+					(ResolveMerger) strategy.newMerger(ins, db.getConfig());
+			boolean noProblems = merger.merge(masterCommit, sideCommit);
+			assertFalse(noProblems);
+			assertEquals(Arrays.asList("file"), merger.getUnmergedPaths());
+
+			MergeFormatter fmt = new MergeFormatter();
+			merger.getMergeResults().get("file");
+			try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+				fmt.formatMerge(out, merger.getMergeResults().get("file"),
+						"BASE", "OURS", "THEIRS", UTF_8.name());
+				String expected = "<<<<<<< OURS\n"
+						+ "1master\n"
+						+ "=======\n"
+						+ "1side\n"
+						+ ">>>>>>> THEIRS\n"
+						+ "2\n"
+						+ "3";
+				assertEquals(expected, new String(out.toByteArray(), UTF_8));
+			}
+		}
+	}
+
 	/**
 	 * Merging after criss-cross merges. In this case we merge together two
 	 * commits which have two equally good common ancestors
@@ -817,4 +995,15 @@
 						curMod >= lastMod);
 		}
 	}
+
+	private String readBlob(ObjectId treeish, String path) throws Exception {
+		TestRepository<?> tr = new TestRepository<>(db);
+		RevWalk rw = tr.getRevWalk();
+		RevTree tree = rw.parseTree(treeish);
+		RevObject obj = tr.get(tree, path);
+		if (obj == null) {
+			return null;
+		}
+		return new String(rw.getObjectReader().open(obj, OBJ_BLOB).getBytes(), UTF_8);
+	}
 }
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
index db9d87d..951568e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
@@ -72,6 +72,16 @@
 	}
 
 	@Test
+	public void testOurs_noRepo() throws IOException {
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			Merger ourMerger = MergeStrategy.OURS.newMerger(ins, db.getConfig());
+			boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
+			assertTrue(merge);
+			assertEquals(db.resolve("a^{tree}"), ourMerger.getResultTreeId());
+		}
+	}
+
+	@Test
 	public void testTheirs() throws IOException {
 		Merger ourMerger = MergeStrategy.THEIRS.newMerger(db);
 		boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
@@ -80,6 +90,16 @@
 	}
 
 	@Test
+	public void testTheirs_noRepo() throws IOException {
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			Merger ourMerger = MergeStrategy.THEIRS.newMerger(db);
+			boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
+			assertTrue(merge);
+			assertEquals(db.resolve("c^{tree}"), ourMerger.getResultTreeId());
+		}
+	}
+
+	@Test
 	public void testTrivialTwoWay() throws IOException {
 		Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
 		boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
@@ -104,6 +124,16 @@
 	}
 
 	@Test
+	public void testTrivialTwoWay_noRepo() throws IOException {
+		try (ObjectInserter ins = db.newObjectInserter()) {
+			Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(ins, db.getConfig());
+			boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a^0^0^0"), db.resolve("a^0^0^1") });
+			assertTrue(merge);
+			assertEquals(db.resolve("a^0^0^{tree}"), ourMerger.getResultTreeId());
+		}
+	}
+
+	@Test
 	public void testTrivialTwoWay_conflict() throws IOException {
 		Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
 		boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("f"), db.resolve("g") });
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index d8eb622..8ab9024 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.jgit.awtui;version="4.7.1"
-Import-Package: org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revplot;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)"
+Export-Package: org.eclipse.jgit.awtui;version="4.8.0"
+Import-Package: org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revplot;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)"
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index 557f613..10b9374 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
index 6441232..03c6ce5 100644
--- a/org.eclipse.jgit/.settings/.api_filters
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -43,6 +43,14 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="src/org/eclipse/jgit/merge/MergeStrategy.java" type="org.eclipse.jgit.merge.MergeStrategy">
+        <filter comment="OSGi semantic versioning allows breaking implementors of an API in a minor version" id="336695337">
+            <message_arguments>
+                <message_argument value="org.eclipse.jgit.merge.MergeStrategy"/>
+                <message_argument value="newMerger(ObjectInserter, Config)"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="src/org/eclipse/jgit/transport/http/HttpConnection.java" type="org.eclipse.jgit.transport.http.HttpConnection">
         <filter comment="OSGi semantic versioning rules allow to break implementors in minor releases" id="403767336">
             <message_arguments>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index 5ba934a..e4791dc 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.jgit.annotations;version="4.7.1",
- org.eclipse.jgit.api;version="4.7.1";
+Export-Package: org.eclipse.jgit.annotations;version="4.8.0",
+ org.eclipse.jgit.api;version="4.8.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
@@ -21,51 +21,51 @@
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="4.7.1",
- org.eclipse.jgit.blame;version="4.7.1";
+ org.eclipse.jgit.api.errors;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
+ org.eclipse.jgit.attributes;version="4.8.0",
+ org.eclipse.jgit.blame;version="4.8.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="4.7.1";
+ org.eclipse.jgit.diff;version="4.8.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="4.7.1";
+ org.eclipse.jgit.dircache;version="4.8.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="4.7.1";
+ org.eclipse.jgit.errors;version="4.8.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="4.7.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="4.7.1",
- org.eclipse.jgit.gitrepo;version="4.7.1";
+ org.eclipse.jgit.events;version="4.8.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.fnmatch;version="4.8.0",
+ org.eclipse.jgit.gitrepo;version="4.8.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="4.7.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="4.7.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="4.7.1",
- org.eclipse.jgit.ignore.internal;version="4.7.1";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="4.7.1";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.ketch;version="4.7.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.dfs;version="4.7.1";
+ org.eclipse.jgit.gitrepo.internal;version="4.8.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="4.8.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="4.8.0",
+ org.eclipse.jgit.ignore.internal;version="4.8.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal;version="4.8.0";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
+ org.eclipse.jgit.internal.ketch;version="4.8.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.dfs;version="4.8.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="4.7.1";
+ org.eclipse.jgit.internal.storage.file;version="4.8.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -73,9 +73,9 @@
    org.eclipse.jgit.lfs,
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test",
- org.eclipse.jgit.internal.storage.pack;version="4.7.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftree;version="4.7.1";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.lib;version="4.7.1";
+ org.eclipse.jgit.internal.storage.pack;version="4.8.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.reftree;version="4.8.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.lib;version="4.8.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
@@ -85,32 +85,32 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.submodule",
- org.eclipse.jgit.merge;version="4.7.1";
+ org.eclipse.jgit.merge;version="4.8.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="4.7.1",
- org.eclipse.jgit.notes;version="4.7.1";
+ org.eclipse.jgit.nls;version="4.8.0",
+ org.eclipse.jgit.notes;version="4.8.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="4.7.1";
+ org.eclipse.jgit.patch;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
+ org.eclipse.jgit.revplot;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
+ org.eclipse.jgit.revwalk;version="4.8.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="4.7.1";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="4.7.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
- org.eclipse.jgit.transport;version="4.7.1";
+ org.eclipse.jgit.revwalk.filter;version="4.8.0";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.file;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.pack;version="4.8.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.submodule;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.transport;version="4.8.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.internal.storage.pack,
@@ -122,24 +122,24 @@
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.errors,
    org.eclipse.jgit.storage.pack",
- org.eclipse.jgit.transport.http;version="4.7.1";uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="4.7.1";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
- org.eclipse.jgit.treewalk;version="4.7.1";
+ org.eclipse.jgit.transport.http;version="4.8.0";uses:="javax.net.ssl",
+ org.eclipse.jgit.transport.resolver;version="4.8.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
+ org.eclipse.jgit.treewalk;version="4.8.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="4.7.1";uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="4.7.1";
+ org.eclipse.jgit.treewalk.filter;version="4.8.0";uses:="org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.util;version="4.8.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="4.7.1",
- org.eclipse.jgit.util.sha1;version="4.7.1",
- org.eclipse.jgit.util.time;version="4.7.1"
+ org.eclipse.jgit.util.io;version="4.8.0",
+ org.eclipse.jgit.util.sha1;version="4.8.0",
+ org.eclipse.jgit.util.time;version="4.8.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 18abbbd..bee6802 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: 4.7.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="4.7.1.qualifier";roots="."
+Bundle-Version: 4.8.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="4.8.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 9d84146..849b567 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>4.7.1-SNAPSHOT</version>
+    <version>4.8.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
index 4ac399f..da076dc 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -538,6 +538,7 @@
 renamesRejoiningModifies=Rejoining modified file pairs
 repositoryAlreadyExists=Repository already exists: {0}
 repositoryConfigFileInvalid=Repository config file {0} invalid {1}
+repositoryIsRequired=repository is required
 repositoryNotFound=repository not found: {0}
 repositoryState_applyMailbox=Apply mailbox
 repositoryState_bare=Bare
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
index bd6e5c8..5f01366 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
@@ -121,23 +121,7 @@
 			Subsequence<S> as = Subsequence.a(a, region);
 			Subsequence<S> bs = Subsequence.b(b, region);
 			EditList e = Subsequence.toBase(diffNonCommon(cs, as, bs), as, bs);
-
-			// The last insertion may need to be shifted later if it
-			// inserts elements that were previously reduced out as
-			// common at the end.
-			//
-			Edit last = e.get(e.size() - 1);
-			if (last.getType() == Edit.Type.INSERT) {
-				while (last.endB < b.size()
-						&& cmp.equals(b, last.beginB, b, last.endB)) {
-					last.beginA++;
-					last.endA++;
-					last.beginB++;
-					last.endB++;
-				}
-			}
-
-			return e;
+			return normalize(cmp, e, a, b);
 		}
 
 		case EMPTY:
@@ -153,6 +137,107 @@
 	}
 
 	/**
+	 * Reorganize an {@link EditList} for better diff consistency.
+	 * <p>
+	 * {@code DiffAlgorithms} may return {@link Edit.Type#INSERT} or
+	 * {@link Edit.Type#DELETE} edits that can be "shifted". For
+	 * example, the deleted section
+	 * <pre>
+	 * -a
+	 * -b
+	 * -c
+	 *  a
+	 *  b
+	 *  c
+	 * </pre>
+	 * can be shifted down by 1, 2 or 3 locations.
+	 * <p>
+	 * To avoid later merge issues, we shift such edits to a
+	 * consistent location. {@code normalize} uses a simple strategy of
+	 * shifting such edits to their latest possible location.
+	 * <p>
+	 * This strategy may not always produce an aesthetically pleasing
+	 * diff. For instance, it works well with
+	 * <pre>
+	 *  function1 {
+	 *   ...
+	 *  }
+	 *
+	 * +function2 {
+	 * + ...
+	 * +}
+	 * +
+	 * function3 {
+	 * ...
+	 * }
+	 * </pre>
+	 * but less so for
+	 * <pre>
+	 *  #
+	 *  # comment1
+	 *  #
+	 *  function1() {
+	 *  }
+	 *
+	 *  #
+	 * +# comment3
+	 * +#
+	 * +function3() {
+	 * +}
+	 * +
+	 * +#
+	 *  # comment2
+	 *  #
+	 *  function2() {
+	 *  }
+	 * </pre>
+	 * <a href="https://github.com/mhagger/diff-slider-tools">More
+	 * sophisticated strategies</a> are possible, say by calculating a
+	 * suitable "aesthetic cost" for each possible position and using
+	 * the lowest cost, but {@code normalize} just shifts edits
+	 * to the end as much as possible.
+	 *
+	 * @param <S>
+	 *            type of sequence being compared.
+	 * @param cmp
+	 *            the comparator supplying the element equivalence function.
+	 * @param e
+	 *            a modifiable edit list comparing the provided sequences.
+	 * @param a
+	 *            the first (also known as old or pre-image) sequence.
+	 * @param b
+	 *            the second (also known as new or post-image) sequence.
+	 * @return a modifiable edit list with edit regions shifted to their
+	 *         latest possible location. The result list is never null.
+	 * @since 4.7
+	 */
+	private static <S extends Sequence> EditList normalize(
+		SequenceComparator<? super S> cmp, EditList e, S a, S b) {
+		Edit prev = null;
+		for (int i = e.size() - 1; i >= 0; i--) {
+			Edit cur = e.get(i);
+			Edit.Type curType = cur.getType();
+
+			int maxA = (prev == null) ? a.size() : prev.beginA;
+			int maxB = (prev == null) ? b.size() : prev.beginB;
+
+			if (curType == Edit.Type.INSERT) {
+				while (cur.endA < maxA && cur.endB < maxB
+					&& cmp.equals(b, cur.beginB, b, cur.endB)) {
+					cur.shift(1);
+				}
+			} else if (curType == Edit.Type.DELETE) {
+				while (cur.endA < maxA && cur.endB < maxB
+					&& cmp.equals(a, cur.beginA, a, cur.endA)) {
+					cur.shift(1);
+				}
+			}
+			prev = cur;
+		}
+		return e;
+	}
+
+	/**
 	 * Compare two sequences and identify a list of edits between them.
 	 *
 	 * This method should be invoked only after the two sequences have been
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
index 7eecd13..a2e167f 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/Edit.java
@@ -170,6 +170,21 @@
 	}
 
 	/**
+	 * Move the edit region by the specified amount.
+	 *
+	 * @param amount
+	 *            the region is shifted by this amount, and can be positive or
+	 *            negative.
+	 * @since 4.8
+	 */
+	public final void shift(int amount) {
+		beginA += amount;
+		endA += amount;
+		beginB += amount;
+		endB += amount;
+	}
+
+	/**
 	 * Construct a new edit representing the region before cut.
 	 *
 	 * @param cut
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
index a81c93a..0e52fcc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -597,6 +597,7 @@
 	/***/ public String renamesRejoiningModifies;
 	/***/ public String repositoryAlreadyExists;
 	/***/ public String repositoryConfigFileInvalid;
+	/***/ public String repositoryIsRequired;
 	/***/ public String repositoryNotFound;
 	/***/ public String repositoryState_applyMailbox;
 	/***/ public String repositoryState_bare;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeStrategy.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeStrategy.java
index 656480e..af3d5ca 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeStrategy.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeStrategy.java
@@ -49,6 +49,8 @@
 import java.util.HashMap;
 
 import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.Repository;
 
 /**
@@ -170,4 +172,20 @@
 	 * @return the new merge instance which implements this strategy.
 	 */
 	public abstract Merger newMerger(Repository db, boolean inCore);
+
+	/**
+	 * Create a new merge instance.
+	 * <p>
+	 * The merge will happen in memory, working folder will not be modified, in
+	 * case of a non-trivial merge that requires manual resolution, the merger
+	 * will fail.
+	 *
+	 * @param inserter
+	 *            inserter to write results back to.
+	 * @param config
+	 *            repo config for reading diff algorithm settings.
+	 * @return the new merge instance which implements this strategy.
+	 * @since 4.8
+	 */
+	public abstract Merger newMerger(ObjectInserter inserter, Config config);
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java
index bee2d03..0c4488c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java
@@ -47,6 +47,7 @@
 import java.io.IOException;
 import java.text.MessageFormat;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.NoMergeBaseException;
 import org.eclipse.jgit.errors.NoMergeBaseException.MergeBaseFailureReason;
@@ -70,7 +71,15 @@
  * Instance of a specific {@link MergeStrategy} for a single {@link Repository}.
  */
 public abstract class Merger {
-	/** The repository this merger operates on. */
+	/**
+	 * The repository this merger operates on.
+	 * <p>
+	 * Null if and only if the merger was constructed with {@link
+	 * #Merger(ObjectInserter)}. Callers that want to assume the repo is not null
+	 * (e.g. because of a previous check that the merger is not in-core) may use
+	 * {@link #nonNullRepo()}.
+	 */
+	@Nullable
 	protected final Repository db;
 
 	/** Reader to support {@link #walk} and other object loading. */
@@ -104,20 +113,55 @@
 	 *            the repository this merger will read and write data on.
 	 */
 	protected Merger(final Repository local) {
+		if (local == null) {
+			throw new NullPointerException(JGitText.get().repositoryIsRequired);
+		}
 		db = local;
-		inserter = db.newObjectInserter();
+		inserter = local.newObjectInserter();
 		reader = inserter.newReader();
 		walk = new RevWalk(reader);
 	}
 
 	/**
+	 * Create a new in-core merge instance from an inserter.
+	 *
+	 * @param oi
+	 *            the inserter to write objects to. Will be closed at the
+	 *            conclusion of {@code merge}, unless {@code flush} is false.
+	 * @since 4.8
+	 */
+	protected Merger(ObjectInserter oi) {
+		db = null;
+		inserter = oi;
+		reader = oi.newReader();
+		walk = new RevWalk(reader);
+	}
+
+	/**
 	 * @return the repository this merger operates on.
 	 */
+	@Nullable
 	public Repository getRepository() {
 		return db;
 	}
 
-	/** @return an object writer to create objects in {@link #getRepository()}. */
+	/**
+	 * @return non-null repository instance
+	 * @throws NullPointerException
+	 *             if the merger was constructed without a repository.
+	 * @since 4.8
+	 */
+	protected Repository nonNullRepo() {
+		if (db == null) {
+			throw new NullPointerException(JGitText.get().repositoryIsRequired);
+		}
+		return db;
+	}
+
+	/**
+	 * @return an object writer to create objects, writing objects to {@link
+	 * #getRepository()} (if a repository was provided).
+	 */
 	public ObjectInserter getObjectInserter() {
 		return inserter;
 	}
@@ -131,7 +175,9 @@
 	 *
 	 * @param oi
 	 *            the inserter instance to use. Must be associated with the
-	 *            repository instance returned by {@link #getRepository()}.
+	 *            repository instance returned by {@link #getRepository()} (if a
+	 *            repository was provided). Will be closed at the conclusion of
+	 *            {@code merge}, unless {@code flush} is false.
 	 */
 	public void setObjectInserter(ObjectInserter oi) {
 		walk.close();
@@ -173,9 +219,9 @@
 	 *
 	 * @since 3.5
 	 * @param flush
-	 *            whether to flush the underlying object inserter when finished to
-	 *            store any content-merged blobs and virtual merged bases; if
-	 *            false, callers are responsible for flushing.
+	 *            whether to flush and close the underlying object inserter when
+	 *            finished to store any content-merged blobs and virtual merged
+	 *            bases; if false, callers are responsible for flushing.
 	 * @param tips
 	 *            source trees to be combined together. The merge base is not
 	 *            included in this set.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
index f8e1998..1375cd3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/RecursiveMerger.java
@@ -61,7 +61,9 @@
 import org.eclipse.jgit.errors.NoMergeBaseException;
 import org.eclipse.jgit.internal.JGitText;
 import org.eclipse.jgit.lib.CommitBuilder;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -111,6 +113,17 @@
 	}
 
 	/**
+	 * Normal recursive merge, implies inCore.
+	 *
+	 * @param inserter
+	 * @param config
+	 * @since 4.8
+	 */
+	protected RecursiveMerger(ObjectInserter inserter, Config config) {
+		super(inserter, config);
+	}
+
+	/**
 	 * Get a single base commit for two given commits. If the two source commits
 	 * have more than one base commit recursively merge the base commits
 	 * together until you end up with a single base commit.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
index f667af2..1aac352 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
@@ -44,6 +44,9 @@
  */
 package org.eclipse.jgit.merge;
 
+import static org.eclipse.jgit.diff.DiffAlgorithm.SupportedAlgorithm.HISTOGRAM;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_DIFF_SECTION;
+import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_ALGORITHM;
 import static org.eclipse.jgit.lib.Constants.CHARACTER_ENCODING;
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 
@@ -79,9 +82,10 @@
 import org.eclipse.jgit.errors.IndexWriteException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.NoWorkTreeException;
-import org.eclipse.jgit.lib.ConfigConstants;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.FileMode;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevTree;
@@ -266,18 +270,25 @@
 	 */
 	protected MergeAlgorithm mergeAlgorithm;
 
+	private static MergeAlgorithm getMergeAlgorithm(Config config) {
+		SupportedAlgorithm diffAlg = config.getEnum(
+				CONFIG_DIFF_SECTION, null, CONFIG_KEY_ALGORITHM,
+				HISTOGRAM);
+		return new MergeAlgorithm(DiffAlgorithm.getAlgorithm(diffAlg));
+	}
+
+	private static String[] defaultCommitNames() {
+		return new String[] { "BASE", "OURS", "THEIRS" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	}
+
 	/**
 	 * @param local
 	 * @param inCore
 	 */
 	protected ResolveMerger(Repository local, boolean inCore) {
 		super(local);
-		SupportedAlgorithm diffAlg = local.getConfig().getEnum(
-				ConfigConstants.CONFIG_DIFF_SECTION, null,
-				ConfigConstants.CONFIG_KEY_ALGORITHM,
-				SupportedAlgorithm.HISTOGRAM);
-		mergeAlgorithm = new MergeAlgorithm(DiffAlgorithm.getAlgorithm(diffAlg));
-		commitNames = new String[] { "BASE", "OURS", "THEIRS" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		mergeAlgorithm = getMergeAlgorithm(local.getConfig());
+		commitNames = defaultCommitNames();
 		this.inCore = inCore;
 
 		if (inCore) {
@@ -295,10 +306,24 @@
 		this(local, false);
 	}
 
+	/**
+	 * @param inserter
+	 * @param config
+	 * @since 4.8
+	 */
+	protected ResolveMerger(ObjectInserter inserter, Config config) {
+		super(inserter);
+		mergeAlgorithm = getMergeAlgorithm(config);
+		commitNames = defaultCommitNames();
+		inCore = true;
+		implicitDirCache = false;
+		dircache = DirCache.newInCore();
+	}
+
 	@Override
 	protected boolean mergeImpl() throws IOException {
 		if (implicitDirCache)
-			dircache = getRepository().lockDirCache();
+			dircache = nonNullRepo().lockDirCache();
 
 		try {
 			return mergeTrees(mergeBase(), sourceTrees[0], sourceTrees[1],
@@ -315,7 +340,7 @@
 		// of a non-empty directory, for which delete() would fail.
 		for (int i = toBeDeleted.size() - 1; i >= 0; i--) {
 			String fileName = toBeDeleted.get(i);
-			File f = new File(db.getWorkTree(), fileName);
+			File f = new File(nonNullRepo().getWorkTree(), fileName);
 			if (!f.delete())
 				if (!f.isDirectory())
 					failingPaths.put(fileName,
@@ -348,7 +373,7 @@
 			return;
 		}
 
-		DirCache dc = db.readDirCache();
+		DirCache dc = nonNullRepo().readDirCache();
 		Iterator<String> mpathsIt=modifiedFiles.iterator();
 		while(mpathsIt.hasNext()) {
 			String mpath=mpathsIt.next();
@@ -785,8 +810,8 @@
 	 */
 	private File writeMergedFile(MergeResult<RawText> result)
 			throws FileNotFoundException, IOException {
-		File workTree = db.getWorkTree();
-		FS fs = db.getFS();
+		File workTree = nonNullRepo().getWorkTree();
+		FS fs = nonNullRepo().getFS();
 		File of = new File(workTree, tw.getPathString());
 		File parentFolder = of.getParentFile();
 		if (!fs.exists(parentFolder))
@@ -802,7 +827,7 @@
 	private ObjectId insertMergeResult(MergeResult<RawText> result)
 			throws IOException {
 		TemporaryBuffer.LocalFile buf = new TemporaryBuffer.LocalFile(
-				db.getDirectory(), 10 << 20);
+				db != null ? nonNullRepo().getDirectory() : null, 10 << 20);
 		try {
 			new MergeFormatter().formatMerge(buf, result,
 					Arrays.asList(commitNames), CHARACTER_ENCODING);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
index 12d6c6b..2224dbc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java
@@ -46,7 +46,9 @@
 
 import java.io.IOException;
 
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.Repository;
 
 /**
@@ -89,6 +91,11 @@
 		return new OneSide(db, treeIndex);
 	}
 
+	@Override
+	public Merger newMerger(final ObjectInserter inserter, final Config config) {
+		return new OneSide(inserter, treeIndex);
+	}
+
 	static class OneSide extends Merger {
 		private final int treeIndex;
 
@@ -97,6 +104,11 @@
 			treeIndex = index;
 		}
 
+		protected OneSide(final ObjectInserter inserter, final int index) {
+			super(inserter);
+			treeIndex = index;
+		}
+
 		@Override
 		protected boolean mergeImpl() throws IOException {
 			return treeIndex < sourceTrees.length;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
index 22e608e..56128dd 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
@@ -43,6 +43,8 @@
 
 package org.eclipse.jgit.merge;
 
+import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.Repository;
 
 /**
@@ -63,6 +65,11 @@
 	}
 
 	@Override
+	public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
+		return new RecursiveMerger(inserter, config);
+	}
+
+	@Override
 	public String getName() {
 		return "recursive"; //$NON-NLS-1$
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
index 07368e5..17044b5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyResolve.java
@@ -43,6 +43,8 @@
  */
 package org.eclipse.jgit.merge;
 
+import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.Repository;
 
 /**
@@ -60,8 +62,16 @@
 		return new ResolveMerger(db, inCore);
 	}
 
+	/**
+	 * @since 4.8
+	 */
+	@Override
+	public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
+		return new ResolveMerger(inserter, config);
+	}
+
 	@Override
 	public String getName() {
 		return "resolve"; //$NON-NLS-1$
 	}
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
index ec903c1..cd427bd 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java
@@ -49,6 +49,7 @@
 import org.eclipse.jgit.dircache.DirCacheBuilder;
 import org.eclipse.jgit.dircache.DirCacheEntry;
 import org.eclipse.jgit.errors.UnmergedPathException;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.FileMode;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectInserter;
@@ -89,6 +90,14 @@
 		return newMerger(db);
 	}
 
+	/**
+	 * @since 4.8
+	 */
+	@Override
+	public ThreeWayMerger newMerger(ObjectInserter inserter, Config config) {
+		return new InCoreMerger(inserter);
+	}
+
 	private static class InCoreMerger extends ThreeWayMerger {
 		private static final int T_BASE = 0;
 
@@ -110,6 +119,12 @@
 			cache = DirCache.newInCore();
 		}
 
+		InCoreMerger(final ObjectInserter inserter) {
+			super(inserter);
+			tw = new NameConflictTreeWalk(null, reader);
+			cache = DirCache.newInCore();
+		}
+
 		@Override
 		protected boolean mergeImpl() throws IOException {
 			tw.addTree(mergeBase());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
index fbedaef..b3ef0fb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java
@@ -50,6 +50,7 @@
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.lib.AnyObjectId;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.eclipse.jgit.revwalk.RevTree;
@@ -85,6 +86,17 @@
 	}
 
 	/**
+	 * Create a new in-core merge instance from an inserter.
+	 *
+	 * @param inserter
+	 *            the inserter to write objects to.
+	 * @since 4.8
+	 */
+	protected ThreeWayMerger(ObjectInserter inserter) {
+		super(inserter);
+	}
+
+	/**
 	 * Set the common ancestor tree.
 	 *
 	 * @param id
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 58fdd25..ddb2fbf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -58,6 +58,7 @@
 import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_SIDE_BAND_64K;
 import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_THIN_PACK;
 
+import java.io.ByteArrayOutputStream;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -235,7 +236,7 @@
 
 	private InputStream rawIn;
 
-	private OutputStream rawOut;
+	private ResponseBufferedOutputStream rawOut;
 
 	private PacketLineIn pckIn;
 
@@ -644,11 +645,10 @@
 	 *            other network connections this should be null.
 	 * @throws IOException
 	 */
-	public void upload(final InputStream input, final OutputStream output,
+	public void upload(final InputStream input, OutputStream output,
 			final OutputStream messages) throws IOException {
 		try {
 			rawIn = input;
-			rawOut = output;
 			if (messages != null)
 				msgOut = messages;
 
@@ -656,11 +656,17 @@
 				final Thread caller = Thread.currentThread();
 				timer = new InterruptTimer(caller.getName() + "-Timer"); //$NON-NLS-1$
 				TimeoutInputStream i = new TimeoutInputStream(rawIn, timer);
-				TimeoutOutputStream o = new TimeoutOutputStream(rawOut, timer);
+				@SuppressWarnings("resource")
+				TimeoutOutputStream o = new TimeoutOutputStream(output, timer);
 				i.setTimeout(timeout * 1000);
 				o.setTimeout(timeout * 1000);
 				rawIn = i;
-				rawOut = o;
+				output = o;
+			}
+
+			rawOut = new ResponseBufferedOutputStream(output);
+			if (biDirectionalPipe) {
+				rawOut.stopBuffering();
 			}
 
 			pckIn = new PacketLineIn(rawIn);
@@ -714,6 +720,8 @@
 
 	private void service() throws IOException {
 		boolean sendPack;
+		// If it's a non-bidi request, we need to read the entire request before
+		// writing a response. Buffer the response until then.
 		try {
 			if (biDirectionalPipe)
 				sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut));
@@ -769,6 +777,8 @@
 				throw new UploadPackInternalServerErrorException(err);
 			}
 			throw err;
+		} finally {
+			rawOut.stopBuffering();
 		}
 
 		if (sendPack)
@@ -1572,4 +1582,47 @@
 			adv.addSymref(Constants.HEAD, head.getLeaf().getName());
 		}
 	}
+
+	private static class ResponseBufferedOutputStream extends OutputStream {
+		private final OutputStream rawOut;
+
+		private OutputStream out;
+
+		ResponseBufferedOutputStream(OutputStream rawOut) {
+			this.rawOut = rawOut;
+			this.out = new ByteArrayOutputStream();
+		}
+
+		@Override
+		public void write(int b) throws IOException {
+			out.write(b);
+		}
+
+		@Override
+		public void write(byte b[]) throws IOException {
+			out.write(b);
+		}
+
+		@Override
+		public void write(byte b[], int off, int len) throws IOException {
+			out.write(b, off, len);
+		}
+
+		@Override
+		public void flush() throws IOException {
+			out.flush();
+		}
+
+		@Override
+		public void close() throws IOException {
+			out.close();
+		}
+
+		void stopBuffering() throws IOException {
+			if (out != rawOut) {
+				((ByteArrayOutputStream) out).writeTo(rawOut);
+				out = rawOut;
+			}
+		}
+	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/NameConflictTreeWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/NameConflictTreeWalk.java
index c0b29ef..59cf798 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/NameConflictTreeWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/NameConflictTreeWalk.java
@@ -45,6 +45,7 @@
 
 import java.io.IOException;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.dircache.DirCacheBuilder;
 import org.eclipse.jgit.errors.CorruptObjectException;
 import org.eclipse.jgit.lib.FileMode;
@@ -110,7 +111,7 @@
 	 *            the reader the walker will obtain tree data from.
 	 * @since 4.3
 	 */
-	public NameConflictTreeWalk(Repository repo, final ObjectReader or) {
+	public NameConflictTreeWalk(@Nullable Repository repo, final ObjectReader or) {
 		super(repo, or);
 	}
 
diff --git a/pom.xml b/pom.xml
index b2f4280..b8b2844 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>4.7.1-SNAPSHOT</version>
+  <version>4.8.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
diff --git a/tools/version.sh b/tools/version.sh
index 81ffe06..e5c98ec 100755
--- a/tools/version.sh
+++ b/tools/version.sh
@@ -131,6 +131,7 @@
 		$seen_version = 1 if (!/<\?xml/ &&
 		s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/);
 	}
+	s/(import feature="org\.eclipse\.jgit.*" version=")[^"]*(")/${1}'"$API_V"'${2}/;
 	' org.eclipse.jgit.packaging/org.*.feature/feature.xml
 
 perl -pi~ -e '