You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2019/11/06 18:48:22 UTC

[netbeans] branch master updated: [NETBEANS-519] Update jgit

This is an automated email from the ASF dual-hosted git repository.

matthiasblaesing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 2bda6fa  [NETBEANS-519] Update jgit
     new 625615c  Merge pull request #1528 from matthiasblaesing/update-jgit
2bda6fa is described below

commit 2bda6fa5ce9232374febdf794d410508c6b443cd
Author: Matthias Bläsing <mb...@doppel-helix.eu>
AuthorDate: Sat Sep 21 20:07:23 2019 +0200

    [NETBEANS-519] Update jgit
    
    - Update JavaEWAH to 1.1.6
    - Update JSch to 0.1.55
    - Update JZlib to 1.1.3
    - Include Bouncy Castle Java Provider 1.63
    - Include Bouncy Castle Java OpenPGP/BCPG 1.63
    - Include SLF4J 1.7.28
    - Drop jgit-java7
    - Fix unittest/remove invalid unittest
---
 ....7.9-license.txt => JavaEWAH-1.1.6-license.txt} |  2 +-
 .../external/binaries-list                         |  2 +-
 .../nbproject/project.properties                   |  2 +-
 .../nbproject/project.xml                          |  2 +-
 ide/c.jcraft.jsch/build.xml                        |  8 +--
 ide/c.jcraft.jsch/external/binaries-list           |  2 +-
 ...-0.1.54-license.txt => jsch-0.1.55-license.txt} |  2 +-
 ide/c.jcraft.jsch/nbproject/project.properties     |  2 +-
 ide/c.jcraft.jsch/nbproject/project.xml            |  2 +-
 ide/c.jcraft.jzlib/build.xml                       |  6 +-
 ide/c.jcraft.jzlib/external/binaries-list          |  2 +-
 ...b-1.0.7-license.txt => jzlib-1.1.3-license.txt} |  2 +-
 ide/c.jcraft.jzlib/nbproject/project.properties    |  2 +-
 ide/c.jcraft.jzlib/nbproject/project.xml           |  2 +-
 ide/ide.kit/module-auto-deps.xml                   |  4 +-
 ide/libs.git/nbproject/project.xml                 |  9 +--
 .../org/netbeans/libs/git/GitRefUpdateResult.java  |  9 +++
 .../src/org/netbeans/libs/git/GitRevisionInfo.java | 12 ++--
 .../src/org/netbeans/libs/git/jgit/IgnoreRule.java |  2 +-
 .../libs/git/jgit/commands/AddCommand.java         | 16 ++---
 .../git/jgit/commands/CheckoutRevisionCommand.java | 26 ++------
 .../libs/git/jgit/commands/CherryPickCommand.java  | 12 ++--
 .../libs/git/jgit/commands/CompareCommand.java     |  8 +--
 .../git/jgit/commands/CreateBranchCommand.java     |  2 +-
 .../git/jgit/commands/ExportCommitCommand.java     |  8 +--
 .../libs/git/jgit/commands/ExportDiffCommand.java  | 13 +---
 .../jgit/commands/GetCommonAncestorCommand.java    | 16 ++---
 .../jgit/commands/GetPreviousCommitCommand.java    | 26 ++++----
 .../git/jgit/commands/IgnoreUnignoreCommand.java   |  3 +-
 .../libs/git/jgit/commands/ListTagCommand.java     |  7 +--
 .../libs/git/jgit/commands/LogCommand.java         | 11 ++--
 .../libs/git/jgit/commands/MergeCommand.java       |  2 +-
 .../libs/git/jgit/commands/MoveTreeCommand.java    | 35 +++++++++--
 .../libs/git/jgit/commands/PullCommand.java        |  2 +-
 .../libs/git/jgit/commands/RebaseCommand.java      |  7 +--
 .../libs/git/jgit/commands/RevertCommand.java      | 12 ++--
 .../jgit/commands/SetUpstreamBranchCommand.java    |  2 +-
 .../libs/git/jgit/commands/StashListCommand.java   |  5 +-
 .../libs/git/jgit/commands/StatusCommand.java      | 21 +++----
 .../libs/git/jgit/commands/UpdateRefCommand.java   |  4 +-
 .../libs/git/jgit/utils/CheckoutIndex.java         | 58 ++++++++----------
 .../libs/git/jgit/ClientFactoryTestSuite.java      |  2 -
 .../netbeans/libs/git/jgit/commands/AddTest.java   | 71 ++++++++++------------
 .../libs/git/jgit/commands/BranchTest.java         |  2 +-
 .../libs/git/jgit/commands/CheckoutTest.java       | 34 +----------
 .../libs/git/jgit/commands/ExportDiffTest.java     | 42 ++++++-------
 .../netbeans/libs/git/jgit/commands/FetchTest.java | 22 -------
 .../libs/git/jgit/commands/StatusTest.java         |  2 +-
 .../git/jgit/factory/CheckJava7ExtensionTest.java  | 51 ----------------
 .../libs/git/jgit/factory/CreateClientTest.java    | 19 +-----
 .../build.xml                                      |  8 +--
 .../external/bcpg-jdk15on-1.63-license.txt         | 24 ++++++++
 .../external/binaries-list                         |  2 +-
 ide/o.bouncycastle.bcpg/manifest.mf                |  1 +
 .../nbproject/project.properties                   |  2 +-
 .../nbproject/project.xml                          |  6 +-
 .../build.xml                                      |  8 +--
 .../external/bcprov-jdk15on-1.63-license.txt       | 24 ++++++++
 .../external/binaries-list                         |  2 +-
 ide/o.bouncycastle.bcprov/manifest.mf              |  1 +
 .../nbproject/project.properties                   |  2 +-
 .../nbproject/project.xml                          |  6 +-
 ide/o.eclipse.jgit.java7/external/binaries-list    | 17 ------
 ide/o.eclipse.jgit.java7/manifest.mf               |  1 -
 .../nbproject/project.properties                   | 18 ------
 ide/o.eclipse.jgit/external/binaries-list          |  2 +-
 ...g.eclipse.jgit-3.6.2.201501210735-r-license.txt | 35 -----------
 ....eclipse.jgit-5.5.0.201909110433-r-license.txt} |  4 +-
 ide/o.eclipse.jgit/nbproject/project.properties    |  2 +-
 ide/o.eclipse.jgit/nbproject/project.xml           | 36 ++++++++++-
 .../build.xml                                      | 10 +--
 .../external/binaries-list                         |  2 +-
 .../external/slf4j-api-1.7.28-license.txt          | 27 ++++++++
 ide/o.slf4j.api/manifest.mf                        |  1 +
 .../nbproject/project.properties                   |  2 +-
 .../nbproject/project.xml                          |  6 +-
 .../build.xml                                      |  8 +--
 .../external/binaries-list                         |  2 +-
 .../external/slf4j-jdk14-1.7.28-license.txt        | 27 ++++++++
 ide/o.slf4j.jdk14/manifest.mf                      |  1 +
 .../nbproject/project.properties                   |  2 +-
 .../nbproject/project.xml                          |  6 +-
 nbbuild/cluster.properties                         |  5 +-
 nbbuild/licenses/MIT-bouncycastle                  | 18 ++++++
 nbbuild/licenses/MIT-slf4j                         | 21 +++++++
 85 files changed, 441 insertions(+), 513 deletions(-)

diff --git a/ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-0.7.9-license.txt b/ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-1.1.6-license.txt
similarity index 99%
rename from ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-0.7.9-license.txt
rename to ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-1.1.6-license.txt
index 1584d4a..35dd48b 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-0.7.9-license.txt
+++ b/ide/c.googlecode.javaewah.JavaEWAH/external/JavaEWAH-1.1.6-license.txt
@@ -1,5 +1,5 @@
 Name: JavaEWAH
-Version: 0.7.9
+Version: 1.1.6
 License: Apache-2.0
 Origin: JavaEWAH Project
 URL: https://github.com/lemire/javaewah
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/external/binaries-list b/ide/c.googlecode.javaewah.JavaEWAH/external/binaries-list
index 8c309a1..11cac1d 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/external/binaries-list
+++ b/ide/c.googlecode.javaewah.JavaEWAH/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-ECEAF316A8FAF0E794296EBE158AE110C7D72A5A com.googlecode.javaewah:JavaEWAH:0.7.9
+94AD16D728B374D65BD897625F3FBB3DA223A2B6 com.googlecode.javaewah:JavaEWAH:1.1.6
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties b/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
index 3bdaa1b..8df7bfc 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
+++ b/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 is.autoload=true
-release.external/JavaEWAH-0.7.9.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
+release.external/JavaEWAH-1.1.6.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.xml b/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.xml
index 01cbee1..8ab3cf5 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.xml
+++ b/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.xml
@@ -28,7 +28,7 @@
             <public-packages/>
             <class-path-extension>
                 <runtime-relative-path>com-googlecode-javaewah-JavaEWAH.jar</runtime-relative-path>
-                <binary-origin>external/JavaEWAH-0.7.9.jar</binary-origin>
+                <binary-origin>external/JavaEWAH-1.1.6.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/c.jcraft.jsch/build.xml b/ide/c.jcraft.jsch/build.xml
index b137e33..d2f3231 100644
--- a/ide/c.jcraft.jsch/build.xml
+++ b/ide/c.jcraft.jsch/build.xml
@@ -22,13 +22,13 @@
 <project name="ide/c.jcraft.jsch" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
     <target name="jar" depends="-define-FileCRC32Calculator">
-        <FileCRC32Calculator file="external/jsch-0.1.54.jar" property="c.jcraft.jsch.crc32" />
+        <FileCRC32Calculator file="external/jsch-0.1.55.jar" property="c.jcraft.jsch.crc32" />
         <jar jarfile="${cluster}/${module.jar}">
-            <zipfileset src="external/jsch-0.1.54.jar"/>
+            <zipfileset src="external/jsch-0.1.55.jar"/>
             <manifest>
                 <attribute name="Bundle-SymbolicName" value="com.jcraft.jsch"/>
-                <attribute name="Bundle-Version" value="0.1.54"/>
-                <attribute name="Export-Package" value="com.jcraft.jsch"/>
+                <attribute name="Bundle-Version" value="0.1.55"/>
+                <attribute name="Export-Package" value="com.jcraft.jsch;version=0.1.55"/>
                 <attribute name="Import-Package" value="javax.crypto,javax.crypto.spec,javax.crypto.interfaces,org.ietf.jgss"/>
                 <attribute name="Require-Bundle" value="com.jcraft.jzlib"/>
                 <attribute name="NB-Original-CRC" value="${c.jcraft.jsch.crc32}"/>
diff --git a/ide/c.jcraft.jsch/external/binaries-list b/ide/c.jcraft.jsch/external/binaries-list
index 5191345..e467e01 100644
--- a/ide/c.jcraft.jsch/external/binaries-list
+++ b/ide/c.jcraft.jsch/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-DA3584329A263616E277E15462B387ADDD1B208D com.jcraft:jsch:0.1.54
+BBD40E5AA7AA3CFAD5DB34965456CEE738A42A50 com.jcraft:jsch:0.1.55
diff --git a/ide/c.jcraft.jsch/external/jsch-0.1.54-license.txt b/ide/c.jcraft.jsch/external/jsch-0.1.55-license.txt
similarity index 99%
rename from ide/c.jcraft.jsch/external/jsch-0.1.54-license.txt
rename to ide/c.jcraft.jsch/external/jsch-0.1.55-license.txt
index 2d1b8a6..f23d4b7 100644
--- a/ide/c.jcraft.jsch/external/jsch-0.1.54-license.txt
+++ b/ide/c.jcraft.jsch/external/jsch-0.1.55-license.txt
@@ -1,5 +1,5 @@
 Name: JSch
-Version: 0.1.54
+Version: 0.1.55
 License: BSD-jsch
 Origin: JCraft Inc.
 URL: http://www.jcraft.com/jsch/
diff --git a/ide/c.jcraft.jsch/nbproject/project.properties b/ide/c.jcraft.jsch/nbproject/project.properties
index 456524e..3f86e35 100644
--- a/ide/c.jcraft.jsch/nbproject/project.properties
+++ b/ide/c.jcraft.jsch/nbproject/project.properties
@@ -16,6 +16,6 @@
 # under the License.
 
 is.autoload=true
-extra.license.files=external/jsch-0.1.54-license.txt
+extra.license.files=external/jsch-0.1.55-license.txt
 sigtest.gen.fail.on.error=false
 
diff --git a/ide/c.jcraft.jsch/nbproject/project.xml b/ide/c.jcraft.jsch/nbproject/project.xml
index b7e32d4..b1b4ece 100644
--- a/ide/c.jcraft.jsch/nbproject/project.xml
+++ b/ide/c.jcraft.jsch/nbproject/project.xml
@@ -34,7 +34,7 @@
             <public-packages/>
             <class-path-extension>
                 <runtime-relative-path>com-jcraft-jsch.jar</runtime-relative-path>
