Merge branch 'stable-6.0'

* stable-6.0:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I694c011f322f9a19479ef67b9fc725371da7418f
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index 9433658..85f665b 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -5,13 +5,13 @@
 Automatic-Module-Name: org.eclipse.jgit.ant.test
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.ant.tasks;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest.core;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index 6ad6415..aca85bb 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant.test</artifactId>
diff --git a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
index 10bfbd2..4110ab3 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ant
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)"
+  org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)"
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.ant;version="6.0.1",
- org.eclipse.jgit.ant.tasks;version="6.0.1";
+Export-Package: org.eclipse.jgit.ant;version="6.1.0",
+ org.eclipse.jgit.ant.tasks;version="6.1.0";
   uses:="org.apache.tools.ant,
    org.apache.tools.ant.types"
diff --git a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
index c3ebfb3..19cf64c 100644
--- a/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ant - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ant.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ant;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index f1cd27d..24f3de3 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant</artifactId>
diff --git a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
index 62fe5a5..160b425 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.archive
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -13,17 +13,17 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="6.0.1";
+Export-Package: org.eclipse.jgit.archive;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.api,
    org.apache.commons.compress.archivers,
    org.osgi.framework",
- org.eclipse.jgit.archive.internal;version="6.0.1";x-internal:=true
+ org.eclipse.jgit.archive.internal;version="6.1.0";x-internal:=true
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index deab2fa..9b0038f 100644
--- a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.archive - Sources
 Bundle-SymbolicName: org.eclipse.jgit.archive.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 45f11da..97bbf641 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.benchmarks/pom.xml b/org.eclipse.jgit.benchmarks/pom.xml
index 8b16d18..0f2260d 100644
--- a/org.eclipse.jgit.benchmarks/pom.xml
+++ b/org.eclipse.jgit.benchmarks/pom.xml
@@ -14,7 +14,7 @@
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.eclipse.jgit</groupId>
-  <version>6.0.1-SNAPSHOT</version>
+  <version>6.1.0-SNAPSHOT</version>
   <artifactId>org.eclipse.jgit.benchmarks</artifactId>
   <packaging>jar</packaging>
 
diff --git a/org.eclipse.jgit.coverage/pom.xml b/org.eclipse.jgit.coverage/pom.xml
index 63ead27..6e476b3 100644
--- a/org.eclipse.jgit.coverage/pom.xml
+++ b/org.eclipse.jgit.coverage/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,88 +27,88 @@
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.archive</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.apache</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.server</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ui</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ant.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.http.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.pgm.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
index d703432..23a0360 100644
--- a/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc.test
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -12,9 +12,9 @@
  org.bouncycastle.openpgp.operator;version="[1.65.0,2.0.0)",
  org.bouncycastle.openpgp.operator.jcajce;version="[1.65.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.65.0,2.0.0)",
- org.eclipse.jgit.gpg.bc.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.gpg.bc.internal.keys;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.sha1;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.gpg.bc.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.sha1;version="[6.1.0,6.2.0)",
  org.hamcrest;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.gpg.bc.test/pom.xml b/org.eclipse.jgit.gpg.bc.test/pom.xml
index ad955b0..5bb9ebc 100644
--- a/org.eclipse.jgit.gpg.bc.test/pom.xml
+++ b/org.eclipse.jgit.gpg.bc.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc.test</artifactId>
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
index 74e3305..8f60326 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/MANIFEST.MF
@@ -3,10 +3,10 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.gpg.bc
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[6.0.1,6.1.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.1.0,6.2.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.bouncycastle.asn1;version="[1.69.0,2.0.0)",
  org.bouncycastle.asn1.cryptlib;version="[1.69.0,2.0.0)",
@@ -29,9 +29,9 @@
  org.bouncycastle.util;version="[1.69.0,2.0.0)",
  org.bouncycastle.util.encoders;version="[1.69.0,2.0.0)",
  org.bouncycastle.util.io;version="[1.69.0,2.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.gpg.bc;version="6.0.1",
- org.eclipse.jgit.gpg.bc.internal;version="6.0.1";x-friends:="org.eclipse.jgit.gpg.bc.test",
- org.eclipse.jgit.gpg.bc.internal.keys;version="6.0.1";x-friends:="org.eclipse.jgit.gpg.bc.test"
+Export-Package: org.eclipse.jgit.gpg.bc;version="6.1.0",
+ org.eclipse.jgit.gpg.bc.internal;version="6.1.0";x-friends:="org.eclipse.jgit.gpg.bc.test",
+ org.eclipse.jgit.gpg.bc.internal.keys;version="6.1.0";x-friends:="org.eclipse.jgit.gpg.bc.test"
diff --git a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
index de4962b..f99ec41 100644
--- a/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.gpg.bc/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.gpg.bc - Sources
 Bundle-SymbolicName: org.eclipse.jgit.gpg.bc.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.gpg.bc;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.gpg.bc/pom.xml b/org.eclipse.jgit.gpg.bc/pom.xml
index 4bf82c6..1a6a991 100644
--- a/org.eclipse.jgit.gpg.bc/pom.xml
+++ b/org.eclipse.jgit.gpg.bc/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.gpg.bc</artifactId>
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index c51a87e..1a466db 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.apache
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
@@ -25,11 +25,11 @@
  org.apache.http.impl.conn;version="[4.4.0,5.0.0)",
  org.apache.http.params;version="[4.3.0,5.0.0)",
  org.apache.http.ssl;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="6.0.1";
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="6.1.0";
   uses:="org.apache.http.client,
    org.eclipse.jgit.transport.http,
    org.apache.http.entity,
diff --git a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
index 9d4f5f2..f4f763d 100644
--- a/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.http.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.apache;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index 6e5f260..d3075ef 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.apache</artifactId>
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index 510c439..356b363 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -3,13 +3,13 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.server
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.http.server;version="6.0.1",
- org.eclipse.jgit.http.server.glue;version="6.0.1";
+Export-Package: org.eclipse.jgit.http.server;version="6.1.0",
+ org.eclipse.jgit.http.server.glue;version="6.1.0";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="6.0.1";
+ org.eclipse.jgit.http.server.resolver;version="6.1.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -18,14 +18,14 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: javax.servlet;version="[2.5.0,5.0.0)",
  javax.servlet.http;version="[2.5.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.resolver;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)"
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)"
diff --git a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
index 7453cb8..b23f4e2 100644
--- a/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.http.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.http.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.http.server;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index b01c791..5eb4bad 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 3a6517c..03d7a08 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.http.test
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -26,26 +26,26 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.http.server;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.http.server.glue;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.http.server.resolver;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.resolver;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.http.server;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.http.server.glue;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.http.server.resolver;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest;version="[1.1.0,3.0.0)",
  org.hamcrest.core;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index 7694c44..60c6704 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index c21f835..fdb37de 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.http
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -21,17 +21,17 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.ssl;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.http.server;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.resolver;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.http.server;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.1.0,6.2.0)",
  org.junit;version="[4.13,5.0.0)",
  org.slf4j.helpers;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="6.0.1";
+Export-Package: org.eclipse.jgit.junit.http;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.junit,
    javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
index 98fde06..c8eaa8f 100644
--- a/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit.http - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.http.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.http;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index b66991f..4ab0a7e 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
index 8d629ed..0404d71 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit.ssh
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
@@ -33,16 +33,16 @@
  org.apache.sshd.server.subsystem;version="[2.7.0,2.8.0)",
  org.apache.sshd.sftp;version="[2.7.0,2.8.0)",
  org.apache.sshd.sftp.server;version="[2.7.0,2.8.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit.ssh;version="6.0.1"
+Export-Package: org.eclipse.jgit.junit.ssh;version="6.1.0"
diff --git a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
index 7132b5b..791df8a 100644
--- a/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit.ssh/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit.ssh - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.ssh.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit.ssh;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit.ssh/pom.xml b/org.eclipse.jgit.junit.ssh/pom.xml
index 76bdca1..f6fb017 100644
--- a/org.eclipse.jgit.junit.ssh/pom.xml
+++ b/org.eclipse.jgit.junit.ssh/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.ssh</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 1f021da..88da600 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -3,35 +3,35 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.junit
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.dircache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.merge;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="6.0.1",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.time;version="[6.0.1,6.1.0)",
+Import-Package: org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.dircache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.merge;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="6.1.0",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.time;version="[6.1.0,6.2.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
  org.junit.runners;version="[4.13,5.0.0)",
  org.junit.runners.model;version="[4.13,5.0.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="6.0.1";
+Export-Package: org.eclipse.jgit.junit;version="6.1.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -44,4 +44,4 @@
    org.junit.runners.model,
    org.junit.runner,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.junit.time;version="6.0.1";uses:="org.eclipse.jgit.util.time"
+ org.eclipse.jgit.junit.time;version="6.1.0";uses:="org.eclipse.jgit.util.time"
diff --git a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
index 156e59a..5f83c45 100644
--- a/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.junit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.junit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.junit;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index ef2b946..1ca223c 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.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 b2a82c2..7b8e3d6 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -26,24 +26,24 @@
  org.eclipse.jetty.util.log;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.security;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.thread;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.server;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.test;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.server;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.test;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest.core;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index ef8751e..79ba962 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
index 3a4448b..b174e3b 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.server
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs.server;version="6.0.1";
+Export-Package: org.eclipse.jgit.lfs.server;version="6.1.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="6.0.1";
+ org.eclipse.jgit.lfs.server.fs;version="6.1.0";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="6.0.1";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="6.0.1";
+ org.eclipse.jgit.lfs.server.internal;version="6.1.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="6.1.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -24,15 +24,15 @@
  javax.servlet.annotation;version="[3.1.0,5.0.0)",
  javax.servlet.http;version="[3.1.0,5.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
index 5011a22..ea45f02 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.lfs.server - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs.server;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index c2d6596..10fe0cd 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index b870794..b70fca6 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -3,24 +3,24 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs.test
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.attributes;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.attributes;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest.core;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.runner;version="[4.13,5.0.0)",
  org.junit.runners;version="[4.13,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="6.0.1";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="6.1.0";x-friends:="org.eclipse.jgit.lfs.server.test"
diff --git a/org.eclipse.jgit.lfs.test/pom.xml b/org.eclipse.jgit.lfs.test/pom.xml
index a88ca94..eceb0ea 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.test</artifactId>
diff --git a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
index fba58f8..5369918 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -3,31 +3,31 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.lfs
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.jgit.lfs;version="6.0.1",
- org.eclipse.jgit.lfs.errors;version="6.0.1",
- org.eclipse.jgit.lfs.internal;version="6.0.1";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
- org.eclipse.jgit.lfs.lib;version="6.0.1"
+Export-Package: org.eclipse.jgit.lfs;version="6.1.0",
+ org.eclipse.jgit.lfs.errors;version="6.1.0",
+ org.eclipse.jgit.lfs.internal;version="6.1.0";x-friends:="org.eclipse.jgit.lfs.test,org.eclipse.jgit.lfs.server.fs,org.eclipse.jgit.lfs.server",
+ org.eclipse.jgit.lfs.lib;version="6.1.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: com.google.gson;version="[2.8.2,3.0.0)",
  com.google.gson.stream;version="[2.8.2,3.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)";resolution:=optional,
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.attributes;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.diff;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.hooks;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)"
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)";resolution:=optional,
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.attributes;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.diff;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.hooks;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)"
diff --git a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
index a715be6..a40099f 100644
--- a/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.lfs - Sources
 Bundle-SymbolicName: org.eclipse.jgit.lfs.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.lfs;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index eb57db3..0ab16f4 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
index cc1bf85..da305ea 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
index 874b274..223051b 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
index be02662..59fde7e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.gpg.bc"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
index 2909e80..e377198 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.gpg.bc.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
index 8937a83..ea90c99 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.http.apache"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
index 2292c2e..48503db 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index 6eee7cd..dde16bc 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.junit"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -24,7 +24,7 @@
 
    <requires>
       <import plugin="com.jcraft.jsch"/>
-      <import plugin="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
index dc4159b..3f02bb0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
index f0a4884..9fce6d3 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.lfs"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
index e344c19..44108e2 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
index f5889e5..3e2e189 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -35,9 +35,9 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="6.0.1" match="equivalent"/>
-      <import feature="org.eclipse.jgit.ssh.apache" version="6.0.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="6.1.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.ssh.apache" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
index ae95704..29f4014 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
index e12e599..88d34b1 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.repository</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
index d5d1554..a706329 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.source"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
index a20645e..0b00e4a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
@@ -30,7 +30,7 @@
     <dependency>
       <groupId>org.eclipse.jgit.feature</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
-      <version>6.0.1-SNAPSHOT</version>
+      <version>6.1.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
index ae62fa0..f6ad4f9 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.apache"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
index 6f12afa..28f61dd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.apache.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
index df42e93..ea76ea1 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.ssh.jsch"
       label="%featureName"
-      version="6.0.1.qualifier"
+      version="6.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -23,7 +23,7 @@
    </url>
 
    <requires>
-      <import plugin="org.eclipse.jgit" version="6.0.1" match="equivalent"/>
+      <import plugin="org.eclipse.jgit" version="6.1.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
index 37ada5d..16395cc 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.ssh.jsch.feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
index d31cd37..d56f1d4 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: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
index 8bee1fc..a4f1700 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
@@ -16,7 +16,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.target</artifactId>
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 80a64bd..92e8f5d 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -16,7 +16,7 @@
 
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>jgit.tycho.parent</artifactId>
-  <version>6.0.1-SNAPSHOT</version>
+  <version>6.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index af00b0a..3e0a4ea 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -3,28 +3,29 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm.test
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.diff;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.dircache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="6.0.1",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.merge;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.pgm;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.pgm.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.pgm.opt;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)",
+Import-Package: org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.diff;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.dircache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="6.1.0",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.merge;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.pgm;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.pgm.opt;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)",
  org.hamcrest.core;bundle-version="[2.2.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.rules;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index cd2bb63..eea5970 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/DiffToolTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/DiffToolTest.java
new file mode 100644
index 0000000..2ce50c7
--- /dev/null
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/DiffToolTest.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2021, Simeon Andreev <simeon.danailov.andreev@gmail.com> and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.pgm;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.diff.DiffEntry;
+import org.eclipse.jgit.lib.CLIRepositoryTestCase;
+import org.eclipse.jgit.pgm.opt.CmdLineParser;
+import org.eclipse.jgit.pgm.opt.SubcommandHandler;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.treewalk.FileTreeIterator;
+import org.eclipse.jgit.treewalk.TreeWalk;
+import org.junit.Before;
+import org.junit.Test;
+import org.kohsuke.args4j.Argument;
+
+/**
+ * Testing the {@code difftool} command.
+ */
+public class DiffToolTest extends CLIRepositoryTestCase {
+	public static class GitCliJGitWrapperParser {
+		@Argument(index = 0, metaVar = "metaVar_command", required = true, handler = SubcommandHandler.class)
+		TextBuiltin subcommand;
+
+		@Argument(index = 1, metaVar = "metaVar_arg")
+		List<String> arguments = new ArrayList<>();
+	}
+
+	private String[] runAndCaptureUsingInitRaw(String... args)
+			throws Exception {
+		CLIGitCommand.Result result = new CLIGitCommand.Result();
+
+		GitCliJGitWrapperParser bean = new GitCliJGitWrapperParser();
+		CmdLineParser clp = new CmdLineParser(bean);
+		clp.parseArgument(args);
+
+		TextBuiltin cmd = bean.subcommand;
+		cmd.initRaw(db, null, null, result.out, result.err);
+		cmd.execute(bean.arguments.toArray(new String[bean.arguments.size()]));
+		if (cmd.getOutputWriter() != null) {
+			cmd.getOutputWriter().flush();
+		}
+		if (cmd.getErrorWriter() != null) {
+			cmd.getErrorWriter().flush();
+		}
+		return result.outLines().toArray(new String[0]);
+	}
+
+	private Git git;
+
+	@Override
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		git = new Git(db);
+		git.commit().setMessage("initial commit").call();
+	}
+
+	@Test
+	public void testTool() throws Exception {
+		RevCommit commit = createUnstagedChanges();
+		List<DiffEntry> changes = getRepositoryChanges(commit);
+		String[] expectedOutput = getExpectedDiffToolOutput(changes);
+
+		String[] options = {
+				"--tool",
+				"-t",
+		};
+
+		for (String option : options) {
+			assertArrayOfLinesEquals("Incorrect output for option: " + option,
+					expectedOutput,
+					runAndCaptureUsingInitRaw("difftool", option,
+							"some_tool"));
+		}
+	}
+
+	@Test
+	public void testToolTrustExitCode() throws Exception {
+		RevCommit commit = createUnstagedChanges();
+		List<DiffEntry> changes = getRepositoryChanges(commit);
+		String[] expectedOutput = getExpectedDiffToolOutput(changes);
+
+		String[] options = { "--tool", "-t", };
+
+		for (String option : options) {
+			assertArrayOfLinesEquals("Incorrect output for option: " + option,
+					expectedOutput, runAndCaptureUsingInitRaw("difftool",
+							"--trust-exit-code", option, "some_tool"));
+		}
+	}
+
+	@Test
+	public void testToolNoGuiNoPromptNoTrustExitcode() throws Exception {
+		RevCommit commit = createUnstagedChanges();
+		List<DiffEntry> changes = getRepositoryChanges(commit);
+		String[] expectedOutput = getExpectedDiffToolOutput(changes);
+
+		String[] options = { "--tool", "-t", };
+
+		for (String option : options) {
+			assertArrayOfLinesEquals("Incorrect output for option: " + option,
+					expectedOutput, runAndCaptureUsingInitRaw("difftool",
+							"--no-gui", "--no-prompt", "--no-trust-exit-code",
+							option, "some_tool"));
+		}
+	}
+
+	@Test
+	public void testToolCached() throws Exception {
+		RevCommit commit = createStagedChanges();
+		List<DiffEntry> changes = getRepositoryChanges(commit);
+		String[] expectedOutput = getExpectedDiffToolOutput(changes);
+
+		String[] options = { "--cached", "--staged", };
+
+		for (String option : options) {
+			assertArrayOfLinesEquals("Incorrect output for option: " + option,
+					expectedOutput, runAndCaptureUsingInitRaw("difftool",
+							option, "--tool", "some_tool"));
+		}
+	}
+
+	@Test
+	public void testToolHelp() throws Exception {
+		String[] expectedOutput = {
+				"git difftool --tool=<tool> may be set to one of the following:",
+				"user-defined:",
+				"The following tools are valid, but not currently available:",
+				"Some of the tools listed above only work in a windowed",
+				"environment. If run in a terminal-only session, they will fail.", };
+
+		String option = "--tool-help";
+		assertArrayOfLinesEquals("Incorrect output for option: " + option,
+				expectedOutput, runAndCaptureUsingInitRaw("difftool", option));
+	}
+
+	private RevCommit createUnstagedChanges() throws Exception {
+		writeTrashFile("a", "Hello world a");
+		writeTrashFile("b", "Hello world b");
+		git.add().addFilepattern(".").call();
+		RevCommit commit = git.commit().setMessage("files a & b").call();
+		writeTrashFile("a", "New Hello world a");
+		writeTrashFile("b", "New Hello world b");
+		return commit;
+	}
+
+	private RevCommit createStagedChanges() throws Exception {
+		RevCommit commit = createUnstagedChanges();
+		git.add().addFilepattern(".").call();
+		return commit;
+	}
+
+	private List<DiffEntry> getRepositoryChanges(RevCommit commit)
+			throws Exception {
+		TreeWalk tw = new TreeWalk(db);
+		tw.addTree(commit.getTree());
+		FileTreeIterator modifiedTree = new FileTreeIterator(db);
+		tw.addTree(modifiedTree);
+		List<DiffEntry> changes = DiffEntry.scan(tw);
+		return changes;
+	}
+
+	private String[] getExpectedDiffToolOutput(List<DiffEntry> changes) {
+		String[] expectedToolOutput = new String[changes.size()];
+		for (int i = 0; i < changes.size(); ++i) {
+			DiffEntry change = changes.get(i);
+			String newPath = change.getNewPath();
+			String oldPath = change.getOldPath();
+			String newIdName = change.getNewId().name();
+			String oldIdName = change.getOldId().name();
+			String expectedLine = "M\t" + newPath + " (" + newIdName + ")"
+					+ "\t" + oldPath + " (" + oldIdName + ")";
+			expectedToolOutput[i] = expectedLine;
+		}
+		return expectedToolOutput;
+	}
+
+	private static void assertArrayOfLinesEquals(String failMessage,
+			String[] expected, String[] actual) {
+		assertEquals(failMessage, toString(expected), toString(actual));
+	}
+}
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index ffaafc1..fa0f452 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.pgm
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -14,47 +14,49 @@
  org.eclipse.jetty.servlet;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util;version="[10.0.0,11.0.0)",
  org.eclipse.jetty.util.component;version="[10.0.0,11.0.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.archive;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.awtui;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.blame;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.diff;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.dircache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.gitrepo;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.server;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.server.fs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs.server.s3;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.merge;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.notes;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revplot;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http.apache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.resolver;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.sshd;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.archive;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.awtui;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.blame;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.diff;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.dircache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.gitrepo;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.server;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.merge;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.notes;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revplot;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http.apache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)",
  org.kohsuke.args4j;version="[2.33.0,3.0.0)",
  org.kohsuke.args4j.spi;version="[2.33.0,3.0.0)"
-Export-Package: org.eclipse.jgit.console;version="6.0.1";
+Export-Package: org.eclipse.jgit.console;version="6.1.0";
  uses:="org.eclipse.jgit.transport,
   org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="6.0.1";
+ org.eclipse.jgit.pgm;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.awtui,
@@ -66,14 +68,14 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.api,
    javax.swing",
- org.eclipse.jgit.pgm.debug;version="6.0.1";
+ org.eclipse.jgit.pgm.debug;version="6.1.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm,
    org.eclipse.jetty.servlet",
- org.eclipse.jgit.pgm.internal;version="6.0.1";
+ org.eclipse.jgit.pgm.internal;version="6.1.0";
   x-friends:="org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="6.0.1";
+ org.eclipse.jgit.pgm.opt;version="6.1.0";
   uses:="org.kohsuke.args4j,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 26269d7..a61df46 100644
--- a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.pgm - Sources
 Bundle-SymbolicName: org.eclipse.jgit.pgm.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
index e645255..8c44764 100644
--- a/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
+++ b/org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
@@ -12,6 +12,7 @@
 org.eclipse.jgit.pgm.Daemon
 org.eclipse.jgit.pgm.Describe
 org.eclipse.jgit.pgm.Diff
+org.eclipse.jgit.pgm.DiffTool
 org.eclipse.jgit.pgm.DiffTree
 org.eclipse.jgit.pgm.Fetch
 org.eclipse.jgit.pgm.Gc
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 28ebaa2..739b537 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
index 9745003..d51daaf 100644
--- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
+++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
@@ -58,6 +58,9 @@
 dateInfo=Date:   {0}
 deletedBranch=Deleted branch {0}
 deletedRemoteBranch=Deleted remote branch {0}
+diffToolHelpSetToFollowing='git difftool --tool=<tool>' may be set to one of the following:\n{0}\n\tuser-defined:\n{1}\nThe following tools are valid, but not currently available:\n{2}\nSome of the tools listed above only work in a windowed\nenvironment. If run in a terminal-only session, they will fail.
+diffToolLaunch=Viewing ({0}/{1}): '{2}'\nLaunch '{3}' [Y/n]?
+diffToolDied=external diff died, stopping at {0}
 doesNotExist={0} does not exist
 dontOverwriteLocalChanges=error: Your local changes to the following file would be overwritten by merge:
 everythingUpToDate=Everything up-to-date
@@ -145,6 +148,7 @@
 metaVar_seconds=SECONDS
 metaVar_service=SERVICE
 metaVar_tagLocalUser=<GPG key ID>
+metaVar_tool=TOOL
 metaVar_treeish=tree-ish
 metaVar_uriish=uri-ish
 metaVar_url=URL
@@ -249,6 +253,8 @@
 usage_DisplayTheVersionOfJgit=Display the version of jgit
 usage_Gc=Cleanup unnecessary files and optimize the local repository
 usage_Glog=View commit history as a graph
+usage_DiffGuiTool=When git-difftool is invoked with the -g or --gui option the default diff tool will be read from the configured diff.guitool variable instead of diff.tool.
+usage_noGui=The --no-gui option can be used to override -g or --gui setting.
 usage_IndexPack=Build pack index file for an existing packed archive
 usage_LFSDirectory=Directory to store large objects
 usage_LFSPort=Server http port
@@ -295,6 +301,7 @@
 usage_Status=Show the working tree status
 usage_StopTrackingAFile=Stop tracking a file
 usage_TextHashFunctions=Scan repository to compute maximum number of collisions for hash functions
+usage_ToolForDiff=Use the diff tool specified by <tool>. Run git difftool --tool-help for the list of valid <tool> settings.\nIf a diff tool is not specified, git difftool will use the configuration variable diff.tool.
 usage_UpdateRemoteRepositoryFromLocalRefs=Update remote repository from local refs
 usage_UseAll=Use all refs found in refs/
 usage_UseTags=Use any tag including lightweight tags
@@ -341,6 +348,7 @@
 usage_date=date format, one of default, rfc, local, iso, short, raw (as defined by git-log(1) ), locale or localelocal (jgit extensions)
 usage_detectRenames=detect renamed files
 usage_diffAlgorithm=the diff algorithm to use. Currently supported are: 'myers', 'histogram'
+usage_DiffTool=git difftool is a Git command that allows you to compare and edit files between revisions using common diff tools.\ngit difftool is a frontend to git diff and accepts the same options and arguments.
 usage_directoriesToExport=directories to export
 usage_disableTheServiceInAllRepositories=disable the service in all repositories
 usage_displayAListOfAllRegisteredJgitCommands=Display a list of all registered jgit commands
@@ -395,6 +403,8 @@
 usage_performFsckStyleChecksOnReceive=perform fsck style checks on receive
 usage_portNumberToListenOn=port number to listen on
 usage_printOnlyBranchesThatContainTheCommit=print only branches that contain the commit
+usage_prompt=Prompt before each invocation of the diff tool. This is the default behaviour; the option is provided to override any configuration settings.
+usage_noPrompt=Do not prompt before launching a diff tool.
 usage_pruneStaleTrackingRefs=prune stale tracking refs
 usage_pushUrls=push URLs are manipulated
 usage_quiet=don't show progress messages
@@ -422,6 +432,8 @@
 usage_sshDriver=Selects the built-in ssh library to use, JSch or Apache MINA sshd.
 usage_symbolicVersionForTheProject=Symbolic version for the project
 usage_tags=fetch all tags
+usage_trustExitCode=git-difftool invokes a diff tool individually on each file. Errors reported by the diff tool are ignored by default. Use --trust-exit-code to make git-difftool exit when an invoked diff tool returns a non-zero exit code.\ngit-difftool will forward the exit code of the invoked tool when --trust-exit-code is used.
+usage_noTrustExitCode=This option can be used to override --trust-exit-code setting.
 usage_notags=do not fetch tags
 usage_tagAnnotated=create an annotated tag, unsigned unless -s or -u are given, or config tag.gpgSign is true
 usage_tagDelete=delete tag
@@ -430,6 +442,7 @@
 usage_tagSign=create a signed annotated tag
 usage_tagNoSign=suppress signing the tag
 usage_tagVerify=Verify the GPG signature
+usage_toolHelp=Print a list of diff tools that may be used with --tool.
 usage_untrackedFilesMode=show untracked files
 usage_updateRef=reference to update
 usage_updateRemoteRefsFromAnotherRepository=Update remote refs from another repository
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTool.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTool.java
new file mode 100644
index 0000000..9fc26c9
--- /dev/null
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/DiffTool.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2018-2021, Andre Bossert <andre.bossert@siemens.com>
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.pgm;
+
+import static org.eclipse.jgit.lib.Constants.HEAD;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.jgit.diff.DiffEntry;
+import org.eclipse.jgit.diff.DiffFormatter;
+import org.eclipse.jgit.dircache.DirCacheIterator;
+import org.eclipse.jgit.errors.AmbiguousObjectException;
+import org.eclipse.jgit.errors.IncorrectObjectTypeException;
+import org.eclipse.jgit.errors.RevisionSyntaxException;
+import org.eclipse.jgit.internal.diffmergetool.DiffTools;
+import org.eclipse.jgit.internal.diffmergetool.ExternalDiffTool;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectReader;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.TextProgressMonitor;
+import org.eclipse.jgit.lib.internal.BooleanTriState;
+import org.eclipse.jgit.pgm.internal.CLIText;
+import org.eclipse.jgit.pgm.opt.PathTreeFilterHandler;
+import org.eclipse.jgit.treewalk.AbstractTreeIterator;
+import org.eclipse.jgit.treewalk.CanonicalTreeParser;
+import org.eclipse.jgit.treewalk.FileTreeIterator;
+import org.eclipse.jgit.treewalk.filter.TreeFilter;
+import org.eclipse.jgit.util.StringUtils;
+import org.kohsuke.args4j.Argument;
+import org.kohsuke.args4j.Option;
+
+@Command(name = "difftool", common = true, usage = "usage_DiffTool")
+class DiffTool extends TextBuiltin {
+	private DiffFormatter diffFmt;
+
+	private DiffTools diffTools;
+
+	@Argument(index = 0, metaVar = "metaVar_treeish")
+	private AbstractTreeIterator oldTree;
+
+	@Argument(index = 1, metaVar = "metaVar_treeish")
+	private AbstractTreeIterator newTree;
+
+	@Option(name = "--tool", aliases = {
+			"-t" }, metaVar = "metaVar_tool", usage = "usage_ToolForDiff")
+	private String toolName;
+
+	@Option(name = "--cached", aliases = { "--staged" }, usage = "usage_cached")
+	private boolean cached;
+
+	private BooleanTriState prompt = BooleanTriState.UNSET;
+
+	@Option(name = "--prompt", usage = "usage_prompt")
+	void setPrompt(@SuppressWarnings("unused") boolean on) {
+		prompt = BooleanTriState.TRUE;
+	}
+
+	@Option(name = "--no-prompt", aliases = { "-y" }, usage = "usage_noPrompt")
+	void noPrompt(@SuppressWarnings("unused") boolean on) {
+		prompt = BooleanTriState.FALSE;
+	}
+
+	@Option(name = "--tool-help", usage = "usage_toolHelp")
+	private boolean toolHelp;
+
+	private BooleanTriState gui = BooleanTriState.UNSET;
+
+	@Option(name = "--gui", aliases = { "-g" }, usage = "usage_DiffGuiTool")
+	void setGui(@SuppressWarnings("unused") boolean on) {
+		gui = BooleanTriState.TRUE;
+	}
+
+	@Option(name = "--no-gui", usage = "usage_noGui")
+	void noGui(@SuppressWarnings("unused") boolean on) {
+		gui = BooleanTriState.FALSE;
+	}
+
+	private BooleanTriState trustExitCode = BooleanTriState.UNSET;
+
+	@Option(name = "--trust-exit-code", usage = "usage_trustExitCode")
+	void setTrustExitCode(@SuppressWarnings("unused") boolean on) {
+		trustExitCode = BooleanTriState.TRUE;
+	}
+
+	@Option(name = "--no-trust-exit-code", usage = "usage_noTrustExitCode")
+	void noTrustExitCode(@SuppressWarnings("unused") boolean on) {
+		trustExitCode = BooleanTriState.FALSE;
+	}
+
+	@Option(name = "--", metaVar = "metaVar_paths", handler = PathTreeFilterHandler.class)
+	private TreeFilter pathFilter = TreeFilter.ALL;
+
+	@Override
+	protected void init(Repository repository, String gitDir) {
+		super.init(repository, gitDir);
+		diffFmt = new DiffFormatter(new BufferedOutputStream(outs));
+		diffTools = new DiffTools(repository);
+	}
+
+	@Override
+	protected void run() {
+		try {
+			if (toolHelp) {
+				showToolHelp();
+			} else {
+				boolean showPrompt = diffTools.isInteractive();
+				if (prompt != BooleanTriState.UNSET) {
+					showPrompt = prompt == BooleanTriState.TRUE;
+				}
+				String toolNamePrompt = toolName;
+				if (showPrompt) {
+					if (StringUtils.isEmptyOrNull(toolNamePrompt)) {
+						toolNamePrompt = diffTools.getDefaultToolName(gui);
+					}
+				}
+				// get the changed files
+				List<DiffEntry> files = getFiles();
+				if (files.size() > 0) {
+					compare(files, showPrompt, toolNamePrompt);
+				}
+			}
+			outw.flush();
+		} catch (RevisionSyntaxException | IOException e) {
+			throw die(e.getMessage(), e);
+		} finally {
+			diffFmt.close();
+		}
+	}
+
+	private void compare(List<DiffEntry> files, boolean showPrompt,
+			String toolNamePrompt) throws IOException {
+		for (int fileIndex = 0; fileIndex < files.size(); fileIndex++) {
+			DiffEntry ent = files.get(fileIndex);
+			String mergedFilePath = ent.getNewPath();
+			if (mergedFilePath.equals(DiffEntry.DEV_NULL)) {
+				mergedFilePath = ent.getOldPath();
+			}
+			// check if user wants to launch compare
+			boolean launchCompare = true;
+			if (showPrompt) {
+				launchCompare = isLaunchCompare(fileIndex + 1, files.size(),
+						mergedFilePath, toolNamePrompt);
+			}
+			if (launchCompare) {
+				switch (ent.getChangeType()) {
+				case MODIFY:
+					outw.println("M\t" + ent.getNewPath() //$NON-NLS-1$
+							+ " (" + ent.getNewId().name() + ")" //$NON-NLS-1$ //$NON-NLS-2$
+							+ "\t" + ent.getOldPath() //$NON-NLS-1$
+							+ " (" + ent.getOldId().name() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+					int ret = diffTools.compare(ent.getNewPath(),
+							ent.getOldPath(), ent.getNewId().name(),
+							ent.getOldId().name(), toolName, prompt, gui,
+							trustExitCode);
+					if (ret != 0) {
+						throw die(MessageFormat.format(
+								CLIText.get().diffToolDied, mergedFilePath));
+					}
+					break;
+				default:
+					break;
+				}
+			} else {
+				break;
+			}
+		}
+	}
+
+	@SuppressWarnings("boxing")
+	private boolean isLaunchCompare(int fileIndex, int fileCount,
+			String fileName, String toolNamePrompt) throws IOException {
+		boolean launchCompare = true;
+		outw.println(MessageFormat.format(CLIText.get().diffToolLaunch,
+				fileIndex, fileCount, fileName, toolNamePrompt));
+		outw.flush();
+		BufferedReader br = new BufferedReader(new InputStreamReader(ins));
+		String line = null;
+		if ((line = br.readLine()) != null) {
+			if (!line.equalsIgnoreCase("Y")) { //$NON-NLS-1$
+				launchCompare = false;
+			}
+		}
+		return launchCompare;
+	}
+
+	private void showToolHelp() throws IOException {
+		String availableToolNames = new String();
+		for (String name : diffTools.getAvailableTools().keySet()) {
+			availableToolNames += String.format("\t\t{0}\n", name); //$NON-NLS-1$
+		}
+		String notAvailableToolNames = new String();
+		for (String name : diffTools.getNotAvailableTools().keySet()) {
+			notAvailableToolNames += String.format("\t\t{0}\n", name); //$NON-NLS-1$
+		}
+		String userToolNames = new String();
+		Map<String, ExternalDiffTool> userTools = diffTools
+				.getUserDefinedTools();
+		for (String name : userTools.keySet()) {
+			availableToolNames += String.format("\t\t{0}.cmd {1}\n", //$NON-NLS-1$
+					name, userTools.get(name).getCommand());
+		}
+		outw.println(MessageFormat.format(
+				CLIText.get().diffToolHelpSetToFollowing, availableToolNames,
+				userToolNames, notAvailableToolNames));
+	}
+
+	private List<DiffEntry> getFiles()
+			throws RevisionSyntaxException, AmbiguousObjectException,
+			IncorrectObjectTypeException, IOException {
+		diffFmt.setRepository(db);
+		if (cached) {
+			if (oldTree == null) {
+				ObjectId head = db.resolve(HEAD + "^{tree}"); //$NON-NLS-1$
+				if (head == null) {
+					die(MessageFormat.format(CLIText.get().notATree, HEAD));
+				}
+				CanonicalTreeParser p = new CanonicalTreeParser();
+				try (ObjectReader reader = db.newObjectReader()) {
+					p.reset(reader, head);
+				}
+				oldTree = p;
+			}
+			newTree = new DirCacheIterator(db.readDirCache());
+		} else if (oldTree == null) {
+			oldTree = new DirCacheIterator(db.readDirCache());
+			newTree = new FileTreeIterator(db);
+		} else if (newTree == null) {
+			newTree = new FileTreeIterator(db);
+		}
+
+		TextProgressMonitor pm = new TextProgressMonitor(errw);
+		pm.setDelayStart(2, TimeUnit.SECONDS);
+		diffFmt.setProgressMonitor(pm);
+		diffFmt.setPathFilter(pathFilter);
+
+		List<DiffEntry> files = diffFmt.scan(oldTree, newTree);
+		return files;
+	}
+
+}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java
index 8e49a76..7fe5b0f 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java
@@ -136,6 +136,9 @@ public static String fatalError(String message) {
 	/***/ public String dateInfo;
 	/***/ public String deletedBranch;
 	/***/ public String deletedRemoteBranch;
+	/***/ public String diffToolHelpSetToFollowing;
+	/***/ public String diffToolLaunch;
+	/***/ public String diffToolDied;
 	/***/ public String doesNotExist;
 	/***/ public String dontOverwriteLocalChanges;
 	/***/ public String everythingUpToDate;
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
index 3fd0f52..df97e3a 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent;singleton:=true
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
-Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.0.1,6.1.0)"
+Fragment-Host: org.eclipse.jgit.ssh.apache;bundle-version="[6.1.0,6.2.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.agent
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Import-Package: org.eclipse.jgit.transport.sshd;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)"
+Import-Package: org.eclipse.jgit.transport.sshd;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)"
 Require-Bundle: com.sun.jna;bundle-version="[5.8.0,6.0.0)",
  com.sun.jna.platform;bundle-version="[5.8.0,6.0.0)"
-Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="6.0.1";x-internal:=true
+Export-Package: org.eclipse.jgit.internal.transport.sshd.agent.connector;version="6.1.0";x-internal:=true
diff --git a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
index 808de53..3fae07b 100644
--- a/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.agent/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ssh.apache.agent - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.agent.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache.agent;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache.agent/pom.xml b/org.eclipse.jgit.ssh.apache.agent/pom.xml
index 1bd3fad..848d22f 100644
--- a/org.eclipse.jgit.ssh.apache.agent/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.agent/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.agent</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
index 8ff9735..df99ea3 100644
--- a/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.apache.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -21,16 +21,16 @@
  org.apache.sshd.core;version="[2.7.0,2.8.0)",
  org.apache.sshd.server;version="[2.7.0,2.8.0)",
  org.apache.sshd.server.forward;version="[2.7.0,2.8.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit.ssh;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.sshd;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.sshd.agent;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.sshd;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.sshd.agent;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.ssh.apache.test/pom.xml b/org.eclipse.jgit.ssh.apache.test/pom.xml
index a88ddaf..55a9751 100644
--- a/org.eclipse.jgit.ssh.apache.test/pom.xml
+++ b/org.eclipse.jgit.ssh.apache.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
index 81e01cc..d874c73 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.0.1";x-internal:=true;
+Export-Package: org.eclipse.jgit.internal.transport.sshd;version="6.1.0";x-internal:=true;
   uses:="org.apache.sshd.client,
    org.apache.sshd.client.auth,
    org.apache.sshd.client.auth.keyboard,
@@ -23,17 +23,17 @@
    org.apache.sshd.common.signature,
    org.apache.sshd.common.util.buffer,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.internal.transport.sshd.agent;version="6.0.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.auth;version="6.0.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.sshd.proxy;version="6.0.1";x-friends:="org.eclipse.jgit.ssh.apache.test",
- org.eclipse.jgit.transport.sshd;version="6.0.1";
+ org.eclipse.jgit.internal.transport.sshd.agent;version="6.1.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.auth;version="6.1.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.sshd.proxy;version="6.1.0";x-friends:="org.eclipse.jgit.ssh.apache.test",
+ org.eclipse.jgit.transport.sshd;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.apache.sshd.client.config.hosts,
    org.apache.sshd.common.keyprovider,
    org.eclipse.jgit.util,
    org.apache.sshd.client.session,
    org.apache.sshd.client.keyverifier",
- org.eclipse.jgit.transport.sshd.agent;version="6.0.1"
+ org.eclipse.jgit.transport.sshd.agent;version="6.1.0"
 Import-Package: net.i2p.crypto.eddsa;version="[0.3.0,0.4.0)",
  org.apache.sshd.agent;version="[2.7.0,2.8.0)",
  org.apache.sshd.client;version="[2.7.0,2.8.0)",
@@ -83,12 +83,12 @@
  org.apache.sshd.sftp;version="[2.7.0,2.8.0)",
  org.apache.sshd.sftp.client;version="[2.7.0,2.8.0)",
  org.apache.sshd.sftp.common;version="[2.7.0,2.8.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.fnmatch;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.fnmatch;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
index b770b90..3de2242 100644
--- a/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.apache/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ssh.apache - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.apache.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.apache;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.apache/pom.xml b/org.eclipse.jgit.ssh.apache/pom.xml
index 340cca1..ea17425 100644
--- a/org.eclipse.jgit.ssh.apache/pom.xml
+++ b/org.eclipse.jgit.ssh.apache/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
index 52e69bd..d2bf047 100644
--- a/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch.test/META-INF/MANIFEST.MF
@@ -3,18 +3,18 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch.test
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: com.jcraft.jsch;version="[0.1.54,0.2.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit.ssh;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.ssh.jsch;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit.ssh;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.ssh.jsch;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
  org.hamcrest;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
  org.junit.experimental.theories;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.ssh.jsch.test/pom.xml b/org.eclipse.jgit.ssh.jsch.test/pom.xml
index 6f199e6..c1e522a 100644
--- a/org.eclipse.jgit.ssh.jsch.test/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch.test</artifactId>
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
index ed997fb..3c53d4f 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/MANIFEST.MF
@@ -3,19 +3,19 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ssh.jsch
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch;singleton:=true
-Fragment-Host: org.eclipse.jgit;bundle-version="[6.0.1,6.1.0)"
+Fragment-Host: org.eclipse.jgit;bundle-version="[6.1.0,6.2.0)"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.0.1"
+Export-Package: org.eclipse.jgit.transport.ssh.jsch;version="6.1.0"
 Import-Package: com.jcraft.jsch;version="[0.1.37,0.2.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)",
  org.slf4j;version="[1.7.0,2.0.0)"
diff --git a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
index 3c3f2b1..817e0aa 100644
--- a/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ssh.jsch/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ssh.jsch - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ssh.jsch.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ssh.jsch;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ssh.jsch/pom.xml b/org.eclipse.jgit.ssh.jsch/pom.xml
index 2a5f9b8..62d363a 100644
--- a/org.eclipse.jgit.ssh.jsch/pom.xml
+++ b/org.eclipse.jgit.ssh.jsch/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 0469113..95c03a0 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.test
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -16,60 +16,61 @@
  org.apache.commons.compress.compressors.gzip;version="[1.15.0,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.15.0,2.0)",
  org.assertj.core.api;version="[3.14.0,4.0.0)",
- org.eclipse.jgit.annotations;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.api.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.archive;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.attributes;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.awtui;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.blame;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.diff;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.dircache;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.events;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.fnmatch;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.gitrepo;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.hooks;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.ignore;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.ignore.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.fsck;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.io;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.storage.reftable;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.connectivity;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.parser;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.internal.transport.ssh;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.junit.time;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lfs;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.logging;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.merge;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.notes;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.patch;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.pgm;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.pgm.internal;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revplot;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.file;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.storage.pack;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.submodule;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.http;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport.resolver;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.treewalk.filter;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.io;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util.sha1;version="[6.0.1,6.1.0)",
+ org.eclipse.jgit.annotations;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.api.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.archive;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.attributes;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.awtui;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.blame;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.diff;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.dircache;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.events;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.fnmatch;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.gitrepo;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.hooks;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.ignore;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.ignore.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.diffmergetool;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.fsck;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.io;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.storage.reftable;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.connectivity;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.parser;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.internal.transport.ssh;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.junit.time;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lfs;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.logging;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.merge;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.notes;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.patch;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.pgm;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.pgm.internal;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revplot;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.file;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.storage.pack;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.submodule;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.http;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport.resolver;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.treewalk.filter;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.io;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util.sha1;version="[6.1.0,6.2.0)",
  org.hamcrest;version="[1.1.0,3.0.0)",
  org.hamcrest.collection;version="[1.1.0,3.0.0)",
  org.junit;version="[4.13,5.0.0)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 3cab362..29fd8d4 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalDiffToolTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalDiffToolTest.java
new file mode 100644
index 0000000..f07d9d1
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalDiffToolTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2020-2021, Simeon Andreev <simeon.danailov.andreev@gmail.com> and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.diffmergetool;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.eclipse.jgit.lib.internal.BooleanTriState;
+import org.eclipse.jgit.storage.file.FileBasedConfig;
+import org.junit.Test;
+
+/**
+ * Testing external diff tools.
+ */
+public class ExternalDiffToolTest extends ExternalToolTest {
+
+	@Test
+	public void testToolNames() {
+		DiffTools manager = new DiffTools(db);
+		Set<String> actualToolNames = manager.getToolNames();
+		Set<String> expectedToolNames = Collections.emptySet();
+		assertEquals("Incorrect set of external diff tool names",
+				expectedToolNames,
+				actualToolNames);
+	}
+
+	@Test
+	public void testAllTools() {
+		DiffTools manager = new DiffTools(db);
+		Set<String> actualToolNames = manager.getAvailableTools().keySet();
+		Set<String> expectedToolNames = Collections.emptySet();
+		assertEquals("Incorrect set of available external diff tools",
+				expectedToolNames,
+				actualToolNames);
+	}
+
+	@Test
+	public void testUserDefinedTools() {
+		DiffTools manager = new DiffTools(db);
+		Set<String> actualToolNames = manager.getUserDefinedTools().keySet();
+		Set<String> expectedToolNames = Collections.emptySet();
+		assertEquals("Incorrect set of user defined external diff tools",
+				expectedToolNames,
+				actualToolNames);
+	}
+
+	@Test
+	public void testNotAvailableTools() {
+		DiffTools manager = new DiffTools(db);
+		Set<String> actualToolNames = manager.getNotAvailableTools().keySet();
+		Set<String> expectedToolNames = Collections.emptySet();
+		assertEquals("Incorrect set of not available external diff tools",
+				expectedToolNames,
+				actualToolNames);
+	}
+
+	@Test
+	public void testCompare() {
+		DiffTools manager = new DiffTools(db);
+
+		String newPath = "";
+		String oldPath = "";
+		String newId = "";
+		String oldId = "";
+		String toolName = "";
+		BooleanTriState prompt = BooleanTriState.UNSET;
+		BooleanTriState gui = BooleanTriState.UNSET;
+		BooleanTriState trustExitCode = BooleanTriState.UNSET;
+
+		int expectedCompareResult = 0;
+		int compareResult = manager.compare(newPath, oldPath, newId, oldId,
+				toolName, prompt, gui, trustExitCode);
+		assertEquals("Incorrect compare result for external diff tool",
+				expectedCompareResult,
+				compareResult);
+	}
+
+	@Test
+	public void testDefaultTool() throws Exception {
+		FileBasedConfig config = db.getConfig();
+		// the default diff tool is configured without a subsection
+		String subsection = null;
+		config.setString("diff", subsection, "tool", "customTool");
+
+		DiffTools manager = new DiffTools(db);
+		BooleanTriState gui = BooleanTriState.UNSET;
+		String defaultToolName = manager.getDefaultToolName(gui);
+		assertEquals(
+				"Expected configured difftool to be the default external diff tool",
+				"my_default_toolname", defaultToolName);
+
+		gui = BooleanTriState.TRUE;
+		String defaultGuiToolName = manager.getDefaultToolName(gui);
+		assertEquals(
+				"Expected configured difftool to be the default external diff tool",
+				"my_gui_tool", defaultGuiToolName);
+
+		config.setString("diff", subsection, "guitool", "customGuiTool");
+		manager = new DiffTools(db);
+		defaultGuiToolName = manager.getDefaultToolName(gui);
+		assertEquals(
+				"Expected configured difftool to be the default external diff guitool",
+				"my_gui_tool", defaultGuiToolName);
+	}
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTest.java
new file mode 100644
index 0000000..c7c8eca
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/diffmergetool/ExternalToolTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2020-2021, Simeon Andreev <simeon.danailov.andreev@gmail.com> and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.internal.diffmergetool;
+
+import java.io.File;
+import java.nio.file.Files;
+
+import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.eclipse.jgit.util.FS;
+import org.eclipse.jgit.util.FS_POSIX;
+import org.junit.After;
+import org.junit.Assume;
+import org.junit.Before;
+
+/**
+ * Base test case for external merge and diff tool tests.
+ */
+public abstract class ExternalToolTest extends RepositoryTestCase {
+
+	protected static final String DEFAULT_CONTENT = "line1";
+
+	protected File localFile;
+
+	protected File remoteFile;
+
+	protected File mergedFile;
+
+	protected File baseFile;
+
+	protected File commandResult;
+
+	@Before
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+
+		localFile = writeTrashFile("localFile.txt", DEFAULT_CONTENT + "\n");
+		localFile.deleteOnExit();
+		remoteFile = writeTrashFile("remoteFile.txt", DEFAULT_CONTENT + "\n");
+		remoteFile.deleteOnExit();
+		mergedFile = writeTrashFile("mergedFile.txt", "");
+		mergedFile.deleteOnExit();
+		baseFile = writeTrashFile("baseFile.txt", "");
+		baseFile.deleteOnExit();
+		commandResult = writeTrashFile("commandResult.txt", "");
+		commandResult.deleteOnExit();
+	}
+
+	@After
+	@Override
+	public void tearDown() throws Exception {
+		Files.delete(localFile.toPath());
+		Files.delete(remoteFile.toPath());
+		Files.delete(mergedFile.toPath());
+		Files.delete(baseFile.toPath());
+		Files.delete(commandResult.toPath());
+
+		super.tearDown();
+	}
+
+
+	protected static void assumePosixPlatform() {
+		Assume.assumeTrue(
+				"This test can run only in Linux tests",
+				FS.DETECTED instanceof FS_POSIX);
+	}
+}
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index 57a8bee..14511cd 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -4,14 +4,14 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit.ui
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-11
-Export-Package: org.eclipse.jgit.awtui;version="6.0.1"
-Import-Package: org.eclipse.jgit.errors;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.lib;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.nls;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revplot;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.revwalk;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.transport;version="[6.0.1,6.1.0)",
- org.eclipse.jgit.util;version="[6.0.1,6.1.0)"
+Export-Package: org.eclipse.jgit.awtui;version="6.1.0"
+Import-Package: org.eclipse.jgit.errors;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.lib;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.nls;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revplot;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.revwalk;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.transport;version="[6.1.0,6.2.0)",
+ org.eclipse.jgit.util;version="[6.1.0,6.2.0)"
diff --git a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
index 335c157..3128bcd 100644
--- a/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.ui - Sources
 Bundle-SymbolicName: org.eclipse.jgit.ui.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.ui;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index c4a3e2a..2dd9c80 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index e9bb78d..90e5ccb 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@
 Bundle-Name: %Bundle-Name
 Automatic-Module-Name: org.eclipse.jgit
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 6.0.1.qualifier
+Bundle-Version: 6.1.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor
 Eclipse-ExtensibleAPI: true
-Export-Package: org.eclipse.jgit.annotations;version="6.0.1",
- org.eclipse.jgit.api;version="6.0.1";
+Export-Package: org.eclipse.jgit.annotations;version="6.1.0",
+ org.eclipse.jgit.api;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.notes,
    org.eclipse.jgit.dircache,
@@ -23,18 +23,18 @@
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.blame,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="6.0.1";
+ org.eclipse.jgit.api.errors;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="6.0.1";
+ org.eclipse.jgit.attributes;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.blame;version="6.0.1";
+ org.eclipse.jgit.blame;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="6.0.1";
+ org.eclipse.jgit.diff;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.revwalk,
@@ -42,44 +42,47 @@
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="6.0.1";
+ org.eclipse.jgit.dircache;version="6.1.0";
   uses:="org.eclipse.jgit.events,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.errors;version="6.0.1";
+ org.eclipse.jgit.errors;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.internal.storage.pack",
- org.eclipse.jgit.events;version="6.0.1";
+ org.eclipse.jgit.events;version="6.1.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="6.0.1",
- org.eclipse.jgit.gitrepo;version="6.0.1";
+ org.eclipse.jgit.fnmatch;version="6.1.0",
+ org.eclipse.jgit.gitrepo;version="6.1.0";
   uses:="org.xml.sax.helpers,
    org.eclipse.jgit.api,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="6.0.1";x-internal:=true,
- org.eclipse.jgit.hooks;version="6.0.1";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="6.0.1",
- org.eclipse.jgit.ignore.internal;version="6.0.1";
+ org.eclipse.jgit.gitrepo.internal;version="6.1.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="6.1.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="6.1.0",
+ org.eclipse.jgit.ignore.internal;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="6.0.1";
+ org.eclipse.jgit.internal;version="6.1.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.fsck;version="6.0.1";
+ org.eclipse.jgit.internal.diffmergetool;version="6.1.0";
+  x-friends:="org.eclipse.jgit.test,
+   org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.fsck;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.revwalk;version="6.0.1";
+ org.eclipse.jgit.internal.revwalk;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.storage.dfs;version="6.0.1";
+ org.eclipse.jgit.internal.storage.dfs;version="6.1.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.http.server,
    org.eclipse.jgit.http.test,
    org.eclipse.jgit.lfs.test",
- org.eclipse.jgit.internal.storage.file;version="6.0.1";
+ org.eclipse.jgit.internal.storage.file;version="6.1.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -88,32 +91,32 @@
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test,
    org.eclipse.jgit.ssh.apache",
- org.eclipse.jgit.internal.storage.io;version="6.0.1";
+ org.eclipse.jgit.internal.storage.io;version="6.1.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.pack;version="6.0.1";
+ org.eclipse.jgit.internal.storage.pack;version="6.1.0";
   x-friends:="org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftable;version="6.0.1";
+ org.eclipse.jgit.internal.storage.reftable;version="6.1.0";
   x-friends:="org.eclipse.jgit.http.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.test,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.submodule;version="6.0.1";x-internal:=true,
- org.eclipse.jgit.internal.transport.connectivity;version="6.0.1";
+ org.eclipse.jgit.internal.submodule;version="6.1.0";x-internal:=true,
+ org.eclipse.jgit.internal.transport.connectivity;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.http;version="6.0.1";
+ org.eclipse.jgit.internal.transport.http;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.parser;version="6.0.1";
+ org.eclipse.jgit.internal.transport.parser;version="6.1.0";
   x-friends:="org.eclipse.jgit.http.server,
    org.eclipse.jgit.test",
- org.eclipse.jgit.internal.transport.ssh;version="6.0.1";
+ org.eclipse.jgit.internal.transport.ssh;version="6.1.0";
   x-friends:="org.eclipse.jgit.ssh.apache,
    org.eclipse.jgit.ssh.jsch,
    org.eclipse.jgit.test",
- org.eclipse.jgit.lib;version="6.0.1";
+ org.eclipse.jgit.lib;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util.sha1,
    org.eclipse.jgit.dircache,
@@ -127,10 +130,10 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.lib.internal;version="6.0.1";
+ org.eclipse.jgit.lib.internal;version="6.1.0";
   x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.logging;version="6.0.1",
- org.eclipse.jgit.merge;version="6.0.1";
+ org.eclipse.jgit.logging;version="6.1.0",
+ org.eclipse.jgit.merge;version="6.1.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
@@ -139,40 +142,40 @@
    org.eclipse.jgit.util,
    org.eclipse.jgit.api,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.nls;version="6.0.1",
- org.eclipse.jgit.notes;version="6.0.1";
+ org.eclipse.jgit.nls;version="6.1.0",
+ org.eclipse.jgit.notes;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="6.0.1";
+ org.eclipse.jgit.patch;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="6.0.1";
+ org.eclipse.jgit.revplot;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="6.0.1";
+ org.eclipse.jgit.revwalk;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.revwalk.filter,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.revwalk.filter;version="6.0.1";
+ org.eclipse.jgit.revwalk.filter;version="6.1.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="6.0.1";
+ org.eclipse.jgit.storage.file;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="6.0.1";
+ org.eclipse.jgit.storage.pack;version="6.1.0";
   uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="6.0.1";
+ org.eclipse.jgit.submodule;version="6.1.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util",
- org.eclipse.jgit.transport;version="6.0.1";
+ org.eclipse.jgit.transport;version="6.1.0";
   uses:="javax.crypto,
    org.eclipse.jgit.util.io,
    org.eclipse.jgit.lib,
@@ -185,21 +188,21 @@
    org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.storage.pack,
    org.eclipse.jgit.errors",
- org.eclipse.jgit.transport.http;version="6.0.1";
+ org.eclipse.jgit.transport.http;version="6.1.0";
   uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="6.0.1";
+ org.eclipse.jgit.transport.resolver;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.lib",
- org.eclipse.jgit.treewalk;version="6.0.1";
+ org.eclipse.jgit.treewalk;version="6.1.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util",
- org.eclipse.jgit.treewalk.filter;version="6.0.1";
+ org.eclipse.jgit.treewalk.filter;version="6.1.0";
   uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="6.0.1";
+ org.eclipse.jgit.util;version="6.1.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.hooks,
    org.eclipse.jgit.revwalk,
@@ -212,12 +215,12 @@
    org.eclipse.jgit.treewalk,
    javax.net.ssl,
    org.eclipse.jgit.util.time",
- org.eclipse.jgit.util.io;version="6.0.1";
+ org.eclipse.jgit.util.io;version="6.1.0";
   uses:="org.eclipse.jgit.attributes,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util.sha1;version="6.0.1",
- org.eclipse.jgit.util.time;version="6.0.1"
+ org.eclipse.jgit.util.sha1;version="6.1.0",
+ org.eclipse.jgit.util.time;version="6.1.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
  javax.crypto,
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index 302c454..99e5acd 100644
--- a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 6.0.1.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="6.0.1.qualifier";roots="."
+Bundle-Version: 6.1.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="6.1.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index e782272..d350171 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>6.0.1-SNAPSHOT</version>
+    <version>6.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java
new file mode 100644
index 0000000..cb0640d
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/DiffTools.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2018-2021, Andre Bossert <andre.bossert@siemens.com>
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.diffmergetool;
+
+import java.util.TreeMap;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.internal.BooleanTriState;
+
+/**
+ * Manages diff tools.
+ */
+public class DiffTools {
+
+	private Map<String, ExternalDiffTool> predefinedTools;
+
+	private Map<String, ExternalDiffTool> userDefinedTools;
+
+	/**
+	 * Creates the external diff-tools manager for given repository.
+	 *
+	 * @param repo
+	 *            the repository database
+	 */
+	public DiffTools(Repository repo) {
+		setupPredefinedTools();
+		setupUserDefinedTools();
+	}
+
+	/**
+	 * Compare two versions of a file.
+	 *
+	 * @param newPath
+	 *            the new file path
+	 * @param oldPath
+	 *            the old file path
+	 * @param newId
+	 *            the new object ID
+	 * @param oldId
+	 *            the old object ID
+	 * @param toolName
+	 *            the selected tool name (can be null)
+	 * @param prompt
+	 *            the prompt option
+	 * @param gui
+	 *            the GUI option
+	 * @param trustExitCode
+	 *            the "trust exit code" option
+	 * @return the return code from executed tool
+	 */
+	public int compare(String newPath, String oldPath, String newId,
+			String oldId, String toolName, BooleanTriState prompt,
+			BooleanTriState gui, BooleanTriState trustExitCode) {
+		return 0;
+	}
+
+	/**
+	 * @return the tool names
+	 */
+	public Set<String> getToolNames() {
+		return Collections.emptySet();
+	}
+
+	/**
+	 * @return the user defined tools
+	 */
+	public Map<String, ExternalDiffTool> getUserDefinedTools() {
+		return Collections.unmodifiableMap(userDefinedTools);
+	}
+
+	/**
+	 * @return the available predefined tools
+	 */
+	public Map<String, ExternalDiffTool> getAvailableTools() {
+		return Collections.unmodifiableMap(predefinedTools);
+	}
+
+	/**
+	 * @return the NOT available predefined tools
+	 */
+	public Map<String, ExternalDiffTool> getNotAvailableTools() {
+		return Collections.unmodifiableMap(new TreeMap<>());
+	}
+
+	/**
+	 * @param gui
+	 *            use the diff.guitool setting ?
+	 * @return the default tool name
+	 */
+	public String getDefaultToolName(BooleanTriState gui) {
+		return gui != BooleanTriState.UNSET ? "my_gui_tool" //$NON-NLS-1$
+				: "my_default_toolname"; //$NON-NLS-1$
+	}
+
+	/**
+	 * @return is interactive (config prompt enabled) ?
+	 */
+	public boolean isInteractive() {
+		return false;
+	}
+
+	private void setupPredefinedTools() {
+		predefinedTools = new TreeMap<>();
+	}
+
+	private void setupUserDefinedTools() {
+		userDefinedTools = new TreeMap<>();
+	}
+
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalDiffTool.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalDiffTool.java
new file mode 100644
index 0000000..f2d7e82
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/diffmergetool/ExternalDiffTool.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2018-2021, Andre Bossert <andre.bossert@siemens.com>
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.internal.diffmergetool;
+
+/**
+ * The external tool interface.
+ */
+public interface ExternalDiffTool {
+
+	/**
+	 * @return the tool name
+	 */
+	String getName();
+
+	/**
+	 * @return the tool path
+	 */
+	String getPath();
+
+	/**
+	 * @return the tool command
+	 */
+	String getCommand();
+
+}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/internal/BooleanTriState.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/internal/BooleanTriState.java
new file mode 100644
index 0000000..44d3bb3
--- /dev/null
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/internal/BooleanTriState.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 Simeon Andreev <simeon.danailov.andreev@gmail.com> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.lib.internal;
+
+/**
+ * A boolean value that can also have an unset state.
+ */
+public enum BooleanTriState {
+	/**
+	 * Value equivalent to {@code true}.
+	 */
+	TRUE,
+	/**
+	 * Value equivalent to {@code false}.
+	 */
+	FALSE,
+	/**
+	 * Value is not set.
+	 */
+	UNSET;
+}
diff --git a/pom.xml b/pom.xml
index 0fce563..4f58da3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>org.eclipse.jgit-parent</artifactId>
   <packaging>pom</packaging>
-  <version>6.0.1-SNAPSHOT</version>
+  <version>6.1.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>