-                <binary-origin>external/jsch-0.1.54.jar</binary-origin>
+                <binary-origin>external/jsch-0.1.55.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/c.jcraft.jzlib/build.xml b/ide/c.jcraft.jzlib/build.xml
index c263370..e17ec73 100644
--- a/ide/c.jcraft.jzlib/build.xml
+++ b/ide/c.jcraft.jzlib/build.xml
@@ -22,12 +22,12 @@
 <project name="ide/c.jcraft.jzlib" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
     <target name="jar" depends="-define-FileCRC32Calculator">
-        <FileCRC32Calculator file="external/jzlib-1.0.7.jar" property="c.jcraft.jzlib.crc32" />
+        <FileCRC32Calculator file="external/jzlib-1.1.3.jar" property="c.jcraft.jzlib.crc32" />
         <jar jarfile="${cluster}/${module.jar}">
-            <zipfileset src="external/jzlib-1.0.7.jar"/>
+            <zipfileset src="external/jzlib-1.1.3.jar"/>
             <manifest>
                 <attribute name="Bundle-SymbolicName" value="com.jcraft.jzlib"/>
-                <attribute name="Bundle-Version" value="1.0.7"/>
+                <attribute name="Bundle-Version" value="1.1.3"/>
                 <attribute name="Export-Package" value="com.jcraft.jzlib"/>
                 <attribute name="NB-Original-CRC" value="${c.jcraft.jzlib.crc32}"/>
             </manifest>
diff --git a/ide/c.jcraft.jzlib/external/binaries-list b/ide/c.jcraft.jzlib/external/binaries-list
index 33a1f81e..01d688e 100644
--- a/ide/c.jcraft.jzlib/external/binaries-list
+++ b/ide/c.jcraft.jzlib/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-BA26D908C6EABE519EF645D81D4E267DE7280F8F com.jcraft:jzlib:1.0.7
+C01428EFA717624F7AABF4DF319939DDA9646B2D com.jcraft:jzlib:1.1.3
\ No newline at end of file
diff --git a/ide/c.jcraft.jzlib/external/jzlib-1.0.7-license.txt b/ide/c.jcraft.jzlib/external/jzlib-1.1.3-license.txt
similarity index 99%
rename from ide/c.jcraft.jzlib/external/jzlib-1.0.7-license.txt
rename to ide/c.jcraft.jzlib/external/jzlib-1.1.3-license.txt
index be8bf26..cd260b6 100644
--- a/ide/c.jcraft.jzlib/external/jzlib-1.0.7-license.txt
+++ b/ide/c.jcraft.jzlib/external/jzlib-1.1.3-license.txt
@@ -1,5 +1,5 @@
 Name: JZlib
-Version: 1.0.7
+Version: 1.1.3
 License: BSD-jzlib
 Origin: JCraft, Inc.
 URL: http://www.jcraft.com/jzlib/
diff --git a/ide/c.jcraft.jzlib/nbproject/project.properties b/ide/c.jcraft.jzlib/nbproject/project.properties
index 76390d3..422225b 100644
--- a/ide/c.jcraft.jzlib/nbproject/project.properties
+++ b/ide/c.jcraft.jzlib/nbproject/project.properties
@@ -16,6 +16,6 @@
 # under the License.
 
 is.autoload=true
-extra.license.files=external/jzlib-1.0.7-license.txt
+extra.license.files=external/jzlib-1.1.3-license.txt
 spec.version.base=1.31.0
 sigtest.gen.fail.on.error=false
diff --git a/ide/c.jcraft.jzlib/nbproject/project.xml b/ide/c.jcraft.jzlib/nbproject/project.xml
index 76ce929..5b5c97d 100644
--- a/ide/c.jcraft.jzlib/nbproject/project.xml
+++ b/ide/c.jcraft.jzlib/nbproject/project.xml
@@ -28,7 +28,7 @@
             <public-packages/>
             <class-path-extension>
                 <runtime-relative-path>com-jcraft-jzlib.jar</runtime-relative-path>
-		<binary-origin>external/jzlib-1.0.7.jar</binary-origin>
+                <binary-origin>external/jzlib-1.1.3.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/ide.kit/module-auto-deps.xml b/ide/ide.kit/module-auto-deps.xml
index b022d03..eab3a6c 100644
--- a/ide/ide.kit/module-auto-deps.xml
+++ b/ide/ide.kit/module-auto-deps.xml
@@ -29,7 +29,7 @@
             </trigger-dependency>
             <implies>
                 <result>
-                    <module-dependency codenamebase="com.jcraft.jzlib" spec="1.0.7"/>
+                    <module-dependency codenamebase="com.jcraft.jzlib" spec="1.1.3"/>
                 </result>
             </implies>
         </transformation>
@@ -39,7 +39,7 @@
             </trigger-dependency>
             <implies>
                 <result>
-                    <module-dependency codenamebase="com.jcraft.jsch" spec="0.1.43"/>
+                    <module-dependency codenamebase="com.jcraft.jsch" spec="0.1.55"/>
                 </result>
             </implies>
         </transformation>
diff --git a/ide/libs.git/nbproject/project.xml b/ide/libs.git/nbproject/project.xml
index 1929ff8..bb46eb4 100644
--- a/ide/libs.git/nbproject/project.xml
+++ b/ide/libs.git/nbproject/project.xml
@@ -30,14 +30,15 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>0.1.49</specification-version>
+                        <specification-version>0.1.55</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
                     <code-name-base>org.eclipse.jgit</code-name-base>
+                    <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>3.6.2</specification-version>
+                        <specification-version>5.5.0</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
@@ -54,10 +55,6 @@
                 <test-type>
                     <name>unit</name>
                     <test-dependency>
-                        <code-name-base>org.eclipse.jgit.java7</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
                         <code-name-base>org.netbeans.libs.junit4</code-name-base>
                         <recursive/>
                         <compile-dependency/>
diff --git a/ide/libs.git/src/org/netbeans/libs/git/GitRefUpdateResult.java b/ide/libs.git/src/org/netbeans/libs/git/GitRefUpdateResult.java
index eb0f132..84844f6 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/GitRefUpdateResult.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/GitRefUpdateResult.java
@@ -136,6 +136,15 @@ public enum GitRefUpdateResult {
     REJECTED_OTHER_REASON,
 
     /**
+     * One or more objects aren't in the repository.
+     * <p>
+     * This is severe indication of either repository corruption on the
+     * server side, or a bug in the client wherein the client did not supply
+     * all required objects during the pack transfer.
+     */
+    REJECTED_MISSING_OBJECT,
+
+    /**
      * Remote ref didn't exist. Can occur on delete request of a non
      * existing ref.
      */
diff --git a/ide/libs.git/src/org/netbeans/libs/git/GitRevisionInfo.java b/ide/libs.git/src/org/netbeans/libs/git/GitRevisionInfo.java
index 38c1ace..772e983 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/GitRevisionInfo.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/GitRevisionInfo.java
@@ -146,7 +146,7 @@ public final class GitRevisionInfo {
                 listFiles();
             }
         }
-        Map<File, GitFileInfo> files = new HashMap<File, GitFileInfo>(modifiedFiles.length);
+        Map<File, GitFileInfo> files = new HashMap<>(modifiedFiles.length);
         for (GitFileInfo info : modifiedFiles) {
             files.put(info.getFile(), info);
         }
@@ -173,9 +173,8 @@ public final class GitRevisionInfo {
     }
     
     private void listFiles() throws GitException {
-        RevWalk revWalk = new RevWalk(repository);
-        TreeWalk walk = new TreeWalk(repository);
-        try {
+        try (RevWalk revWalk = new RevWalk(repository);
+            TreeWalk walk = new TreeWalk(repository)) {
             List<GitFileInfo> result;
             walk.reset();
             walk.setRecursive(true);
@@ -198,7 +197,7 @@ public final class GitRevisionInfo {
             if (parentCommit != null) {
                 result = Utils.getDiffEntries(repository, walk, GitClassFactoryImpl.getInstance());
             } else {
-                result = new ArrayList<GitFileInfo>();
+                result = new ArrayList<>();
                 while (walk.next()) {
                     result.add(new GitFileInfo(new File(repository.getWorkTree(), walk.getPathString()), walk.getPathString(), GitFileInfo.Status.ADDED, null, null));
                 }
@@ -206,9 +205,6 @@ public final class GitRevisionInfo {
             this.modifiedFiles = result.toArray(new GitFileInfo[result.size()]);
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            revWalk.release();
-            walk.release();
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/IgnoreRule.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/IgnoreRule.java
index 9a0d29b..42b7a79 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/IgnoreRule.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/IgnoreRule.java
@@ -23,7 +23,7 @@ package org.netbeans.libs.git.jgit;
  *
  * @author ondra
  */
-public class IgnoreRule extends org.eclipse.jgit.ignore.IgnoreRule {
+public class IgnoreRule extends org.eclipse.jgit.ignore.FastIgnoreRule {
 
     private final String pattern;
     private final String noNegationPattern;
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/AddCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/AddCommand.java
index 3b40abf..fdb10e5 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/AddCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/AddCommand.java
@@ -42,7 +42,6 @@ import org.eclipse.jgit.lib.CoreConfig;
 import org.eclipse.jgit.lib.FileMode;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectInserter;
-import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.treewalk.FileTreeIterator;
 import org.eclipse.jgit.treewalk.TreeWalk;
@@ -84,10 +83,8 @@ public class AddCommand extends GitCommand {
     @Override
     protected void run() throws GitException {
         Repository repository = getRepository();
-        try {
+        try (ObjectInserter inserter = repository.newObjectInserter()) {
             DirCache cache = null;
-            ObjectInserter inserter = repository.newObjectInserter();
-            ObjectReader or = repository.newObjectReader();
             try {
                 cache = repository.lockDirCache();
                 DirCacheBuilder builder = cache.builder();
@@ -127,7 +124,7 @@ public class AddCommand extends GitCommand {
                                 entry.setLength(sz);
                                 entry.setObjectId(f.getEntryObjectId());
                             } else if (p != null && Files.isSymbolicLink(p)) {
-                                Path link = Utils.getLinkPath(p);                                
+                                Path link = Utils.getLinkPath(p);
                                 entry.setFileMode(FileMode.SYMLINK);
                                 entry.setLength(0);
                                 BasicFileAttributes attrs = Files.readAttributes(p, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
@@ -145,8 +142,7 @@ public class AddCommand extends GitCommand {
                                     indexFileMode = FileMode.REGULAR_FILE;
                                 }
                                 entry.setFileMode(indexFileMode);
-                                InputStream in = f.openEntryStream();
-                                try {
+                                try (InputStream in = f.openEntryStream()) {
                                     if (autocrlf) {
                                         ByteBuffer buf = IO.readWholeStream(in, (int) sz);
                                         entry.setObjectId(inserter.insert(Constants.OBJ_BLOB, buf.array(), buf.position(), buf.limit() - buf.position()));
@@ -154,8 +150,6 @@ public class AddCommand extends GitCommand {
                                         entry.setObjectId(inserter.insert(Constants.OBJ_BLOB, sz, in));
                                     }
                                     entry.setLength(sz);
-                                } finally {
-                                    in.close();
                                 }
                             }
                             ObjectId oldId = treeWalk.getObjectId(0);
@@ -179,9 +173,7 @@ public class AddCommand extends GitCommand {
                     builder.commit();
                 }
             } finally {
-                inserter.release();
-                or.release();
-                if (cache != null ) {
+                if (cache != null) {
                     cache.unlock();
                 }
             }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CheckoutRevisionCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CheckoutRevisionCommand.java
index f5723b2..51314d6 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CheckoutRevisionCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CheckoutRevisionCommand.java
@@ -96,7 +96,7 @@ public class CheckoutRevisionCommand extends GitCommand {
     protected void run () throws GitException {
         Repository repository = getRepository();
         try {
-            Ref headRef = repository.getRef(Constants.HEAD);
+            Ref headRef = repository.findRef(Constants.HEAD);
             if (headRef == null) {
                 throw new GitException("Corrupted repository, missing HEAD file in .git folder.");
             }
@@ -104,7 +104,7 @@ public class CheckoutRevisionCommand extends GitCommand {
             try {
                 headTree = Utils.findCommit(repository, Constants.HEAD).getTree();
             } catch (GitException.MissingObjectException ex) { }
-            Ref ref = repository.getRef(revision);
+            Ref ref = repository.findRef(revision);
             if (ref != null && !ref.getName().startsWith(Constants.R_HEADS) && !ref.getName().startsWith(Constants.R_REMOTES)) {
                 ref = null;
             }
@@ -131,15 +131,7 @@ public class CheckoutRevisionCommand extends GitCommand {
                 dco.checkout();
                 cache.lock();
                 
-                File workDir = repository.getWorkTree();
-                for (String path : dco.getUpdated().keySet()) {
-                    // work-around for submodule roots
-                    DirCacheEntry e = cache.getEntry(path);
-                    if (FileMode.GITLINK.equals(e.getRawMode())) {
-                        new File(workDir, path).mkdirs();
-                    }
-                }
-                
+                File workDir = repository.getWorkTree();                
                 notify(workDir, dco.getRemoved());
                 notify(workDir, dco.getConflicts());
                 notify(workDir, dco.getUpdated().keySet());
@@ -228,8 +220,7 @@ public class CheckoutRevisionCommand extends GitCommand {
 
     @Override
     protected String getCommandDescription () {
-        StringBuilder sb = new StringBuilder("git checkout ").append(revision); //NOI18N
-        return sb.toString();
+        return "git checkout " + revision; //NOI18N
     }
 
     private void notify (File workDir, Collection<String> paths) {
@@ -241,10 +232,9 @@ public class CheckoutRevisionCommand extends GitCommand {
 
     private void cacheContents (List<String> conflicts) throws IOException {
         File workTree = getRepository().getWorkTree();
-        ObjectInserter inserter = getRepository().newObjectInserter();
         WorkingTreeOptions opt = getRepository().getConfig().get(WorkingTreeOptions.KEY);
         boolean autocrlf = opt.getAutoCRLF() != CoreConfig.AutoCRLF.FALSE;
-        try {
+        try (ObjectInserter inserter = getRepository().newObjectInserter();) {
             for (String path : conflicts) {
                 File f = new File(workTree, path);
                 Path p = null;
@@ -269,22 +259,19 @@ public class CheckoutRevisionCommand extends GitCommand {
                 }
             }
             inserter.flush();
-        } finally {
-            inserter.release();
         }
     }
 
     private void mergeConflicts (List<String> conflicts, DirCache cache) throws GitException {
         DirCacheBuilder builder = cache.builder();
         DirCacheBuildIterator dci = new DirCacheBuildIterator(builder);
-        TreeWalk walk = new TreeWalk(getRepository());
         ObjectDatabase od = null;
         DiffAlgorithm.SupportedAlgorithm diffAlg = getRepository().getConfig().getEnum(
                         ConfigConstants.CONFIG_DIFF_SECTION, null,
                         ConfigConstants.CONFIG_KEY_ALGORITHM,
                         DiffAlgorithm.SupportedAlgorithm.HISTOGRAM);
         MergeAlgorithm merger = new MergeAlgorithm(DiffAlgorithm.getAlgorithm(diffAlg));
-        try {
+        try (TreeWalk walk = new TreeWalk(getRepository());) {
             od = getRepository().getObjectDatabase();
             walk.addTree(dci);
             walk.setFilter(PathFilterGroup.create(Utils.getPathFilters(conflicts)));
@@ -310,7 +297,6 @@ public class CheckoutRevisionCommand extends GitCommand {
         } catch (IOException ex) {
             throw new GitException(ex);
         } finally {
-            walk.release();
             if (od != null) {
                 od.close();
             }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CherryPickCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CherryPickCommand.java
index dc88719..3c5152e 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CherryPickCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CherryPickCommand.java
@@ -35,6 +35,7 @@ import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.RebaseCommand.Operation;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.api.errors.JGitInternalException;
+import org.eclipse.jgit.attributes.Attributes;
 import org.eclipse.jgit.dircache.DirCacheBuildIterator;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
@@ -54,7 +55,6 @@ import org.eclipse.jgit.treewalk.CanonicalTreeParser;
 import org.eclipse.jgit.treewalk.TreeWalk;
 import org.eclipse.jgit.treewalk.WorkingTreeIterator;
 import org.eclipse.jgit.util.IO;
-import org.eclipse.jgit.util.io.SafeBufferedOutputStream;
 import org.netbeans.libs.git.GitCherryPickResult;
 import org.netbeans.libs.git.GitClient;
 import org.netbeans.libs.git.GitException;
@@ -388,7 +388,7 @@ public class CherryPickCommand extends GitCommand {
     }
 
     private void writeFile (File file, ObjectId id) throws IOException {
-        try (BufferedOutputStream bos = new SafeBufferedOutputStream(new FileOutputStream(file))) {
+        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) {
             id.copyTo(bos);
             bos.write('\n');
         }
@@ -412,6 +412,7 @@ public class CherryPickCommand extends GitCommand {
         return Collections.<RebaseTodoLine>emptyList();
     }
 
+    private static final Attributes NO_ATTRIBUTES = new Attributes();
     private class FailuresDetectRecurciveStrategy extends StrategyRecursive {
 
         @Override
@@ -426,14 +427,17 @@ public class CherryPickCommand extends GitCommand {
                         throws IOException {
                     boolean ok = true;
                     boolean hasWorkingTreeIterator = tw.getTreeCount() > T_FILE;
+                    boolean hasAttributeNodeProvider = treeWalk.getAttributesNodeProvider() != null;
                     while (treeWalk.next()) {
                         if (!processEntry(
                                 treeWalk.getTree(T_BASE, CanonicalTreeParser.class),
                                 treeWalk.getTree(T_OURS, CanonicalTreeParser.class),
                                 treeWalk.getTree(T_THEIRS, CanonicalTreeParser.class),
                                 treeWalk.getTree(T_INDEX, DirCacheBuildIterator.class),
-                                hasWorkingTreeIterator ? treeWalk.getTree(T_FILE,
-                                                WorkingTreeIterator.class) : null, ignoreConflicts)) {
+                                hasWorkingTreeIterator ? treeWalk.getTree(T_FILE, WorkingTreeIterator.class) : null,
+                                ignoreConflicts,
+                                hasAttributeNodeProvider ? treeWalk.getAttributes() : NO_ATTRIBUTES
+                        )) {
                             ok = false;
                         }
                         if (treeWalk.isSubtree() && enterSubtree) {
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CompareCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CompareCommand.java
index afeaece..570316e 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CompareCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CompareCommand.java
@@ -53,7 +53,7 @@ public class CompareCommand extends GitCommand {
         this.roots = roots;
         this.revisionFirst = revisionFirst;
         this.revisionSecond = revisionSecond;
-        statuses = new LinkedHashMap<File, GitRevisionInfo.GitFileInfo>();
+        statuses = new LinkedHashMap<>();
     }
 
     @Override
@@ -74,8 +74,8 @@ public class CompareCommand extends GitCommand {
     @Override
     protected void run () throws GitException {
         Repository repository = getRepository();
-        TreeWalk walk = new TreeWalk(repository);
-        try {
+        
+        try (TreeWalk walk = new TreeWalk(repository)) {
             walk.reset();
             walk.setRecursive(true);
             walk.addTree(Utils.findCommit(repository, revisionFirst).getTree());
@@ -96,8 +96,6 @@ public class CompareCommand extends GitCommand {
             }
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            walk.release();
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CreateBranchCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CreateBranchCommand.java
index acef736..6566f3a 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CreateBranchCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/CreateBranchCommand.java
@@ -92,7 +92,7 @@ public class CreateBranchCommand extends GitCommand {
     }
 
     private void setupRebaseFlag (Repository repository) throws IOException {
-        Ref baseRef = repository.getRef(revision);
+        Ref baseRef = repository.findRef(revision);
         if (baseRef != null && baseRef.getName().startsWith(Constants.R_REMOTES)) {
             StoredConfig config = repository.getConfig();
             String autosetupRebase = config.getString(ConfigConstants.CONFIG_BRANCH_SECTION,
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportCommitCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportCommitCommand.java
index ee43f40..100c3bb 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportCommitCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportCommitCommand.java
@@ -70,10 +70,8 @@ public class ExportCommitCommand extends GitCommand {
         if (commit.getParentCount() > 1) {
             throw new GitException("Unable to export a merge commit");
         }
-        DiffFormatter formatter = null;
-        try {
+        try (DiffFormatter formatter = new DiffFormatter(out)) {
             out.write(Constants.encode(formatCommitInfo(commit)));
-            formatter = new DiffFormatter(out);
             formatter.setRepository(repository);
             List<DiffEntry> diffEntries;
             if (commit.getParentCount() > 0) {
@@ -98,10 +96,6 @@ public class ExportCommitCommand extends GitCommand {
             formatter.flush();
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            if (formatter != null) {
-                formatter.release();
-            }
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportDiffCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportDiffCommand.java
index acbe05e..2a89b46 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportDiffCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ExportDiffCommand.java
@@ -79,11 +79,10 @@ public class ExportDiffCommand extends GitCommand {
     @Override
     protected void run() throws GitException {
         Repository repository = getRepository();
-        DiffFormatter formatter = new DiffFormatter(out);
-        formatter.setRepository(repository);
-        ObjectReader or = null;
         String workTreePath = repository.getWorkTree().getAbsolutePath();
-        try {
+        try (DiffFormatter formatter = new DiffFormatter(out);
+            ObjectReader or = repository.newObjectReader()) {
+            formatter.setRepository(repository);
             Collection<PathFilter> pathFilters = Utils.getPathFilters(repository.getWorkTree(), roots);
             if (!pathFilters.isEmpty()) {
                 formatter.setPathFilter(PathFilterGroup.create(pathFilters));
@@ -92,7 +91,6 @@ public class ExportDiffCommand extends GitCommand {
                 // work-around for autocrlf
                 formatter.setDiffComparator(new AutoCRLFComparator());
             }
-            or = repository.newObjectReader();
             AbstractTreeIterator firstTree = getIterator(firstCommit, or);
             AbstractTreeIterator secondTree = getIterator(secondCommit, or);
             List<DiffEntry> diffEntries;
@@ -119,11 +117,6 @@ public class ExportDiffCommand extends GitCommand {
             formatter.flush();
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            if (or != null) {
-                or.release();
-            }
-            formatter.release();
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetCommonAncestorCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetCommonAncestorCommand.java
index 13b4384..27ac520 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetCommonAncestorCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetCommonAncestorCommand.java
@@ -50,26 +50,22 @@ public class GetCommonAncestorCommand extends GitCommand {
     @Override
     protected void run () throws GitException {
         Repository repository = getRepository();
-        RevWalk walk = null;
         try {
             if (revisions.length == 0) {
                 revision = null;
             } else {
-                walk = new RevWalk(repository);
-                List<RevCommit> commits = new ArrayList<>(revisions.length);
-                for (String rev : revisions) {
-                    commits.add(Utils.findCommit(repository, rev, walk));
+                try (RevWalk walk = new RevWalk(repository)) {
+                    List<RevCommit> commits = new ArrayList<>(revisions.length);
+                    for (String rev : revisions) {
+                        commits.add(Utils.findCommit(repository, rev, walk));
+                    }
+                    revision = getSingleBaseCommit(walk, commits);
                 }
-                revision = getSingleBaseCommit(walk, commits);
             }
         } catch (MissingObjectException ex) {
             throw new GitException.MissingObjectException(ex.getObjectId().toString(), GitObjectType.COMMIT);
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            if (walk != null) {
-                walk.release();
-            }
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetPreviousCommitCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetPreviousCommitCommand.java
index 3acbd8e..29ea08d 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetPreviousCommitCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/GetPreviousCommitCommand.java
@@ -59,30 +59,26 @@ public class GetPreviousCommitCommand extends GitCommand {
     @Override
     protected void run () throws GitException {
         Repository repository = getRepository();
-            RevWalk walk = null;
             try {
                 RevCommit rev = Utils.findCommit(repository, revision);
                 if (rev.getParentCount() == 1) {
-                    walk = new RevWalk(repository);
-                    walk.markStart(walk.parseCommit(rev.getParent(0)));
-                    String path = Utils.getRelativePath(repository.getWorkTree(), file);
-                    if (path != null && !path.isEmpty()) {
-                        walk.setTreeFilter(FollowFilter.create(path, repository.getConfig().get(DiffConfig.KEY)));
-                    }
-                    walk.setRevFilter(AndRevFilter.create(new RevFilter[] { new CancelRevFilter(monitor), MaxCountRevFilter.create(1) }));
-                    Iterator<RevCommit> it = walk.iterator();
-                    if (it.hasNext()) {
-                        previousRevision = getClassFactory().createRevisionInfo(new RevWalk(repository).parseCommit(it.next()), repository);
+                    try (RevWalk walk = new RevWalk(repository)) {
+                        walk.markStart(walk.parseCommit(rev.getParent(0)));
+                        String path = Utils.getRelativePath(repository.getWorkTree(), file);
+                        if (path != null && !path.isEmpty()) {
+                            walk.setTreeFilter(FollowFilter.create(path, repository.getConfig().get(DiffConfig.KEY)));
+                        }
+                        walk.setRevFilter(AndRevFilter.create(new RevFilter[]{new CancelRevFilter(monitor), MaxCountRevFilter.create(1)}));
+                        Iterator<RevCommit> it = walk.iterator();
+                        if (it.hasNext()) {
+                            previousRevision = getClassFactory().createRevisionInfo(new RevWalk(repository).parseCommit(it.next()), repository);
+                        }
                     }
                 }
             } catch (MissingObjectException ex) {
                 throw new GitException.MissingObjectException(ex.getObjectId().toString(), GitObjectType.COMMIT);
             } catch (IOException ex) {
                 throw new GitException(ex);
-            } finally {
-                if (walk != null) {
-                    walk.release();
-                }
             }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/IgnoreUnignoreCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/IgnoreUnignoreCommand.java
index 19116e2..a5c19d6 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/IgnoreUnignoreCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/IgnoreUnignoreCommand.java
@@ -27,6 +27,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
+import java.nio.file.Files;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
@@ -102,7 +103,7 @@ public abstract class IgnoreUnignoreCommand extends GitCommand {
     
     private void changeIgnoreStatus (File f) throws IOException {
         File parent = f;
-        boolean isDirectory = f.isDirectory();
+        boolean isDirectory = f.isDirectory() && (! Files.isSymbolicLink(f.toPath()));
         StringBuilder sb = new StringBuilder('/');
         if (isDirectory) {
             sb.append('/');
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ListTagCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ListTagCommand.java
index 686ea5a..c0ee304 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ListTagCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/ListTagCommand.java
@@ -50,9 +50,8 @@ public class ListTagCommand extends GitCommand {
     protected void run () throws GitException {
         Repository repository = getRepository();
         Map<String, Ref> tags = repository.getTags();
-        allTags = new LinkedHashMap<String, GitTag>(tags.size());
-        RevWalk walk = new RevWalk(repository);
-        try {
+        allTags = new LinkedHashMap<>(tags.size());
+        try (RevWalk walk = new RevWalk(repository);) {
             for (Map.Entry<String, Ref> e : tags.entrySet()) {
                 GitTag tag;
                 try {
@@ -69,8 +68,6 @@ public class ListTagCommand extends GitCommand {
             throw new GitException.MissingObjectException(ex.getObjectId().getName(), GitObjectType.TAG);
         } catch (IOException ex) {
             throw new GitException(ex);
-        } finally {
-            walk.release();
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/LogCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/LogCommand.java
index a21c4f1..cb9460b 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/LogCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/LogCommand.java
@@ -189,8 +189,8 @@ public class LogCommand extends GitCommand {
             } catch (IOException ex) {
                 throw new GitException(ex);
             } finally {
-                walk.release();
-                fullWalk.release();
+                walk.close();
+                fullWalk.close();
             }
         } 
     }
@@ -200,7 +200,7 @@ public class LogCommand extends GitCommand {
         Set<String> usedFlags = new HashSet<>();
         Repository repository = getRepository();
         for (Map.Entry<String, GitBranch> e : allBranches.entrySet()) {
-            if (e.getKey() != GitBranch.NO_BRANCH) {
+            if (! GitBranch.NO_BRANCH.equals(e.getKey())) {
                 String flagId = e.getValue().getId();
                 if (usedFlags.contains(flagId)) {
                     for (Map.Entry<RevFlag, List<GitBranch>> e2 : branchFlags.entrySet()) {
@@ -296,10 +296,9 @@ public class LogCommand extends GitCommand {
             @Override
             public boolean requiresCommitBody () {
                 return false;
-            }            
-            
+            }
         });
-        
+
         String username = criteria.getUsername();
         if (username != null && !(username = username.trim()).isEmpty()) {
             filter = AndRevFilter.create(filter, OrRevFilter.create(CommitterRevFilter.create(username), AuthorRevFilter.create(username)));
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MergeCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MergeCommand.java
index 62ea6a8..c7f0838 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MergeCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MergeCommand.java
@@ -58,7 +58,7 @@ public class MergeCommand extends GitCommand {
         setFastForward(command);
         Ref ref = null;
         try {
-            ref = repository.getRef(revision);
+            ref = repository.findRef(revision);
         } catch (IOException ex) {
             throw new GitException(ex);
         }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MoveTreeCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MoveTreeCommand.java
index ffe7ecf..28060fb 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MoveTreeCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/MoveTreeCommand.java
@@ -25,10 +25,8 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import org.eclipse.jgit.dircache.DirCache;
 import org.eclipse.jgit.dircache.DirCacheBuildIterator;
 import org.eclipse.jgit.dircache.DirCacheBuilder;
@@ -72,12 +70,14 @@ abstract class MoveTreeCommand extends GitCommand {
 
     @Override
     protected void run() throws GitException {
+        File sourceFile = tryNormalizeSymlink(this.source);
+        File targetFile = tryNormalizeSymlink(this.target);
         if (!keepSourceTree && !after) {
             rename();
         }
+        sourceFile = tryNormalizeSymlink(sourceFile);
+        targetFile = tryNormalizeSymlink(targetFile);
         Repository repository = getRepository();
-        File sourceFile = this.source;
-        File targetFile = this.target;
         try {
             DirCache cache = repository.lockDirCache();
             try {
@@ -224,4 +224,31 @@ abstract class MoveTreeCommand extends GitCommand {
         }
         return ignored;
     }
+
+    /**
+     * Files inside symlinked folders need to be resolved to their correct
+     * location.
+     * <p>
+     * If the supplied {@code input} file exists, the "real path" according to
+     * the NIO implementation will be returned. In the case of an error or if
+     * the file does not exist or the input was null, the original object will
+     * be returned.
+     * </p>
+     *
+     * @param input file to normalize
+     * @return the normalized file
+     */
+    private File tryNormalizeSymlink(File input)  {
+        if(input == null) {
+            return input;
+        } else if (input.exists()) {
+            try {
+                return input.toPath().toRealPath().toFile();
+            } catch (IOException ex) {
+                return input;
+            }
+        } else {
+            return input;
+        }
+    }
 }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/PullCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/PullCommand.java
index 795e03c..22a58e7 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/PullCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/PullCommand.java
@@ -84,7 +84,7 @@ public class PullCommand extends TransportCommand {
     private String findRemoteBranchName () throws GitException {
         Ref ref = null;
         try {
-            ref = getRepository().getRef(branchToMerge);
+            ref = getRepository().findRef(branchToMerge);
         } catch (IOException ex) {
             throw new GitException(ex);
         }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RebaseCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RebaseCommand.java
index e6343f3..3c4eb34 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RebaseCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RebaseCommand.java
@@ -73,7 +73,7 @@ public class RebaseCommand extends GitCommand {
         if (operation == GitClient.RebaseOperationType.BEGIN) {
             Ref ref = null;
             try {
-                ref = repository.getRef(revision);
+                ref = repository.findRef(revision);
             } catch (IOException ex) {
                 throw new GitException(ex);
             }
@@ -118,7 +118,6 @@ public class RebaseCommand extends GitCommand {
     private GitRebaseResult createResult (RebaseResult res) {
         String currHead;
         Repository repository = getRepository();
-        File workTree = repository.getWorkTree();
         try {
             currHead = repository.resolve(Constants.HEAD).name();
         } catch (IOException ex) {
@@ -148,7 +147,7 @@ public class RebaseCommand extends GitCommand {
                     });
             cmd.execute();
             Map<File, GitStatus> statuses = cmd.getStatuses();
-            conflicts = new ArrayList<File>(statuses.size());
+            conflicts = new ArrayList<>(statuses.size());
             for (Map.Entry<File, GitStatus> e : statuses.entrySet()) {
                 if (e.getValue().isConflict()) {
                     conflicts.add(e.getKey());
@@ -162,7 +161,7 @@ public class RebaseCommand extends GitCommand {
     }
 
     private List<File> getFailures (RebaseResult result) {
-        List<File> files = new ArrayList<File>();
+        List<File> files = new ArrayList<>();
         File workDir = getRepository().getWorkTree();
         if (result.getStatus() == RebaseResult.Status.CONFLICTS) {
             List<String> conflicts = result.getConflicts();
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RevertCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RevertCommand.java
index 520de45..c10072b 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RevertCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/RevertCommand.java
@@ -83,11 +83,10 @@ public class RevertCommand extends GitCommand {
     protected void run() throws GitException {
         Repository repository = getRepository();
         RevCommit revertedCommit = Utils.findCommit(repository, revisionStr);
-        RevWalk revWalk = new RevWalk(repository);
         DirCache dc = null;
         GitRevertResult NO_CHANGE_INSTANCE = getClassFactory().createRevertResult(GitRevertResult.Status.NO_CHANGE, null, null, null);
-        try {
-            Ref headRef = repository.getRef(Constants.HEAD);
+        try(RevWalk revWalk = new RevWalk(repository);) {
+            Ref headRef = repository.findRef(Constants.HEAD);
             if (headRef == null) {
                 throw new GitException.MissingObjectException(Constants.HEAD, GitObjectType.COMMIT);
             }
@@ -139,20 +138,17 @@ public class RevertCommand extends GitCommand {
                 }
             }
             throw new GitException(ex);
-        } catch (IOException ex) {
-            throw new GitException(ex);
-        } catch (GitAPIException ex) {
+        } catch (IOException | GitAPIException ex) {
             throw new GitException(ex);
         } finally {
             if (dc != null) {
                 dc.unlock();
             }
-            revWalk.release();
         }
     }
 
     private List<File> getFiles (File workDir, Set<String> paths) {
-        List<File> files = new LinkedList<File>();
+        List<File> files = new LinkedList<>();
         for (String path : paths) {
             files.add(new File(workDir, path));
         }
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/SetUpstreamBranchCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/SetUpstreamBranchCommand.java
index d4d996e..1e0e3ac 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/SetUpstreamBranchCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/SetUpstreamBranchCommand.java
@@ -57,7 +57,7 @@ public class SetUpstreamBranchCommand extends GitCommand {
         Repository repository = getRepository();
         
         try {
-            Ref ref = repository.getRef(trackedBranchName);
+            Ref ref = repository.findRef(trackedBranchName);
             if (ref == null) {
                 throw new GitException(MessageFormat.format(Utils.getBundle(SetUpstreamBranchCommand.class)
                         .getString("MSG_Error_UpdateTracking_InvalidReference"), trackedBranchName)); //NOI18N)
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StashListCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StashListCommand.java
index 60216fd..8c79bde 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StashListCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StashListCommand.java
@@ -55,8 +55,7 @@ public class StashListCommand extends GitCommand {
     @Override
     protected void run () throws GitException {
         Repository repository = getRepository();
-        RevWalk fullWalk = new RevWalk(repository);
-        try {
+        try (RevWalk fullWalk = new RevWalk(repository);) {
             Collection<RevCommit> stashes = new Git(repository).stashList().call();
             for (RevCommit stash : stashes) {
                 addRevision(getClassFactory().createRevisionInfo(fullWalk.parseCommit(stash), repository));
@@ -65,8 +64,6 @@ public class StashListCommand extends GitCommand {
             throw new GitException(Utils.getBundle(CatCommand.class).getString("MSG_Error_StashMissingCommit"), ex);
         } catch (GitAPIException | IOException ex) {
             throw new GitException(ex);
-        } finally {
-            fullWalk.release();
         }
     }
 
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StatusCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StatusCommand.java
index 8cba65d..39d7a6e 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StatusCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/StatusCommand.java
@@ -83,7 +83,7 @@ public class StatusCommand extends GitCommand {
         this.monitor = monitor;
         this.listener = listener;
         this.revision = revision;
-        statuses = new LinkedHashMap<File, GitStatus>();
+        statuses = new LinkedHashMap<>();
     }
 
     @Override
@@ -110,8 +110,7 @@ public class StatusCommand extends GitCommand {
         Repository repository = getRepository();
         try {
             DirCache cache = repository.readDirCache();
-            ObjectReader od = repository.newObjectReader();
-            try {
+            try(ObjectReader od = repository.newObjectReader();) {
                 String workTreePath = repository.getWorkTree().getAbsolutePath();
                 Collection<PathFilter> pathFilters = Utils.getPathFilters(repository.getWorkTree(), roots);
                 ObjectId commitId = Utils.parseObjectId(repository, revision);
@@ -130,13 +129,15 @@ public class StatusCommand extends GitCommand {
                 // Index
                 treeWalk.addTree(new DirCacheIterator(cache));
                 // Working directory
-                treeWalk.addTree(new FileTreeIterator(repository));
+                FileTreeIterator workingDirectoryIterator = new FileTreeIterator(repository);
+                workingDirectoryIterator.setWalkIgnoredDirectories(true); // we also need to walk ignored entries
+                treeWalk.addTree(workingDirectoryIterator);
                 final int T_COMMIT = 0;
                 final int T_INDEX = 1;
                 final int T_WORKSPACE = 2;
                 String lastPath = null;
                 GitStatus[] conflicts = new GitStatus[3];
-                List<GitStatus> symLinks = new LinkedList<GitStatus>();
+                List<GitStatus> symLinks = new LinkedList<>();
                 boolean checkExecutable = Utils.checkExecutable(repository);
                 while (treeWalk.next() && !monitor.isCanceled()) {
                     String path = treeWalk.getPathString();
@@ -263,7 +264,6 @@ public class StatusCommand extends GitCommand {
                 handleConflict(conflicts, workTreePath);
                 handleSymlink(symLinks, workTreePath);
             } finally {
-                od.release();
                 cache.unlock();
             }
         } catch (CorruptObjectException ex) {
@@ -279,8 +279,7 @@ public class StatusCommand extends GitCommand {
 
     private Map<String, DiffEntry> detectRenames (Repository repository, DirCache cache, ObjectId commitId) {
         List<DiffEntry> entries;
-        TreeWalk treeWalk = new TreeWalk(repository);
-        try {
+        try(TreeWalk treeWalk = new TreeWalk(repository);) {
             treeWalk.setRecursive(true);
             treeWalk.reset();
             if (commitId != null) {
@@ -297,10 +296,8 @@ public class StatusCommand extends GitCommand {
             entries = d.compute();
         } catch (IOException ex) {
             entries = Collections.<DiffEntry>emptyList();
-        } finally {
-            treeWalk.release();
         }
-        Map<String, DiffEntry> renames = new HashMap<String, DiffEntry>();
+        Map<String, DiffEntry> renames = new HashMap<>();
         for (DiffEntry e : entries) {
             if (e.getChangeType().equals(DiffEntry.ChangeType.COPY) || e.getChangeType().equals(DiffEntry.ChangeType.RENAME)) {
                 renames.put(e.getNewPath(), e);
@@ -370,7 +367,7 @@ public class StatusCommand extends GitCommand {
     }
 
     private static Collection<TreeFilter> getSubtreeFilters(Collection<PathFilter> filters, String path) {
-        List<TreeFilter> subtreeFilters = new LinkedList<TreeFilter>();
+        List<TreeFilter> subtreeFilters = new LinkedList<>();
         for (PathFilter filter : filters) {
             if (filter.getPath().startsWith(path + "/")) { //NOI18N
                 subtreeFilters.add(filter);
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/UpdateRefCommand.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/UpdateRefCommand.java
index 99038b7..a5c67b4 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/UpdateRefCommand.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/commands/UpdateRefCommand.java
@@ -50,14 +50,14 @@ public class UpdateRefCommand extends GitCommand {
         Repository repository = getRepository();
         try {
             
-            Ref ref = repository.getRef(refName);
+            Ref ref = repository.findRef(refName);
             if (ref == null || ref.isSymbolic()) {
                 // currently unable to update symbolic references
                 result = GitRefUpdateResult.valueOf(RefUpdate.Result.NOT_ATTEMPTED.name());
                 return;
             }
             
-            Ref newRef = repository.getRef(revision);
+            Ref newRef = repository.findRef(revision);
             String name;
             if (newRef == null) {
                 ObjectId id = repository.resolve(revision);
diff --git a/ide/libs.git/src/org/netbeans/libs/git/jgit/utils/CheckoutIndex.java b/ide/libs.git/src/org/netbeans/libs/git/jgit/utils/CheckoutIndex.java
index 211611c..471b5bd 100644
--- a/ide/libs.git/src/org/netbeans/libs/git/jgit/utils/CheckoutIndex.java
+++ b/ide/libs.git/src/org/netbeans/libs/git/jgit/utils/CheckoutIndex.java
@@ -64,39 +64,35 @@ public class CheckoutIndex {
         this.recursively = recursively;
     }
 
-    public void checkout () throws IOException, GitException {
-        TreeWalk treeWalk = new TreeWalk(repository);
-        Collection<String> relativePaths = Utils.getRelativePaths(repository.getWorkTree(), roots);
-        if (!relativePaths.isEmpty()) {
-            treeWalk.setFilter(PathFilterGroup.createFromStrings(relativePaths));
-        }
-        treeWalk.setRecursive(true);
-        treeWalk.reset();
-        treeWalk.addTree(new DirCacheIterator(cache));
-        treeWalk.addTree(new FileTreeIterator(repository));
-        String lastAddedPath = null;
-        ObjectReader od = repository.newObjectReader();
-        try {
-        while (treeWalk.next() && !monitor.isCanceled()) {
-            File path = new File(repository.getWorkTree(), treeWalk.getPathString());
-            if (treeWalk.getPathString().equals(lastAddedPath)) {
-                // skip conflicts
-                continue;
-            } else {
-                lastAddedPath = treeWalk.getPathString();
+    public void checkout() throws IOException, GitException {
+        try (ObjectReader od = repository.newObjectReader();
+            TreeWalk treeWalk = new TreeWalk(repository);) {
+            Collection<String> relativePaths = Utils.getRelativePaths(repository.getWorkTree(), roots);
+            if (!relativePaths.isEmpty()) {
+                treeWalk.setFilter(PathFilterGroup.createFromStrings(relativePaths));
             }
-            DirCacheIterator dit = treeWalk.getTree(0, DirCacheIterator.class);
-            FileTreeIterator fit = treeWalk.getTree(1, FileTreeIterator.class);
-            if (dit != null && (recursively || directChild(roots, repository.getWorkTree(), path)) && (fit == null || fit.isModified(dit.getDirCacheEntry(), checkContent, od))) {
-                // update entry
-                listener.notifyFile(path, treeWalk.getPathString());
-                checkoutEntry(repository, path, dit.getDirCacheEntry(), od);
+            treeWalk.setRecursive(true);
+            treeWalk.reset();
+            treeWalk.addTree(new DirCacheIterator(cache));
+            treeWalk.addTree(new FileTreeIterator(repository));
+            String lastAddedPath = null;
+            while (treeWalk.next() && !monitor.isCanceled()) {
+                File path = new File(repository.getWorkTree(), treeWalk.getPathString());
+                if (treeWalk.getPathString().equals(lastAddedPath)) {
+                    // skip conflicts
+                    continue;
+                } else {
+                    lastAddedPath = treeWalk.getPathString();
+                }
+                DirCacheIterator dit = treeWalk.getTree(0, DirCacheIterator.class);
+                FileTreeIterator fit = treeWalk.getTree(1, FileTreeIterator.class);
+                if (dit != null && (recursively || directChild(roots, repository.getWorkTree(), path)) && (fit == null || fit.isModified(dit.getDirCacheEntry(), checkContent, od))) {
+                    // update entry
+                    listener.notifyFile(path, treeWalk.getPathString());
+                    checkoutEntry(repository, path, dit.getDirCacheEntry(), od);
+                }
             }
         }
-        } finally {
-            od.release();
-            treeWalk.release();
-        }
     }
 
     public void checkoutEntry (Repository repository, File file, DirCacheEntry e, ObjectReader od) throws IOException, GitException {
@@ -122,7 +118,7 @@ public class CheckoutIndex {
             }
             file.createNewFile();
             if (file.isFile()) {
-                DirCacheCheckout.checkoutEntry(repository, file, e, od);
+                DirCacheCheckout.checkoutEntry(repository, e, od);
             } else {
                 monitor.notifyError(MessageFormat.format(Utils.getBundle(CheckoutIndex.class).getString("MSG_Warning_CannotCreateFile"), file.getAbsolutePath())); //NOI18N
             }
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/ClientFactoryTestSuite.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/ClientFactoryTestSuite.java
index 5052278..0460efe 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/ClientFactoryTestSuite.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/ClientFactoryTestSuite.java
@@ -22,7 +22,6 @@ package org.netbeans.libs.git.jgit;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import org.netbeans.junit.NbTestSuite;
-import org.netbeans.libs.git.jgit.factory.CheckJava7ExtensionTest;
 import org.netbeans.libs.git.jgit.factory.CreateClientTest;
 
 /**
@@ -38,7 +37,6 @@ public class ClientFactoryTestSuite extends NbTestSuite {
     public static Test suite() throws Exception {
         TestSuite suite = new TestSuite();
         suite.addTestSuite(CreateClientTest.class);
-        suite.addTestSuite(CheckJava7ExtensionTest.class);
         return suite;
     }
 
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/AddTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/AddTest.java
index 689908b..75c7979 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/AddTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/AddTest.java
@@ -190,7 +190,7 @@ public class AddTest extends AbstractGitTestCase {
         Monitor m = new Monitor();
         client.addNotificationListener(m);
         client.add(new File[] { subfolder1 }, m);
-        assertEquals(new HashSet<File>(Arrays.asList(file1_1_1, file1_1_2)), m.notifiedFiles);
+        assertEquals(new HashSet<>(Arrays.asList(file1_1_1, file1_1_2)), m.notifiedFiles);
         assertDirCacheSize(2);
         assertDirCacheEntry(Arrays.asList(file1_1_1, file1_1_2));
         assertNullDirCacheEntry(Arrays.asList(file, file1_1, file1_2, file2_1, file2_2, file2_1_1, file2_1_2));
@@ -198,7 +198,7 @@ public class AddTest extends AbstractGitTestCase {
         m = new Monitor();
         client.addNotificationListener(m);
         client.add(new File[] { folder1 }, m);
-        assertEquals(new HashSet<File>(Arrays.asList(file1_1, file1_2)), m.notifiedFiles);
+        assertEquals(new HashSet<>(Arrays.asList(file1_1, file1_2)), m.notifiedFiles);
         assertDirCacheSize(4);
         assertDirCacheEntry(Arrays.asList(file1_1, file1_2, file1_1_1, file1_1_2));
         assertNullDirCacheEntry(Arrays.asList(file, file2_1, file2_1_1, file2_1_2));
@@ -206,7 +206,7 @@ public class AddTest extends AbstractGitTestCase {
         m = new Monitor();
         client.addNotificationListener(m);
         client.add(new File[] { folder2 }, m);
-        assertEquals(new HashSet<File>(Arrays.asList(file2_1, file2_2, file2_1_1, file2_1_2)), m.notifiedFiles);
+        assertEquals(new HashSet<>(Arrays.asList(file2_1, file2_2, file2_1_1, file2_1_2)), m.notifiedFiles);
         assertDirCacheSize(8);
         assertDirCacheEntry(Arrays.asList(file1_1, file1_2, file1_1_1, file1_1_2, file2_1, file2_2, file2_1_1, file2_1_2));
     }
@@ -233,7 +233,7 @@ public class AddTest extends AbstractGitTestCase {
         Monitor m = new Monitor();
         client.addNotificationListener(m);
         client.add(new File[] { folder1, folder2 }, m);
-        assertEquals(new HashSet<File>(Arrays.asList(file1_2)), m.notifiedFiles);
+        assertEquals(new HashSet<>(Arrays.asList(file1_2)), m.notifiedFiles);
         assertDirCacheSize(1);
         assertDirCacheEntry(Arrays.asList(file1_2));
         assertNullDirCacheEntry(Arrays.asList(file1_1, file2_1, file2_2));
@@ -421,15 +421,13 @@ public class AddTest extends AbstractGitTestCase {
             String path = treeWalk.getPathString();
             assertEquals("f", path);
             WorkingTreeIterator fit = treeWalk.getTree(0, WorkingTreeIterator.class);
-            InputStream in = fit.openEntryStream();
-            try {
+            try (InputStream in = fit.openEntryStream()) {
                 inserter.insert(Constants.OBJ_BLOB, fit.getEntryLength(), in);
                 fail("this should fail, remove the work around");
             } catch (EOFException ex) {
-                assertEquals("Input did not match supplied length. 10000 bytes are missing.", ex.getMessage());
+                assertEquals("Input did not match supplied length. 10.000 bytes are missing.", ex.getMessage());
             } finally {
-                in.close();
-                inserter.release();
+                inserter.close();
             }
             break;
         }
@@ -528,26 +526,26 @@ public class AddTest extends AbstractGitTestCase {
         assertEquals(FileMode.SYMLINK, e.getFileMode());
         ObjectId id = e.getObjectId();
         assertTrue((ts - 1000) < e.getLastModified() && (ts + 1000) > e.getLastModified());
-        ObjectReader reader = repository.getObjectDatabase().newReader();
-        assertTrue(reader.has(e.getObjectId()));
-        byte[] bytes = reader.open(e.getObjectId()).getBytes();
-        assertEquals(path, RawParseUtils.decode(bytes));
-        
-        // now with internal
-        File link2 = new File(workDir, "link2");
-        Files.createSymbolicLink(Paths.get(link2.getAbsolutePath()), Paths.get(path));
-        ts = Files.readAttributes(Paths.get(link2.getAbsolutePath()), BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS).lastModifiedTime().toMillis();
-        getClient(workDir).add(new File[] { link2 }, NULL_PROGRESS_MONITOR);
-        
-        DirCacheEntry e2 = repository.readDirCache().getEntry(link2.getName());
-        assertEquals(FileMode.SYMLINK, e2.getFileMode());
-        assertEquals(id, e2.getObjectId());
-        assertEquals(0, e2.getLength());
-        assertTrue((ts - 1000) < e2.getLastModified() && (ts + 1000) > e2.getLastModified());
-        assertTrue(reader.has(e2.getObjectId()));
-        bytes = reader.open(e2.getObjectId()).getBytes();
-        assertEquals(path, RawParseUtils.decode(bytes));
-        reader.release();
+        try(ObjectReader reader = repository.getObjectDatabase().newReader()) {
+            assertTrue(reader.has(e.getObjectId()));
+            byte[] bytes = reader.open(e.getObjectId()).getBytes();
+            assertEquals(path, RawParseUtils.decode(bytes));
+
+            // now with internal
+            File link2 = new File(workDir, "link2");
+            Files.createSymbolicLink(Paths.get(link2.getAbsolutePath()), Paths.get(path));
+            ts = Files.readAttributes(Paths.get(link2.getAbsolutePath()), BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS).lastModifiedTime().toMillis();
+            getClient(workDir).add(new File[]{link2}, NULL_PROGRESS_MONITOR);
+
+            DirCacheEntry e2 = repository.readDirCache().getEntry(link2.getName());
+            assertEquals(FileMode.SYMLINK, e2.getFileMode());
+            assertEquals(id, e2.getObjectId());
+            assertEquals(0, e2.getLength());
+            assertTrue((ts - 1000) < e2.getLastModified() && (ts + 1000) > e2.getLastModified());
+            assertTrue(reader.has(e2.getObjectId()));
+            bytes = reader.open(e2.getObjectId()).getBytes();
+            assertEquals(path, RawParseUtils.decode(bytes));
+        }
     }
     
     public void testAddMissingSymlink () throws Exception {
@@ -564,11 +562,11 @@ public class AddTest extends AbstractGitTestCase {
         DirCacheEntry e = repository.readDirCache().getEntry(link.getName());
         assertEquals(FileMode.SYMLINK, e.getFileMode());
         assertEquals(0, e.getLength());
-        ObjectReader reader = repository.getObjectDatabase().newReader();
-        assertTrue(reader.has(e.getObjectId()));
-        byte[] bytes = reader.open(e.getObjectId()).getBytes();
-        assertEquals(path, RawParseUtils.decode(bytes));
-        reader.release();
+        try (ObjectReader reader = repository.getObjectDatabase().newReader()) {
+            assertTrue(reader.has(e.getObjectId()));
+            byte[] bytes = reader.open(e.getObjectId()).getBytes();
+            assertEquals(path, RawParseUtils.decode(bytes));
+        }
     }
     
     public void testAdd_243092 () throws Exception {
@@ -605,11 +603,8 @@ public class AddTest extends AbstractGitTestCase {
             DirCacheEntry e = cache.getEntry(relativePath);
             assertNotNull(e);
             assertEquals(relativePath, e.getPathString());
-            InputStream in = new FileInputStream(f);
-            try {
+            try (InputStream in = new FileInputStream(f)) {
                 assertNotSame(e.getObjectId(), repository.newObjectInserter().idFor(Constants.OBJ_BLOB, f.length(), in));
-            } finally {
-                in.close();
             }
         }
         cache.unlock();
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/BranchTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/BranchTest.java
index 9345609..cbed6a0 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/BranchTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/BranchTest.java
@@ -338,7 +338,7 @@ public class BranchTest extends AbstractGitTestCase {
             client.deleteBranch("master", true, NULL_PROGRESS_MONITOR);
             fail("Can not delete active branch");
         } catch (GitException ex) {
-            assertTrue(ex.getMessage().contains("Branch master is checked out and can not be deleted"));
+            assertTrue(ex.getMessage().contains("Branch master is checked out and cannot be deleted"));
         }
     }
     
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/CheckoutTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/CheckoutTest.java
index ace208a..631ba7f 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/CheckoutTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/CheckoutTest.java
@@ -356,7 +356,7 @@ public class CheckoutTest extends AbstractGitTestCase {
         WindowCacheConfig cfg = new WindowCacheConfig();
         cfg.setStreamFileThreshold((int) large.length() - 1);
         cfg.install();
-        DirCacheCheckout.checkoutEntry(repository, large, e);
+        DirCacheCheckout.checkoutEntry(repository, e, repository.newObjectReader());
     }
     
     public void testCheckoutBranch () throws Exception {
@@ -529,7 +529,6 @@ public class CheckoutTest extends AbstractGitTestCase {
             assertTrue(branches.get(BRANCH).isActive());
         }
 
-        checkJGitFix(Constants.MASTER, file);
         client.reset(BRANCH, GitClient.ResetType.HARD, NULL_PROGRESS_MONITOR);
         write(file, "branch change");
         
@@ -542,25 +541,6 @@ public class CheckoutTest extends AbstractGitTestCase {
         assertTrue(status.get(file).isConflict());
         assertEquals("<<<<<<< OURS\nbranch change\n=======\ninitial\n>>>>>>> THEIRS", read(file));
     }
-    
-    private void checkJGitFix (String branch, File file) throws Exception {
-        ObjectId headTree = null;
-        try {
-            headTree = Utils.findCommit(repository, Constants.HEAD).getTree();
-        } catch (GitException.MissingObjectException ex) { }
-
-        DirCache cache = repository.lockDirCache();
-        RevCommit commit;
-        commit = Utils.findCommit(repository, branch);
-        DirCacheCheckout dco = new DirCacheCheckout(repository, headTree, cache, commit.getTree());
-        dco.setFailOnConflict(false);
-        dco.checkout();
-        if (file.exists()) {
-            // and do not forget to remove WA in checkout command when JGit is fixed.
-            fail("Hey, JGit is fixed, why don't you fix me as well?");
-        }
-        cache.unlock();
-    }
 
     public void testCheckoutNoHeadYet () throws Exception {
         final File otherWT = new File(workDir.getParentFile(), "repo2");
@@ -658,17 +638,7 @@ public class CheckoutTest extends AbstractGitTestCase {
         statuses = client.getStatus(new File[] { workDir }, NULL_PROGRESS_MONITOR);
         assertEquals(1, statuses.size());
         assertStatus(statuses, workDir, f, true, GitStatus.Status.STATUS_NORMAL, GitStatus.Status.STATUS_NORMAL, GitStatus.Status.STATUS_NORMAL, false);
-        
-        //jgit test, when starting to fail, remove the whole block and the WA
-        checkoutJGitTestNestedAddedRoot(repository, "master");
-        assertFalse(nested.isDirectory()); // when starting to fail, remove the workaround in CheckoutRevisionCommand
-        client.checkoutRevision(BRANCH, true, NULL_PROGRESS_MONITOR);
-        client.checkout(new File[] { nested }, "HEAD", true, NULL_PROGRESS_MONITOR);
-        assertFalse(nested.isDirectory());
-        statuses = client.getStatus(new File[] { workDir }, NULL_PROGRESS_MONITOR);
-        assertEquals(1, statuses.size());
-        assertStatus(statuses, workDir, f, true, GitStatus.Status.STATUS_NORMAL, GitStatus.Status.STATUS_NORMAL, GitStatus.Status.STATUS_NORMAL, false);
-        
+
         // ours
         assertFalse(nested.isDirectory());
         client.checkoutRevision("master", true, NULL_PROGRESS_MONITOR);
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/ExportDiffTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/ExportDiffTest.java
index b3a4a3b..f375d5e 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/ExportDiffTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/ExportDiffTest.java
@@ -20,6 +20,7 @@
 package org.netbeans.libs.git.jgit.commands;
 
 import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -27,14 +28,12 @@ import java.io.OutputStream;
 import org.eclipse.jgit.diff.DiffFormatter;
 import org.eclipse.jgit.dircache.DirCacheIterator;
 import org.eclipse.jgit.lib.Constants;
-import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.treewalk.AbstractTreeIterator;
 import org.eclipse.jgit.treewalk.FileTreeIterator;
 import org.netbeans.libs.git.GitClient;
 import org.netbeans.libs.git.GitClient.DiffMode;
 import org.netbeans.libs.git.jgit.AbstractGitTestCase;
-import org.netbeans.libs.git.progress.ProgressMonitor;
 
 /**
  *
@@ -182,33 +181,26 @@ public class ExportDiffTest extends AbstractGitTestCase {
     public void testDiffRenameDetectionProblem () throws Exception {
         File file = new File(workDir, "file");
         File renamed = new File(workDir, "renamed");
-        File patchFile = new File(workDir.getParentFile(), "diff.patch");
         write(file, "hey, i will be renamed\n");
         add(file);
         commit(file);
-        
+
         file.renameTo(renamed);
         write(renamed, "hey, i will be renamed\nand now i am\n");
-        OutputStream out = new BufferedOutputStream(new FileOutputStream(patchFile));
-        DiffFormatter formatter = new DiffFormatter(out);
-        formatter.setRepository(repository);
-        ObjectReader or = null;
-        try {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(10240);
+        try (OutputStream out = new BufferedOutputStream(baos);
+            DiffFormatter formatter = new DiffFormatter(out);) {
+            formatter.setRepository(repository);
             formatter.setDetectRenames(true);
-            AbstractTreeIterator firstTree = new DirCacheIterator(repository.readDirCache());;
+            AbstractTreeIterator firstTree = new DirCacheIterator(repository.readDirCache());
             AbstractTreeIterator secondTree = new FileTreeIterator(repository);
             formatter.format(firstTree, secondTree);
             formatter.flush();
-            fail("Fixed in JGit, modify and simplify the sources in ExportDiff command");
-        } catch (IOException ex) {
-            assertEquals("Missing blob 7b34a309b8dbae2686c9e597efef28a612e48aff", ex.getMessage());
-        } finally {
-            if (or != null) {
-                or.release();
-            }
-            formatter.release();
         }
-        
+        assertFalse(
+            "Fixed in JGit, modify and simplify the sources in ExportDiff command",
+            baos.toString().contains("similarity index ")
+        );
     }
     
     public void testDiffTwoCommits () throws Exception {
@@ -233,15 +225,15 @@ public class ExportDiffTest extends AbstractGitTestCase {
     }
 
     private void exportDiff (File[] files, File patchFile, DiffMode diffMode) throws Exception {
-        OutputStream out = new BufferedOutputStream(new FileOutputStream(patchFile));
-        getClient(workDir).exportDiff(files, diffMode, out, NULL_PROGRESS_MONITOR);
-        out.close();
+        try (OutputStream out = new BufferedOutputStream(new FileOutputStream(patchFile))) {
+            getClient(workDir).exportDiff(files, diffMode, out, NULL_PROGRESS_MONITOR);
+        }
     }
 
     private void exportDiff (File[] files, File patchFile, String base, String to) throws Exception {
-        OutputStream out = new BufferedOutputStream(new FileOutputStream(patchFile));
-        getClient(workDir).exportDiff(files, base, to, out, NULL_PROGRESS_MONITOR);
-        out.close();
+        try (OutputStream out = new BufferedOutputStream(new FileOutputStream(patchFile))) {
+            getClient(workDir).exportDiff(files, base, to, out, NULL_PROGRESS_MONITOR);
+        }
     }
 
     private void makeInitialCommit () throws Exception {
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/FetchTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/FetchTest.java
index 459b679..83d3c01 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/FetchTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/FetchTest.java
@@ -186,27 +186,6 @@ public class FetchTest extends AbstractGitTestCase {
         assertUpdate(updates.get("origin/master"), "origin/master", "master", masterInfo.getRevision(), null, new URIish(otherWT.toURI().toURL()).toString(), Type.BRANCH, GitRefUpdateResult.NEW);
         assertUpdate(updates.get("origin/" + BRANCH_NAME), "origin/" + BRANCH_NAME, BRANCH_NAME, branch.getId(), null, new URIish(otherWT.toURI().toURL()).toString(), Type.BRANCH, GitRefUpdateResult.NEW);
     }
-    
-    public void testDeleteStaleReferencesFails () throws Exception {
-        setupRemoteSpec("origin", "+refs/heads/*:refs/remotes/origin/*");
-        GitClient client = getClient(workDir);
-        Map<String, GitBranch> branches = client.getBranches(true, NULL_PROGRESS_MONITOR);
-        assertEquals(0, branches.size());
-        Map<String, GitTransportUpdate> updates = client.fetch("origin", NULL_PROGRESS_MONITOR);
-        branches = client.getBranches(true, NULL_PROGRESS_MONITOR);
-        assertEquals(2, branches.size());
-        
-        new File(workDir, ".git/refs/remotes/origin").mkdirs();
-        write(new File(workDir, ".git/refs/remotes/origin/HEAD"), "ref: refs/remotes/origin/master");
-        branches = client.getBranches(true, NULL_PROGRESS_MONITOR);
-        assertEquals(2, branches.size());
-        // and now the master is deleted and HEAD points to nowhere :(
-        Transport transport = Transport.open(repository, "origin");
-        transport.setRemoveDeletedRefs(true);
-        transport.fetch(new DelegatingProgressMonitor(NULL_PROGRESS_MONITOR), new RemoteConfig(repository.getConfig(), "origin").getFetchRefSpecs());
-        branches = client.getBranches(true, NULL_PROGRESS_MONITOR);
-        assertEquals(1, branches.size());
-    }
 
 //    enable when the fixed in jgit - see the previous test
 //    public void testFetchDeleteBranch () throws Exception {
@@ -294,7 +273,6 @@ public class FetchTest extends AbstractGitTestCase {
         assertTrue(messages, messages.contains("START: remote: Getting sizes - "));
         assertTrue(messages, messages.contains("START: remote: Compressing objects - "));
         assertTrue(messages, messages.contains("START: Receiving objects - "));
-        assertTrue(messages, messages.contains("START: Updating references - "));
     }
 
     private void setupRemoteSpec (String remote, String fetchSpec) throws URISyntaxException, IOException {
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/StatusTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/StatusTest.java
index f9aee6a..ea9a782 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/StatusTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/commands/StatusTest.java
@@ -763,7 +763,7 @@ public class StatusTest extends AbstractGitTestCase {
         assertStatus(statuses, workDir, link, false, Status.STATUS_NORMAL, Status.STATUS_ADDED, Status.STATUS_ADDED, false);
         
         client.ignore(new File[] { link }, NULL_PROGRESS_MONITOR);
-        assertEquals("/boo/some_dir/", read(new File(workDir, ".gitignore")));
+        assertEquals("/boo/some_dir", read(new File(workDir, ".gitignore")));
         statuses = client.getStatus(new File[] { link }, NULL_PROGRESS_MONITOR);
         assertStatus(statuses, workDir, link, false, Status.STATUS_NORMAL, Status.STATUS_IGNORED, Status.STATUS_ADDED, false);
     }
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CheckJava7ExtensionTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CheckJava7ExtensionTest.java
deleted file mode 100644
index 0e7c2f6..0000000
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CheckJava7ExtensionTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.libs.git.jgit.factory;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import org.eclipse.jgit.util.FS;
-import org.eclipse.jgit.util.FS.FSFactory;
-import org.netbeans.libs.git.jgit.AbstractGitTestCase;
-
-/**
- *
- * @author ondra
- */
-public class CheckJava7ExtensionTest extends AbstractGitTestCase {
-
-    public CheckJava7ExtensionTest (String name) throws IOException {
-        super(name);
-    }
-    
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-    }
-    
-    public void testExtension () throws Exception {
-        // ping the factory
-        FS fs = FS.DETECTED;
-        Field f = FS.class.getDeclaredField("factory");
-        f.setAccessible(true);
-        FSFactory fact = (FSFactory) f.get(FS.class);
-        assertEquals("org.eclipse.jgit.util.Java7FSFactory", fact.getClass().getName());
-    }
-    
-}
diff --git a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CreateClientTest.java b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CreateClientTest.java
index 543ad69..ecf9782 100644
--- a/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CreateClientTest.java
+++ b/ide/libs.git/test/unit/src/org/netbeans/libs/git/jgit/factory/CreateClientTest.java
@@ -50,24 +50,7 @@ public class CreateClientTest extends AbstractGitTestCase {
         super.setUp();
         workDir = getWorkingDirectory();
     }
-    
-    public void testCorruptedConfigNoEndingLine () throws Exception {
-        File gitFolder = new File(workDir, ".git");
-        File newLocation = new File(workDir.getParentFile(), "newFolder");
-        newLocation.mkdirs();
-        gitFolder.renameTo(new File(newLocation, ".git"));
-        gitFolder = new File(newLocation, ".git");
-        String content = read(new File(gitFolder, "config"));
-        write(new File(gitFolder, "config"), content + "[remote \"origin\"]\n	puttykeyfile = ");
-        try {
-            GitRepository.getInstance(newLocation).createClient();
-            fail("Should fail");
-        } catch (GitException ex) {
-            assertEquals("java.io.IOException: Unknown repository format", ex.getMessage());
-        }
-        write(new File(gitFolder, "config"), read(new File(gitFolder, "config")) + "\n");
-    }
-    
+
     /**
      * Submodules have .git folder elsewhere, they use GIT_LINK mechanism to access it
      */
diff --git a/ide/o.eclipse.jgit.java7/build.xml b/ide/o.bouncycastle.bcpg/build.xml
similarity index 88%
copy from ide/o.eclipse.jgit.java7/build.xml
copy to ide/o.bouncycastle.bcpg/build.xml
index 8b81f7f..9148a3d 100644
--- a/ide/o.eclipse.jgit.java7/build.xml
+++ b/ide/o.bouncycastle.bcpg/build.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -8,18 +7,15 @@
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
-
       http://www.apache.org/licenses/LICENSE-2.0
-
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-
 -->
-<project name="ide/o.eclipse.jgit.java7" default="build" basedir=".">
+<project name="ide/o.bouncycastle.bcpg" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
-    <target name="jar" depends="release"/>
+    <target name="jar"/>
 </project>
diff --git a/ide/o.bouncycastle.bcpg/external/bcpg-jdk15on-1.63-license.txt b/ide/o.bouncycastle.bcpg/external/bcpg-jdk15on-1.63-license.txt
new file mode 100644
index 0000000..78a9eeb
--- /dev/null
+++ b/ide/o.bouncycastle.bcpg/external/bcpg-jdk15on-1.63-license.txt
@@ -0,0 +1,24 @@
+Name: Bouncy Castle Java OpenPGP/BCPG
+Version: 1.63
+License: MIT-bouncycastle
+Origin: https://www.bouncycastle.org/latest_releases.html
+Description: Legion of the Bouncy Castle Java cryptography APIs
+
+Copyright (c) 2000 - 2019 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ide/c.jcraft.jsch/external/binaries-list b/ide/o.bouncycastle.bcpg/external/binaries-list
similarity index 91%
copy from ide/c.jcraft.jsch/external/binaries-list
copy to ide/o.bouncycastle.bcpg/external/binaries-list
index 5191345..5a37301 100644
--- a/ide/c.jcraft.jsch/external/binaries-list
+++ b/ide/o.bouncycastle.bcpg/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-DA3584329A263616E277E15462B387ADDD1B208D com.jcraft:jsch:0.1.54
+A93A004E30BA70FEB94213BD9ADB3BB5295361EF org.bouncycastle:bcpg-jdk15on:1.63
diff --git a/ide/o.bouncycastle.bcpg/manifest.mf b/ide/o.bouncycastle.bcpg/manifest.mf
new file mode 100644
index 0000000..9a2eb34
--- /dev/null
+++ b/ide/o.bouncycastle.bcpg/manifest.mf
@@ -0,0 +1 @@
+OpenIDE-Module: org.bouncycastle.bcpg
\ No newline at end of file
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties b/ide/o.bouncycastle.bcpg/nbproject/project.properties
similarity index 90%
copy from ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
copy to ide/o.bouncycastle.bcpg/nbproject/project.properties
index 3bdaa1b..00a8e09 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
+++ b/ide/o.bouncycastle.bcpg/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+release.external/bcpg-jdk15on-1.63.jar=modules/org-bouncycastle-bcpg.jar
 is.autoload=true
-release.external/JavaEWAH-0.7.9.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
diff --git a/ide/o.eclipse.jgit.java7/nbproject/project.xml b/ide/o.bouncycastle.bcpg/nbproject/project.xml
similarity index 82%
rename from ide/o.eclipse.jgit.java7/nbproject/project.xml
rename to ide/o.bouncycastle.bcpg/nbproject/project.xml
index a23b2b8..ab35c26 100644
--- a/ide/o.eclipse.jgit.java7/nbproject/project.xml
+++ b/ide/o.bouncycastle.bcpg/nbproject/project.xml
@@ -23,12 +23,12 @@
     <type>org.netbeans.modules.apisupport.project</type>
     <configuration>
         <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
-            <code-name-base>org.eclipse.jgit.java7</code-name-base>
+            <code-name-base>org.bouncycastle.bcpg</code-name-base>
             <module-dependencies/>
             <public-packages/>
             <class-path-extension>
-                <runtime-relative-path>org-eclipse-jgit-java7.jar</runtime-relative-path>
-                <binary-origin>external/org.eclipse.jgit.java7-3.6.2.201501210735-r.jar</binary-origin>
+                <runtime-relative-path>org-bouncycastle-bcpg.jar</runtime-relative-path>
+                <binary-origin>external/bcpg-jdk15on-1.63.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/o.eclipse.jgit.java7/build.xml b/ide/o.bouncycastle.bcprov/build.xml
similarity index 88%
copy from ide/o.eclipse.jgit.java7/build.xml
copy to ide/o.bouncycastle.bcprov/build.xml
index 8b81f7f..fd1683c 100644
--- a/ide/o.eclipse.jgit.java7/build.xml
+++ b/ide/o.bouncycastle.bcprov/build.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -8,18 +7,15 @@
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
-
       http://www.apache.org/licenses/LICENSE-2.0
-
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-
 -->
-<project name="ide/o.eclipse.jgit.java7" default="build" basedir=".">
+<project name="ide/o.bouncycastle.bcprov" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
-    <target name="jar" depends="release"/>
+    <target name="jar"/>
 </project>
diff --git a/ide/o.bouncycastle.bcprov/external/bcprov-jdk15on-1.63-license.txt b/ide/o.bouncycastle.bcprov/external/bcprov-jdk15on-1.63-license.txt
new file mode 100644
index 0000000..b62e731
--- /dev/null
+++ b/ide/o.bouncycastle.bcprov/external/bcprov-jdk15on-1.63-license.txt
@@ -0,0 +1,24 @@
+Name: Bouncy Castle Java Provider
+Version: 1.63
+License: MIT-bouncycastle
+Origin: https://www.bouncycastle.org/latest_releases.html
+Description: Legion of the Bouncy Castle Java cryptography APIs
+
+Copyright (c) 2000 - 2019 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ide/c.jcraft.jsch/external/binaries-list b/ide/o.bouncycastle.bcprov/external/binaries-list
similarity index 90%
copy from ide/c.jcraft.jsch/external/binaries-list
copy to ide/o.bouncycastle.bcprov/external/binaries-list
index 5191345..3f89059 100644
--- a/ide/c.jcraft.jsch/external/binaries-list
+++ b/ide/o.bouncycastle.bcprov/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-DA3584329A263616E277E15462B387ADDD1B208D com.jcraft:jsch:0.1.54
+C996F9C64DC0E94E2D2AE962CC7B7CAD7744FCC8 org.bouncycastle:bcprov-jdk15on:1.63
diff --git a/ide/o.bouncycastle.bcprov/manifest.mf b/ide/o.bouncycastle.bcprov/manifest.mf
new file mode 100644
index 0000000..6b8fbad
--- /dev/null
+++ b/ide/o.bouncycastle.bcprov/manifest.mf
@@ -0,0 +1 @@
+OpenIDE-Module: org.bouncycastle.bcprov
\ No newline at end of file
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties b/ide/o.bouncycastle.bcprov/nbproject/project.properties
similarity index 90%
copy from ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
copy to ide/o.bouncycastle.bcprov/nbproject/project.properties
index 3bdaa1b..96ec436 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
+++ b/ide/o.bouncycastle.bcprov/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+release.external/bcprov-jdk15on-1.63.jar=modules/org-bouncycastle-bcprov.jar
 is.autoload=true
-release.external/JavaEWAH-0.7.9.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
diff --git a/ide/c.jcraft.jzlib/nbproject/project.xml b/ide/o.bouncycastle.bcprov/nbproject/project.xml
similarity index 83%
copy from ide/c.jcraft.jzlib/nbproject/project.xml
copy to ide/o.bouncycastle.bcprov/nbproject/project.xml
index 76ce929..10894a0 100644
--- a/ide/c.jcraft.jzlib/nbproject/project.xml
+++ b/ide/o.bouncycastle.bcprov/nbproject/project.xml
@@ -23,12 +23,12 @@
     <type>org.netbeans.modules.apisupport.project</type>
     <configuration>
         <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
-            <code-name-base>com.jcraft.jzlib</code-name-base>
+            <code-name-base>org.bouncycastle.bcprov</code-name-base>
             <module-dependencies/>
             <public-packages/>
             <class-path-extension>
-                <runtime-relative-path>com-jcraft-jzlib.jar</runtime-relative-path>
-		<binary-origin>external/jzlib-1.0.7.jar</binary-origin>
+                <runtime-relative-path>org-bouncycastle-bcprov.jar</runtime-relative-path>
+                <binary-origin>external/bcprov-jdk15on-1.63.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/o.eclipse.jgit.java7/external/binaries-list b/ide/o.eclipse.jgit.java7/external/binaries-list
deleted file mode 100644
index 575511c..0000000
--- a/ide/o.eclipse.jgit.java7/external/binaries-list
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-D613D2ED86455CC8686A45B9B65215A9652E2943 org.eclipse.jgit:org.eclipse.jgit.java7:3.6.2.201501210735-r
diff --git a/ide/o.eclipse.jgit.java7/manifest.mf b/ide/o.eclipse.jgit.java7/manifest.mf
deleted file mode 100644
index 0ecc753..0000000
--- a/ide/o.eclipse.jgit.java7/manifest.mf
+++ /dev/null
@@ -1 +0,0 @@
-OpenIDE-Module: org.eclipse.jgit.java7
diff --git a/ide/o.eclipse.jgit.java7/nbproject/project.properties b/ide/o.eclipse.jgit.java7/nbproject/project.properties
deleted file mode 100644
index 3d6d8a4..0000000
--- a/ide/o.eclipse.jgit.java7/nbproject/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-release.external/org.eclipse.jgit.java7-3.6.2.201501210735-r.jar=modules/org-eclipse-jgit-java7.jar
-is.autoload=true
diff --git a/ide/o.eclipse.jgit/external/binaries-list b/ide/o.eclipse.jgit/external/binaries-list
index 3e2ad61..6d97cfd 100644
--- a/ide/o.eclipse.jgit/external/binaries-list
+++ b/ide/o.eclipse.jgit/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-47D59DFFB5F02470CCFB6C1A5A31B6040A1636E5 org.eclipse.jgit:org.eclipse.jgit:3.6.2.201501210735-r
+75C27F087134757A8AC335E637C117D68D41C773 org.eclipse.jgit:org.eclipse.jgit:5.5.0.201909110433-r
diff --git a/ide/o.eclipse.jgit/external/org.eclipse.jgit-3.6.2.201501210735-r-license.txt b/ide/o.eclipse.jgit/external/org.eclipse.jgit-3.6.2.201501210735-r-license.txt
deleted file mode 100644
index 835d516..0000000
--- a/ide/o.eclipse.jgit/external/org.eclipse.jgit-3.6.2.201501210735-r-license.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Name: JGit Library
-Origin: Eclipse
-Version: 3.6.2
-Description: Integration library for Git client
-License: EDL-1.0
-URL: http://www.eclipse.org/jgit/download/
-
-Eclipse Distribution License - v 1.0
-
-Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of the Eclipse Foundation, Inc. nor the names of its
-      contributors may be used to endorse or promote products derived from this
-      software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ide/o.eclipse.jgit.java7/external/org.eclipse.jgit.java7-3.6.2.201501210735-r-license.txt b/ide/o.eclipse.jgit/external/org.eclipse.jgit-5.5.0.201909110433-r-license.txt
similarity index 98%
rename from ide/o.eclipse.jgit.java7/external/org.eclipse.jgit.java7-3.6.2.201501210735-r-license.txt
rename to ide/o.eclipse.jgit/external/org.eclipse.jgit-5.5.0.201909110433-r-license.txt
index ae29fd4..13d4a9f 100644
--- a/ide/o.eclipse.jgit.java7/external/org.eclipse.jgit.java7-3.6.2.201501210735-r-license.txt
+++ b/ide/o.eclipse.jgit/external/org.eclipse.jgit-5.5.0.201909110433-r-license.txt
@@ -1,7 +1,7 @@
 Name: JGit Library
-Description: Integration library for Git client
 Origin: Eclipse
-Version: 3.6.2
+Version: 5.5.0.201909110433-r
+Description: Integration library for Git client
 License: EDL-1.0
 URL: http://www.eclipse.org/jgit/download/
 
diff --git a/ide/o.eclipse.jgit/nbproject/project.properties b/ide/o.eclipse.jgit/nbproject/project.properties
index de1e85e..4628519 100644
--- a/ide/o.eclipse.jgit/nbproject/project.properties
+++ b/ide/o.eclipse.jgit/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-release.external/org.eclipse.jgit-3.6.2.201501210735-r.jar=modules/org-eclipse-jgit.jar
+release.external/org.eclipse.jgit-5.5.0.201909110433-r.jar=modules/org-eclipse-jgit.jar
 is.autoload=true
diff --git a/ide/o.eclipse.jgit/nbproject/project.xml b/ide/o.eclipse.jgit/nbproject/project.xml
index b3b7a73..a83fe56 100644
--- a/ide/o.eclipse.jgit/nbproject/project.xml
+++ b/ide/o.eclipse.jgit/nbproject/project.xml
@@ -34,14 +34,46 @@
                     <code-name-base>com.googlecode.javaewah.JavaEWAH</code-name-base>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>0.7.9</specification-version>
+                        <specification-version>1.1.6</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.slf4j.api</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.6.0</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.slf4j.jdk14</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.6.0</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.bouncycastle.bcprov</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.63</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.bouncycastle.bcpg</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.63</specification-version>
                     </run-dependency>
                 </dependency>
             </module-dependencies>
             <public-packages/>
             <class-path-extension>
                 <runtime-relative-path>org-eclipse-jgit.jar</runtime-relative-path>
-                <binary-origin>external/org.eclipse.jgit-3.6.2.201501210735-r.jar</binary-origin>
+                <binary-origin>external/org.eclipse.jgit-5.5.0.201909110433-r.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/o.eclipse.jgit.java7/build.xml b/ide/o.slf4j.api/build.xml
similarity index 87%
copy from ide/o.eclipse.jgit.java7/build.xml
copy to ide/o.slf4j.api/build.xml
index 8b81f7f..5a5b044 100644
--- a/ide/o.eclipse.jgit.java7/build.xml
+++ b/ide/o.slf4j.api/build.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -8,18 +7,15 @@
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
-
       http://www.apache.org/licenses/LICENSE-2.0
-
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-
 -->
-<project name="ide/o.eclipse.jgit.java7" default="build" basedir=".">
+<project name="ide/o.slf4j.api" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
-    <target name="jar" depends="release"/>
-</project>
+    <target name="jar"/>
+</project>
\ No newline at end of file
diff --git a/ide/c.jcraft.jsch/external/binaries-list b/ide/o.slf4j.api/external/binaries-list
similarity index 92%
copy from ide/c.jcraft.jsch/external/binaries-list
copy to ide/o.slf4j.api/external/binaries-list
index 5191345..46be4cb 100644
--- a/ide/c.jcraft.jsch/external/binaries-list
+++ b/ide/o.slf4j.api/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-DA3584329A263616E277E15462B387ADDD1B208D com.jcraft:jsch:0.1.54
+2CD9B264F76E3D087EE21BFC99305928E1BDB443 org.slf4j:slf4j-api:1.7.28
\ No newline at end of file
diff --git a/ide/o.slf4j.api/external/slf4j-api-1.7.28-license.txt b/ide/o.slf4j.api/external/slf4j-api-1.7.28-license.txt
new file mode 100644
index 0000000..796026a
--- /dev/null
+++ b/ide/o.slf4j.api/external/slf4j-api-1.7.28-license.txt
@@ -0,0 +1,27 @@
+Name: SLF4J
+Version: 1.7.28
+License: MIT-slf4j
+Origin: https://www.slf4j.org/
+Description: Simple Logging Facade for Java (SLF4J).
+
+Copyright (c) 2004-2017 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ide/o.slf4j.api/manifest.mf b/ide/o.slf4j.api/manifest.mf
new file mode 100644
index 0000000..0a06363
--- /dev/null
+++ b/ide/o.slf4j.api/manifest.mf
@@ -0,0 +1 @@
+OpenIDE-Module: org.slf4j.api
\ No newline at end of file
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties b/ide/o.slf4j.api/nbproject/project.properties
similarity index 90%
copy from ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
copy to ide/o.slf4j.api/nbproject/project.properties
index 3bdaa1b..4090ade 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
+++ b/ide/o.slf4j.api/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+release.external/slf4j-api-1.7.28.jar=modules/org-slf4j-api.jar
 is.autoload=true
-release.external/JavaEWAH-0.7.9.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
diff --git a/ide/c.jcraft.jzlib/nbproject/project.xml b/ide/o.slf4j.api/nbproject/project.xml
similarity index 84%
copy from ide/c.jcraft.jzlib/nbproject/project.xml
copy to ide/o.slf4j.api/nbproject/project.xml
index 76ce929..87280c2 100644
--- a/ide/c.jcraft.jzlib/nbproject/project.xml
+++ b/ide/o.slf4j.api/nbproject/project.xml
@@ -23,12 +23,12 @@
     <type>org.netbeans.modules.apisupport.project</type>
     <configuration>
         <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
-            <code-name-base>com.jcraft.jzlib</code-name-base>
+            <code-name-base>org.slf4j.api</code-name-base>
             <module-dependencies/>
             <public-packages/>
             <class-path-extension>
-                <runtime-relative-path>com-jcraft-jzlib.jar</runtime-relative-path>
-		<binary-origin>external/jzlib-1.0.7.jar</binary-origin>
+                <runtime-relative-path>org-slf4j-api.jar</runtime-relative-path>
+                <binary-origin>external/org.slf4j.api-1.7.28.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/ide/o.eclipse.jgit.java7/build.xml b/ide/o.slf4j.jdk14/build.xml
similarity index 88%
rename from ide/o.eclipse.jgit.java7/build.xml
rename to ide/o.slf4j.jdk14/build.xml
index 8b81f7f..8c6e3ba 100644
--- a/ide/o.eclipse.jgit.java7/build.xml
+++ b/ide/o.slf4j.jdk14/build.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -8,18 +7,15 @@
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
-
       http://www.apache.org/licenses/LICENSE-2.0
-
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-
 -->
-<project name="ide/o.eclipse.jgit.java7" default="build" basedir=".">
+<project name="ide/o.slf4j.jdk14" default="build" basedir=".">
     <import file="../../nbbuild/templates/projectized.xml"/>
-    <target name="jar" depends="release"/>
+    <target name="jar"/>
 </project>
diff --git a/ide/c.jcraft.jsch/external/binaries-list b/ide/o.slf4j.jdk14/external/binaries-list
similarity index 91%
copy from ide/c.jcraft.jsch/external/binaries-list
copy to ide/o.slf4j.jdk14/external/binaries-list
index 5191345..9ec68ed 100644
--- a/ide/c.jcraft.jsch/external/binaries-list
+++ b/ide/o.slf4j.jdk14/external/binaries-list
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-DA3584329A263616E277E15462B387ADDD1B208D com.jcraft:jsch:0.1.54
+7DD18B408288AD35CD4021A6E50F0E6E8C6454DE org.slf4j:slf4j-jdk14:1.7.28
diff --git a/ide/o.slf4j.jdk14/external/slf4j-jdk14-1.7.28-license.txt b/ide/o.slf4j.jdk14/external/slf4j-jdk14-1.7.28-license.txt
new file mode 100644
index 0000000..796026a
--- /dev/null
+++ b/ide/o.slf4j.jdk14/external/slf4j-jdk14-1.7.28-license.txt
@@ -0,0 +1,27 @@
+Name: SLF4J
+Version: 1.7.28
+License: MIT-slf4j
+Origin: https://www.slf4j.org/
+Description: Simple Logging Facade for Java (SLF4J).
+
+Copyright (c) 2004-2017 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ide/o.slf4j.jdk14/manifest.mf b/ide/o.slf4j.jdk14/manifest.mf
new file mode 100644
index 0000000..7469524
--- /dev/null
+++ b/ide/o.slf4j.jdk14/manifest.mf
@@ -0,0 +1 @@
+OpenIDE-Module: org.slf4j.jdk14
\ No newline at end of file
diff --git a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties b/ide/o.slf4j.jdk14/nbproject/project.properties
similarity index 90%
copy from ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
copy to ide/o.slf4j.jdk14/nbproject/project.properties
index 3bdaa1b..179a1fd 100644
--- a/ide/c.googlecode.javaewah.JavaEWAH/nbproject/project.properties
+++ b/ide/o.slf4j.jdk14/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+release.external/slf4j-jdk14-1.7.28.jar=modules/org-slf4j-jdk14.jar
 is.autoload=true
-release.external/JavaEWAH-0.7.9.jar=modules/com-googlecode-javaewah-JavaEWAH.jar
diff --git a/ide/c.jcraft.jzlib/nbproject/project.xml b/ide/o.slf4j.jdk14/nbproject/project.xml
similarity index 84%
copy from ide/c.jcraft.jzlib/nbproject/project.xml
copy to ide/o.slf4j.jdk14/nbproject/project.xml
index 76ce929..0896911 100644
--- a/ide/c.jcraft.jzlib/nbproject/project.xml
+++ b/ide/o.slf4j.jdk14/nbproject/project.xml
@@ -23,12 +23,12 @@
     <type>org.netbeans.modules.apisupport.project</type>
     <configuration>
         <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
-            <code-name-base>com.jcraft.jzlib</code-name-base>
+            <code-name-base>org.slf4j.jdk14</code-name-base>
             <module-dependencies/>
             <public-packages/>
             <class-path-extension>
-                <runtime-relative-path>com-jcraft-jzlib.jar</runtime-relative-path>
-		<binary-origin>external/jzlib-1.0.7.jar</binary-origin>
+                <runtime-relative-path>org-slf4j-jdk14.jar</runtime-relative-path>
+                <binary-origin>external/slf4j-jdk14-1.7.28.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties
index 5eb4cbe..ea97ad1 100644
--- a/nbbuild/cluster.properties
+++ b/nbbuild/cluster.properties
@@ -438,6 +438,8 @@ nb.cluster.ide=\
         o.apache.ws.commons.util,\
         o.apache.xml.resolver,\
         o.apache.xmlrpc,\
+        o.bouncycastle.bcpg,\
+        o.bouncycastle.bcprov,\
         o.eclipse.core.contenttype,\
         o.eclipse.core.jobs,\
         o.eclipse.core.net,\
@@ -449,7 +451,6 @@ nb.cluster.ide=\
         o.eclipse.equinox.registry,\
         o.eclipse.equinox.security,\
         o.eclipse.jgit,\
-        o.eclipse.jgit.java7,\
         o.eclipse.mylyn.bugzilla.core,\
         o.eclipse.mylyn.commons.core,\
         o.eclipse.mylyn.commons.net,\
@@ -462,6 +463,8 @@ nb.cluster.ide=\
         o.eclipse.mylyn.wikitext.textile.core,\
         o.n.swing.dirchooser,\
         o.openidex.util,\
+        o.slf4j.api,\
+        o.slf4j.jdk14,\
         options.editor,\
         parsing.api,\
         parsing.indexing,\
diff --git a/nbbuild/licenses/MIT-bouncycastle b/nbbuild/licenses/MIT-bouncycastle
new file mode 100644
index 0000000..7a44ec3
--- /dev/null
+++ b/nbbuild/licenses/MIT-bouncycastle
@@ -0,0 +1,18 @@
+Copyright (c) 2000 - 2019 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/nbbuild/licenses/MIT-slf4j b/nbbuild/licenses/MIT-slf4j
new file mode 100644
index 0000000..744377c
--- /dev/null
+++ b/nbbuild/licenses/MIT-slf4j
@@ -0,0 +1,21 @@
+Copyright (c) 2004-2017 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists