diff options
104 files changed, 1634 insertions, 1224 deletions
diff --git a/org.eclipse.egit-feature/feature.xml b/org.eclipse.egit-feature/feature.xml index 8c59488cd3..8402f2afb1 100644 --- a/org.eclipse.egit-feature/feature.xml +++ b/org.eclipse.egit-feature/feature.xml @@ -2,7 +2,7 @@ <feature id="org.eclipse.egit" label="%featureName" - version="5.6.1.qualifier" + version="5.7.0.qualifier" provider-name="%providerName" plugin="org.eclipse.egit" license-feature="org.eclipse.license" @@ -40,9 +40,9 @@ <import plugin="org.eclipse.jsch.ui" version="1.3.0" match="compatible"/> <import plugin="org.eclipse.jsch.core" version="1.3.0" match="compatible"/> <import plugin="com.jcraft.jsch" version="0.1.55" match="compatible"/> - <import feature="org.eclipse.jgit" version="5.6.1" match="equivalent"/> - <import feature="org.eclipse.jgit.ssh.apache" version="5.6.1" match="equivalent"/> - <import feature="org.eclipse.jgit.http.apache" version="5.6.1" match="equivalent"/> + <import feature="org.eclipse.jgit" version="5.7.0" match="equivalent"/> + <import feature="org.eclipse.jgit.ssh.apache" version="5.7.0" match="equivalent"/> + <import feature="org.eclipse.jgit.http.apache" version="5.7.0" match="equivalent"/> </requires> <plugin diff --git a/org.eclipse.egit-feature/pom.xml b/org.eclipse.egit-feature/pom.xml index 8a0bdc14ec..6668928d98 100644 --- a/org.eclipse.egit-feature/pom.xml +++ b/org.eclipse.egit-feature/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <groupId>org.eclipse.egit.feature</groupId> diff --git a/org.eclipse.egit.core.junit/META-INF/MANIFEST.MF b/org.eclipse.egit.core.junit/META-INF/MANIFEST.MF index f3a50aa6bb..cce57be286 100644 --- a/org.eclipse.egit.core.junit/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.core.junit/META-INF/MANIFEST.MF @@ -4,26 +4,26 @@ Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor Automatic-Module-Name: org.eclipse.egit.core.junit Bundle-SymbolicName: org.eclipse.egit.core.junit -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", org.eclipse.core.filesystem;bundle-version="[1.6.0,2.0.0)", org.eclipse.core.resources;bundle-version="[3.11.0,4.0.0)", org.eclipse.jdt.core;bundle-version="[3.12.0,4.0.0)", org.eclipse.jdt.launching;bundle-version="[3.8.100,4.0.0)", org.junit;bundle-version="[4.12.0,5.0.0)" -Import-Package: org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.op;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)", - org.eclipse.jgit.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.junit;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)" +Import-Package: org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.op;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)", + org.eclipse.jgit.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.junit;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: org.eclipse.egit.core.test;version="5.6.1";x-friends:="org.eclipse.egit.core.test,org.eclipse.egit.ui.test,org.eclipse.egit.gitflow.test" +Export-Package: org.eclipse.egit.core.test;version="5.7.0";x-friends:="org.eclipse.egit.core.test,org.eclipse.egit.ui.test,org.eclipse.egit.gitflow.test" Bundle-Localization: plugin diff --git a/org.eclipse.egit.core.junit/pom.xml b/org.eclipse.egit.core.junit/pom.xml index dba03b69cd..98e81e7410 100644 --- a/org.eclipse.egit.core.junit/pom.xml +++ b/org.eclipse.egit.core.junit/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.core.junit</artifactId> diff --git a/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestProject.java b/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestProject.java index c27eb0fc64..bfbba81e74 100644 --- a/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestProject.java +++ b/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestProject.java @@ -205,12 +205,19 @@ public class TestProject { public void dispose() throws CoreException, IOException { waitForIndexer(); - if (project.exists()) { - TestUtils.deleteProject(project); - } else { - File f = new File(location); - if (f.exists()) - FileUtils.delete(f, FileUtils.RECURSIVE | FileUtils.RETRY); + try { + if (project.exists()) { + TestUtils.deleteProject(project); + } else { + File f = new File(location); + if (f.exists()) { + FileUtils.delete(f, FileUtils.RECURSIVE | FileUtils.RETRY); + } + } + } catch (CoreException | IOException e) { + System.err.println(e.toString()); + TestUtils.listDirectory(new File(location), true); + throw e; } } diff --git a/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestUtils.java b/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestUtils.java index 207269e618..57ad7b4ac4 100644 --- a/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestUtils.java +++ b/org.eclipse.egit.core.junit/src/org/eclipse/egit/core/test/TestUtils.java @@ -25,6 +25,11 @@ import java.lang.management.LockInfo; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -125,8 +130,68 @@ public class TestUtils { * @throws IOException */ public void deleteTempDirs() throws IOException { - if (rootDir.exists()) - FileUtils.delete(rootDir, FileUtils.RECURSIVE | FileUtils.RETRY); + if (rootDir.exists()) { + try { + FileUtils.delete(rootDir, + FileUtils.RECURSIVE | FileUtils.RETRY); + } catch (DirectoryNotEmptyException e) { + System.err.println(e.toString()); + listDirectory(rootDir, true); + throw e; + } + } + } + + /** + * Produce a simple directory listing. + * + * @param directory + * to list + * @param recursive + * whether to descend into sub-directories + */ + public static void listDirectory(File directory, boolean recursive) { + try { + java.nio.file.Path top = directory.toPath(); + Files.walkFileTree(top, + new SimpleFileVisitor<java.nio.file.Path>() { + + private void print(java.nio.file.Path path, + BasicFileAttributes attrs) { + StringBuilder b = new StringBuilder(); + b.append(attrs.lastModifiedTime().toString()); + b.append(' '); + b.append(path.toString()); + if (attrs.isSymbolicLink()) { + b.append(" (symlink)"); + } else if (attrs.isDirectory()) { + b.append('/'); + } + System.out.println(b.toString()); + } + + @Override + public FileVisitResult preVisitDirectory( + java.nio.file.Path dir, + BasicFileAttributes attrs) throws IOException { + print(dir, attrs); + return (recursive || top.equals(dir)) + ? FileVisitResult.CONTINUE + : FileVisitResult.SKIP_SUBTREE; + } + + @Override + public FileVisitResult visitFile( + java.nio.file.Path file, + BasicFileAttributes attrs) throws IOException { + print(file, attrs); + return FileVisitResult.CONTINUE; + } + }); + } catch (Exception e) { + System.err.println("[ERROR] Error listing directory: " + directory); + e.printStackTrace(); + } } /** diff --git a/org.eclipse.egit.core.test/META-INF/MANIFEST.MF b/org.eclipse.egit.core.test/META-INF/MANIFEST.MF index 7d7fd3c669..f13bbe4f56 100644 --- a/org.eclipse.egit.core.test/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.core.test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-Vendor: Eclipse.org Automatic-Module-Name: org.eclipse.egit.core.test Bundle-SymbolicName: org.eclipse.egit.core.test;singleton:=true Fragment-Host: org.eclipse.egit.core -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", org.eclipse.core.filesystem;bundle-version="[1.6.0,2.0.0)", org.eclipse.core.resources;bundle-version="[3.11.0,4.0.0)", @@ -13,19 +13,19 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", org.eclipse.jdt.core;bundle-version="[3.12.0,4.0.0)", org.hamcrest;bundle-version="[1.1.0,2.0.0)", org.junit;bundle-version="[4.12.0,5.0.0)", - org.eclipse.egit.core.junit;bundle-version="[5.6.1,5.7.0)" + org.eclipse.egit.core.junit;bundle-version="[5.7.0,5.8.0)" Import-Package: net.bytebuddy;version="[1.7.9,2.0.0)", net.bytebuddy.agent;version="[1.7.9,2.0.0)", - org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.op;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.project;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)", - org.eclipse.jgit.junit;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)", + org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.op;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.project;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)", + org.eclipse.jgit.junit;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)", org.mockito;version="[2.13.0,3.0.0)", org.mockito.junit;version="[2.13.0,3.0.0)", org.mockito.stubbing;version="[2.13.0,3.0.0)" diff --git a/org.eclipse.egit.core.test/pom.xml b/org.eclipse.egit.core.test/pom.xml index fba7432d4c..b42fb6901c 100644 --- a/org.eclipse.egit.core.test/pom.xml +++ b/org.eclipse.egit.core.test/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.core.test</artifactId> diff --git a/org.eclipse.egit.core/META-INF/MANIFEST.MF b/org.eclipse.egit.core/META-INF/MANIFEST.MF index 3fdb960ac2..c94f4a4bf7 100644 --- a/org.eclipse.egit.core/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.core/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Automatic-Module-Name: org.eclipse.egit.core Bundle-SymbolicName: org.eclipse.egit.core;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Activator: org.eclipse.egit.core.Activator Bundle-Vendor: %Bundle-Vendor Bundle-Localization: plugin @@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", org.eclipse.equinox.security;bundle-version="[1.2.200,2.0.0)", org.eclipse.core.variables;bundle-version="[3.3.0,4.0.0)", org.eclipse.core.filebuffers;bundle-version="[3.6.0,4.0.0)" -Export-Package: org.eclipse.egit.core;version="5.6.1"; +Export-Package: org.eclipse.egit.core;version="5.7.0"; x-friends:="org.eclipse.egit.ui, org.eclipse.egit.ui.test, org.eclipse.egit.mylyn.ui, @@ -23,21 +23,21 @@ Export-Package: org.eclipse.egit.core;version="5.6.1"; org.eclipse.mylyn.github.ui, org.eclipse.mylyn.github.core, org.eclipse.egit.core.junit", - org.eclipse.egit.core.attributes;version="5.6.1";uses:="org.eclipse.jgit.lib", - org.eclipse.egit.core.internal;version="5.6.1"; + org.eclipse.egit.core.attributes;version="5.7.0";uses:="org.eclipse.jgit.lib", + org.eclipse.egit.core.internal;version="5.7.0"; x-friends:="org.eclipse.egit.ui, org.eclipse.egit.import, org.eclipse.egit.gitflow.ui, org.eclipse.egit.gitflow, org.eclipse.egit.mylyn.ui", - org.eclipse.egit.core.internal.gerrit;version="5.6.1";x-friends:="org.eclipse.egit.ui", - org.eclipse.egit.core.internal.indexdiff;version="5.6.1";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test", - org.eclipse.egit.core.internal.job;version="5.6.1";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.gitflow.ui,org.eclipse.egit.gitflow", - org.eclipse.egit.core.internal.rebase;version="5.6.1";x-friends:="org.eclipse.egit.ui", - org.eclipse.egit.core.internal.storage;version="5.6.1";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.core.test", - org.eclipse.egit.core.internal.trace;version="5.6.1";x-internal:=true, - org.eclipse.egit.core.internal.util;version="5.6.1";x-friends:="org.eclipse.egit.ui", - org.eclipse.egit.core.op;version="5.6.1"; + org.eclipse.egit.core.internal.gerrit;version="5.7.0";x-friends:="org.eclipse.egit.ui", + org.eclipse.egit.core.internal.indexdiff;version="5.7.0";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test", + org.eclipse.egit.core.internal.job;version="5.7.0";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.gitflow.ui,org.eclipse.egit.gitflow", + org.eclipse.egit.core.internal.rebase;version="5.7.0";x-friends:="org.eclipse.egit.ui", + org.eclipse.egit.core.internal.storage;version="5.7.0";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.core.test", + org.eclipse.egit.core.internal.trace;version="5.7.0";x-internal:=true, + org.eclipse.egit.core.internal.util;version="5.7.0";x-friends:="org.eclipse.egit.ui", + org.eclipse.egit.core.op;version="5.7.0"; x-friends:="org.eclipse.egit.ui.test, org.eclipse.egit.ui, org.eclipse.egit.gitflow, @@ -46,41 +46,41 @@ Export-Package: org.eclipse.egit.core;version="5.6.1"; org.eclipse.egit.github.core, org.eclipse.mylyn.github.ui, org.eclipse.egit.core.junit", - org.eclipse.egit.core.project;version="5.6.1";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test,org.eclipse.egit.gitflow.ui", - org.eclipse.egit.core.securestorage;version="5.6.1";x-friends:="org.eclipse.egit.ui", - org.eclipse.egit.core.storage;version="5.6.1"; + org.eclipse.egit.core.project;version="5.7.0";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test,org.eclipse.egit.gitflow.ui", + org.eclipse.egit.core.securestorage;version="5.7.0";x-friends:="org.eclipse.egit.ui", + org.eclipse.egit.core.storage;version="5.7.0"; uses:="org.eclipse.core.runtime, org.eclipse.jgit.dircache, org.eclipse.jgit.lib, org.eclipse.core.resources", - org.eclipse.egit.core.synchronize;version="5.6.1";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test", - org.eclipse.egit.core.synchronize.dto;version="5.6.1";x-friends:="org.eclipse.egit.ui" + org.eclipse.egit.core.synchronize;version="5.7.0";x-friends:="org.eclipse.egit.ui,org.eclipse.egit.ui.test", + org.eclipse.egit.core.synchronize.dto;version="5.7.0";x-friends:="org.eclipse.egit.ui" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: com.jcraft.jsch;bundle-version="[0.1.53,0.2.0)", org.eclipse.core.net.proxy;bundle-version="[1.3.0,2.0.0)", - org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)", - org.eclipse.jgit.diff;version="[5.6.1,5.7.0)", - org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)", - org.eclipse.jgit.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.events;version="[5.6.1,5.7.0)", - org.eclipse.jgit.internal.storage.file;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lfs;version="[5.6.1,5.7.0)";resolution:=optional, - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.merge;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)", - org.eclipse.jgit.submodule;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport.http;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport.http.apache;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport.sshd;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)", + org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)", + org.eclipse.jgit.diff;version="[5.7.0,5.8.0)", + org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)", + org.eclipse.jgit.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.events;version="[5.7.0,5.8.0)", + org.eclipse.jgit.internal.storage.file;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lfs;version="[5.7.0,5.8.0)";resolution:=optional, + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.merge;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)", + org.eclipse.jgit.submodule;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport.http;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport.http.apache;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport.sshd;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)", org.eclipse.jsch.core;bundle-version="[1.3.0,2.0.0)" diff --git a/org.eclipse.egit.core/pom.xml b/org.eclipse.egit.core/pom.xml index e770cade99..84b4cf5413 100644 --- a/org.eclipse.egit.core/pom.xml +++ b/org.eclipse.egit.core/pom.xml @@ -19,7 +19,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.core</artifactId> diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/CachingRepository.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/CachingRepository.java index 6586ba9e7a..79295ccb3c 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/CachingRepository.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/CachingRepository.java @@ -30,7 +30,7 @@ import org.eclipse.jgit.storage.file.FileBasedConfig; class CachingRepository extends FileRepository { private static final ThreadLocal<Map<File, CachedConfig>> CACHED_CONFIG = ThreadLocal - .withInitial(() -> new HashMap<>()); + .withInitial(HashMap::new); /** * @param options diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java index daad240cea..0c77212e2d 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java @@ -203,7 +203,7 @@ public class BranchOperation implements IEGitOperation { throws CoreException { IProject[] refreshProjects = results.entrySet().stream() .map(this::getAffectedProjects) - .flatMap(arr -> Stream.of(arr)).distinct() + .flatMap(Stream::of).distinct() .toArray(IProject[]::new); ProjectUtil.refreshValidProjects(refreshProjects, delete, monitor); diff --git a/org.eclipse.egit.doc/META-INF/MANIFEST.MF b/org.eclipse.egit.doc/META-INF/MANIFEST.MF index f7826ba922..afb1ecb1e0 100644 --- a/org.eclipse.egit.doc/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.doc/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.eclipse.egit.doc;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Vendor: %Bundle-Vendor Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/org.eclipse.egit.doc/pom.xml b/org.eclipse.egit.doc/pom.xml index addc756562..29872cd21d 100644 --- a/org.eclipse.egit.doc/pom.xml +++ b/org.eclipse.egit.doc/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.doc</artifactId> diff --git a/org.eclipse.egit.gitflow-feature/feature.xml b/org.eclipse.egit.gitflow-feature/feature.xml index e9396a6dc1..b944b13f0f 100644 --- a/org.eclipse.egit.gitflow-feature/feature.xml +++ b/org.eclipse.egit.gitflow-feature/feature.xml @@ -2,7 +2,7 @@ <feature id="org.eclipse.egit.gitflow.feature" label="%featureName" - version="5.6.1.qualifier" + version="5.7.0.qualifier" provider-name="%providerName" plugin="org.eclipse.egit.gitflow" license-feature="org.eclipse.license" @@ -26,9 +26,9 @@ </url> <requires> - <import feature="org.eclipse.jgit" version="5.6.1" match="equivalent"/> - <import plugin="org.eclipse.egit.core" version="5.6.1" match="equivalent"/> - <import plugin="org.eclipse.egit.ui" version="5.6.1" match="equivalent"/> + <import feature="org.eclipse.jgit" version="5.7.0" match="equivalent"/> + <import plugin="org.eclipse.egit.core" version="5.7.0" match="equivalent"/> + <import plugin="org.eclipse.egit.ui" version="5.7.0" match="equivalent"/> </requires> <plugin diff --git a/org.eclipse.egit.gitflow-feature/pom.xml b/org.eclipse.egit.gitflow-feature/pom.xml index 008edafa57..974424abb1 100644 --- a/org.eclipse.egit.gitflow-feature/pom.xml +++ b/org.eclipse.egit.gitflow-feature/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <groupId>org.eclipse.egit.feature</groupId> diff --git a/org.eclipse.egit.gitflow.test/META-INF/MANIFEST.MF b/org.eclipse.egit.gitflow.test/META-INF/MANIFEST.MF index e42d95decc..a744e5d045 100644 --- a/org.eclipse.egit.gitflow.test/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.gitflow.test/META-INF/MANIFEST.MF @@ -3,13 +3,13 @@ Bundle-ManifestVersion: 2 Bundle-Name: GitFlow Test Automatic-Module-Name: org.eclipse.egit.gitflow.test Bundle-SymbolicName: org.eclipse.egit.gitflow.test;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Fragment-Host: org.eclipse.egit.gitflow Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.jgit.junit;version="[5.6.1,5.7.0)", +Import-Package: org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.jgit.junit;version="[5.7.0,5.8.0)", org.hamcrest;version="[1.1.0,1.2.0)", org.junit.rules;version="[4.12.0,5.0.0)", org.junit;version="[4.12.0,5.0.0)" Require-Bundle: org.eclipse.core.resources;bundle-version="[3.11.0,4.0.0)", - org.eclipse.egit.core.junit;bundle-version="[5.6.1,5.7.0)" + org.eclipse.egit.core.junit;bundle-version="[5.7.0,5.8.0)" diff --git a/org.eclipse.egit.gitflow.test/pom.xml b/org.eclipse.egit.gitflow.test/pom.xml index 0ca8a2cb84..6094c63d49 100644 --- a/org.eclipse.egit.gitflow.test/pom.xml +++ b/org.eclipse.egit.gitflow.test/pom.xml @@ -17,7 +17,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.gitflow.test</artifactId> diff --git a/org.eclipse.egit.gitflow.ui/META-INF/MANIFEST.MF b/org.eclipse.egit.gitflow.ui/META-INF/MANIFEST.MF index bd0b8cc871..f8728347e8 100644 --- a/org.eclipse.egit.gitflow.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.gitflow.ui/META-INF/MANIFEST.MF @@ -3,36 +3,36 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Automatic-Module-Name: org.eclipse.egit.gitflow.ui Bundle-SymbolicName: org.eclipse.egit.gitflow.ui;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Activator: org.eclipse.egit.gitflow.ui.Activator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Vendor: %Bundle-Vendor Bundle-Localization: plugin -Import-Package: org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.job;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.op;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.project;version="[5.6.1,5.7.0)", - org.eclipse.egit.gitflow;version="[5.6.1,5.7.0)", - org.eclipse.egit.gitflow.op;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.actions;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.branch;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.commit;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.decorators;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.expressions;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.rebase;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.repository.tree;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.selection;version="[5.6.1,5.7.0)", - org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revplot;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)" +Import-Package: org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.job;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.op;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.project;version="[5.7.0,5.8.0)", + org.eclipse.egit.gitflow;version="[5.7.0,5.8.0)", + org.eclipse.egit.gitflow.op;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.actions;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.branch;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.commit;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.decorators;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.expressions;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.rebase;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.repository.tree;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.selection;version="[5.7.0,5.8.0)", + org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revplot;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)" Require-Bundle: org.eclipse.core.resources;bundle-version="[3.11.0,4.0.0)", org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", org.eclipse.team.ui;bundle-version="[3.8.0,4.0.0)", @@ -42,12 +42,12 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.11.0,4.0.0)", org.eclipse.core.databinding.property;bundle-version="[1.6.0,2.0.0)", org.eclipse.core.databinding.beans;bundle-version="[1.3.100,2.0.0)", org.eclipse.core.databinding;bundle-version="[1.6.0,2.0.0)" -Export-Package: org.eclipse.egit.gitflow.ui;version="5.6.1";x-friends:="org.eclipse.egit.ui.test", - org.eclipse.egit.gitflow.ui.internal;version="5.6.1";x-friends:="org.eclipse.egit.ui.test", - org.eclipse.egit.gitflow.ui.internal.actions;version="5.6.1";x-friends:="org.eclipse.egit.ui.test", - org.eclipse.egit.gitflow.ui.internal.decorators;version="5.6.1";x-internal:=true, - org.eclipse.egit.gitflow.ui.internal.dialogs;version="5.6.1";x-internal:=true, - org.eclipse.egit.gitflow.ui.internal.factories;version="5.6.1";x-internal:=true, - org.eclipse.egit.gitflow.ui.internal.menu;version="5.6.1";x-internal:=true, - org.eclipse.egit.gitflow.ui.internal.properties;version="5.6.1";x-internal:=true, - org.eclipse.egit.gitflow.ui.internal.validation;version="5.6.1";x-internal:=true +Export-Package: org.eclipse.egit.gitflow.ui;version="5.7.0";x-friends:="org.eclipse.egit.ui.test", + org.eclipse.egit.gitflow.ui.internal;version="5.7.0";x-friends:="org.eclipse.egit.ui.test", + org.eclipse.egit.gitflow.ui.internal.actions;version="5.7.0";x-friends:="org.eclipse.egit.ui.test", + org.eclipse.egit.gitflow.ui.internal.decorators;version="5.7.0";x-internal:=true, + org.eclipse.egit.gitflow.ui.internal.dialogs;version="5.7.0";x-internal:=true, + org.eclipse.egit.gitflow.ui.internal.factories;version="5.7.0";x-internal:=true, + org.eclipse.egit.gitflow.ui.internal.menu;version="5.7.0";x-internal:=true, + org.eclipse.egit.gitflow.ui.internal.properties;version="5.7.0";x-internal:=true, + org.eclipse.egit.gitflow.ui.internal.validation;version="5.7.0";x-internal:=true diff --git a/org.eclipse.egit.gitflow.ui/pom.xml b/org.eclipse.egit.gitflow.ui/pom.xml index 8ebee50cd5..5ede459320 100644 --- a/org.eclipse.egit.gitflow.ui/pom.xml +++ b/org.eclipse.egit.gitflow.ui/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.gitflow.ui</artifactId> diff --git a/org.eclipse.egit.gitflow/META-INF/MANIFEST.MF b/org.eclipse.egit.gitflow/META-INF/MANIFEST.MF index c4deaa48df..c15be6b07e 100644 --- a/org.eclipse.egit.gitflow/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.gitflow/META-INF/MANIFEST.MF @@ -3,21 +3,21 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Automatic-Module-Name: org.eclipse.egit.gitflow Bundle-SymbolicName: org.eclipse.egit.gitflow;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Vendor: %Bundle-Vendor Bundle-Activator: org.eclipse.egit.gitflow.Activator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)" -Export-Package: org.eclipse.egit.gitflow;version="5.6.1"; +Export-Package: org.eclipse.egit.gitflow;version="5.7.0"; uses:="org.osgi.framework, org.eclipse.jgit.transport, org.eclipse.core.runtime, org.eclipse.jgit.lib, org.eclipse.jgit.revwalk", org.eclipse.egit.gitflow.internal;x-internal:=true, - org.eclipse.egit.gitflow.op;version="5.6.1"; + org.eclipse.egit.gitflow.op;version="5.7.0"; uses:="org.eclipse.jgit.transport, org.eclipse.core.runtime.jobs, org.eclipse.core.runtime, @@ -26,13 +26,13 @@ Export-Package: org.eclipse.egit.gitflow;version="5.6.1"; org.eclipse.jgit.revwalk, org.eclipse.jgit.lib, org.eclipse.egit.core.op" -Import-Package: org.eclipse.egit.core.internal.job;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.op;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)", - org.eclipse.jgit.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)" +Import-Package: org.eclipse.egit.core.internal.job;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.op;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)", + org.eclipse.jgit.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)" diff --git a/org.eclipse.egit.gitflow/pom.xml b/org.eclipse.egit.gitflow/pom.xml index 5e90fa6b60..0d6f2e0dc1 100644 --- a/org.eclipse.egit.gitflow/pom.xml +++ b/org.eclipse.egit.gitflow/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.gitflow</artifactId> diff --git a/org.eclipse.egit.mylyn-feature/feature.xml b/org.eclipse.egit.mylyn-feature/feature.xml index 317c41789e..9216798451 100644 --- a/org.eclipse.egit.mylyn-feature/feature.xml +++ b/org.eclipse.egit.mylyn-feature/feature.xml @@ -2,7 +2,7 @@ <feature id="org.eclipse.egit.mylyn" label="%featureName" - version="5.6.1.qualifier" + version="5.7.0.qualifier" provider-name="%providerName" plugin="org.eclipse.egit" license-feature="org.eclipse.license" @@ -26,7 +26,7 @@ </url> <requires> - <import feature="org.eclipse.egit" version="5.6.1" match="equivalent"/> + <import feature="org.eclipse.egit" version="5.7.0" match="equivalent"/> <import feature="org.eclipse.mylyn.team_feature" version="3.20.0" match="greaterOrEqual"/> </requires> diff --git a/org.eclipse.egit.mylyn-feature/pom.xml b/org.eclipse.egit.mylyn-feature/pom.xml index f742e59293..9885c8e1d1 100644 --- a/org.eclipse.egit.mylyn-feature/pom.xml +++ b/org.eclipse.egit.mylyn-feature/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <groupId>org.eclipse.egit.feature</groupId> diff --git a/org.eclipse.egit.mylyn.ui.test/META-INF/MANIFEST.MF b/org.eclipse.egit.mylyn.ui.test/META-INF/MANIFEST.MF index 7cbf4eb932..f864cd6073 100644 --- a/org.eclipse.egit.mylyn.ui.test/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.mylyn.ui.test/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: Git Team Provider Mylyn UI Test Fragment Automatic-Module-Name: org.eclipse.egit.mylyn.ui.test Bundle-SymbolicName: org.eclipse.egit.mylyn.ui.test -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Fragment-Host: org.eclipse.egit.mylyn.ui Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-Vendor: Eclipse.org diff --git a/org.eclipse.egit.mylyn.ui.test/pom.xml b/org.eclipse.egit.mylyn.ui.test/pom.xml index eb7bd616bf..7e2655fb86 100644 --- a/org.eclipse.egit.mylyn.ui.test/pom.xml +++ b/org.eclipse.egit.mylyn.ui.test/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.mylyn.ui.test</artifactId> diff --git a/org.eclipse.egit.mylyn.ui/META-INF/MANIFEST.MF b/org.eclipse.egit.mylyn.ui/META-INF/MANIFEST.MF index fd27e471e1..8bb39f7747 100644 --- a/org.eclipse.egit.mylyn.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.mylyn.ui/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Automatic-Module-Name: org.eclipse.egit.mylyn.ui Bundle-SymbolicName: org.eclipse.egit.mylyn.ui;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Activator: org.eclipse.egit.internal.mylyn.ui.EGitMylynUI Bundle-Vendor: %Bundle-Vendor Require-Bundle: org.eclipse.jface;bundle-version="[3.12.0,4.0.0)", @@ -19,17 +19,17 @@ Require-Bundle: org.eclipse.jface;bundle-version="[3.12.0,4.0.0)", Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin -Export-Package: org.eclipse.egit.internal.mylyn.ui;version="5.6.1";x-friends:="org.eclipse.egit.ui.test", - org.eclipse.egit.internal.mylyn.ui.commit;version="5.6.1";x-internal:=true -Import-Package: org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.synchronize;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.commit;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.staging;version="[5.6.1,5.7.0)", - org.eclipse.egit.ui.internal.synchronize.model;version="[5.6.1,5.7.0)", - org.eclipse.jgit.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)", +Export-Package: org.eclipse.egit.internal.mylyn.ui;version="5.7.0";x-friends:="org.eclipse.egit.ui.test", + org.eclipse.egit.internal.mylyn.ui.commit;version="5.7.0";x-internal:=true +Import-Package: org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.synchronize;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.commit;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.staging;version="[5.7.0,5.8.0)", + org.eclipse.egit.ui.internal.synchronize.model;version="[5.7.0,5.8.0)", + org.eclipse.jgit.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)", org.eclipse.ui.plugin;bundle-version="[3.108.0,4.0.0)" diff --git a/org.eclipse.egit.mylyn.ui/pom.xml b/org.eclipse.egit.mylyn.ui/pom.xml index 973c813e2b..9480b569f7 100644 --- a/org.eclipse.egit.mylyn.ui/pom.xml +++ b/org.eclipse.egit.mylyn.ui/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.mylyn.ui</artifactId> diff --git a/org.eclipse.egit.repository/pom.xml b/org.eclipse.egit.repository/pom.xml index d1e7a6a5a6..47fd4ac351 100644 --- a/org.eclipse.egit.repository/pom.xml +++ b/org.eclipse.egit.repository/pom.xml @@ -20,7 +20,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.repository</artifactId> diff --git a/org.eclipse.egit.source-feature/feature.xml b/org.eclipse.egit.source-feature/feature.xml index e02de67e00..70bad7bf47 100644 --- a/org.eclipse.egit.source-feature/feature.xml +++ b/org.eclipse.egit.source-feature/feature.xml @@ -2,7 +2,7 @@ <feature id="org.eclipse.egit.source" label="%featureName" - version="5.6.1.qualifier" + version="5.7.0.qualifier" provider-name="%providerName" plugin="org.eclipse.egit" license-feature="org.eclipse.license" @@ -26,7 +26,7 @@ </url> <requires> - <import feature="org.eclipse.egit" version="5.6.1" match="equivalent"/> + <import feature="org.eclipse.egit" version="5.7.0" match="equivalent"/> </requires> <plugin diff --git a/org.eclipse.egit.source-feature/pom.xml b/org.eclipse.egit.source-feature/pom.xml index ce626307af..41e8defd62 100644 --- a/org.eclipse.egit.source-feature/pom.xml +++ b/org.eclipse.egit.source-feature/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <groupId>org.eclipse.egit.feature</groupId> diff --git a/org.eclipse.egit.target/egit-4.10.target b/org.eclipse.egit.target/egit-4.10.target index 2a80b4b733..1d50d24156 100644 --- a/org.eclipse.egit.target/egit-4.10.target +++ b/org.eclipse.egit.target/egit-4.10.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.10" sequenceNumber="1575495371"> +<target name="egit-4.10" sequenceNumber="1577058597"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.10.tpd b/org.eclipse.egit.target/egit-4.10.tpd index 226d00b80d..d0414af0fc 100644 --- a/org.eclipse.egit.target/egit-4.10.tpd +++ b/org.eclipse.egit.target/egit-4.10.tpd @@ -1,6 +1,6 @@ target "egit-4.10" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.11.target b/org.eclipse.egit.target/egit-4.11.target index e569cfc2eb..c80e493972 100644 --- a/org.eclipse.egit.target/egit-4.11.target +++ b/org.eclipse.egit.target/egit-4.11.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.11" sequenceNumber="1575495387"> +<target name="egit-4.11" sequenceNumber="1577058597"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.11.tpd b/org.eclipse.egit.target/egit-4.11.tpd index ee4e9d25b7..1085b26943 100644 --- a/org.eclipse.egit.target/egit-4.11.tpd +++ b/org.eclipse.egit.target/egit-4.11.tpd @@ -1,6 +1,6 @@ target "egit-4.11" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.12.target b/org.eclipse.egit.target/egit-4.12.target index 801a23dc04..ec97f65b4a 100644 --- a/org.eclipse.egit.target/egit-4.12.target +++ b/org.eclipse.egit.target/egit-4.12.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.12" sequenceNumber="1575495400"> +<target name="egit-4.12" sequenceNumber="1577058596"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.12.tpd b/org.eclipse.egit.target/egit-4.12.tpd index 98cf033fad..3c46252d3c 100644 --- a/org.eclipse.egit.target/egit-4.12.tpd +++ b/org.eclipse.egit.target/egit-4.12.tpd @@ -1,6 +1,6 @@ target "egit-4.12" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.13.target b/org.eclipse.egit.target/egit-4.13.target index 0fb34b1d42..4bc23775b8 100644 --- a/org.eclipse.egit.target/egit-4.13.target +++ b/org.eclipse.egit.target/egit-4.13.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.13" sequenceNumber="1575495416"> +<target name="egit-4.13" sequenceNumber="1577058597"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.13.tpd b/org.eclipse.egit.target/egit-4.13.tpd index 3c9e4c38c0..ec944dc458 100644 --- a/org.eclipse.egit.target/egit-4.13.tpd +++ b/org.eclipse.egit.target/egit-4.13.tpd @@ -1,6 +1,6 @@ target "egit-4.13" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.14-staging.target b/org.eclipse.egit.target/egit-4.14-staging.target index 1f1a6b2d45..6f3a0bbc20 100644 --- a/org.eclipse.egit.target/egit-4.14-staging.target +++ b/org.eclipse.egit.target/egit-4.14-staging.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.14-staging" sequenceNumber="1575495431"> +<target name="egit-4.14-staging" sequenceNumber="1577058597"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.14-staging.tpd b/org.eclipse.egit.target/egit-4.14-staging.tpd index db290025ca..d8bf386088 100644 --- a/org.eclipse.egit.target/egit-4.14-staging.tpd +++ b/org.eclipse.egit.target/egit-4.14-staging.tpd @@ -1,6 +1,6 @@ target "egit-4.14-staging" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.6.target b/org.eclipse.egit.target/egit-4.6.target index efa6addeff..2c986fc6a6 100644 --- a/org.eclipse.egit.target/egit-4.6.target +++ b/org.eclipse.egit.target/egit-4.6.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.6" sequenceNumber="1575495459"> +<target name="egit-4.6" sequenceNumber="1577058619"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.6.tpd b/org.eclipse.egit.target/egit-4.6.tpd index 9ce4e16e6a..fe3bc00c61 100644 --- a/org.eclipse.egit.target/egit-4.6.tpd +++ b/org.eclipse.egit.target/egit-4.6.tpd @@ -1,6 +1,6 @@ target "egit-4.6" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.7.target b/org.eclipse.egit.target/egit-4.7.target index 4b571257d9..8be45da968 100644 --- a/org.eclipse.egit.target/egit-4.7.target +++ b/org.eclipse.egit.target/egit-4.7.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.7" sequenceNumber="1575495459"> +<target name="egit-4.7" sequenceNumber="1577058605"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.7.tpd b/org.eclipse.egit.target/egit-4.7.tpd index 136be72cb1..22f3635b8f 100644 --- a/org.eclipse.egit.target/egit-4.7.tpd +++ b/org.eclipse.egit.target/egit-4.7.tpd @@ -1,6 +1,6 @@ target "egit-4.7" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.8.target b/org.eclipse.egit.target/egit-4.8.target index d76cbf16bc..9471c3f640 100644 --- a/org.eclipse.egit.target/egit-4.8.target +++ b/org.eclipse.egit.target/egit-4.8.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.8" sequenceNumber="1575495461"> +<target name="egit-4.8" sequenceNumber="1577058597"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.8.tpd b/org.eclipse.egit.target/egit-4.8.tpd index 0c3ed9d17e..e0f100ef0e 100644 --- a/org.eclipse.egit.target/egit-4.8.tpd +++ b/org.eclipse.egit.target/egit-4.8.tpd @@ -1,6 +1,6 @@ target "egit-4.8" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/egit-4.9.target b/org.eclipse.egit.target/egit-4.9.target index 9293ea0b88..572123b884 100644 --- a/org.eclipse.egit.target/egit-4.9.target +++ b/org.eclipse.egit.target/egit-4.9.target @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde?> <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> -<target name="egit-4.9" sequenceNumber="1575495471"> +<target name="egit-4.9" sequenceNumber="1577058578"> <locations> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> - <unit id="org.eclipse.jetty.client" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.client.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.continuation.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.http.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.io.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.security.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.server.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.servlet.source" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util" version="9.4.22.v20191022"/> - <unit id="org.eclipse.jetty.util.source" version="9.4.22.v20191022"/> - <repository id="jetty-9.4.22" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/"/> + <unit id="org.eclipse.jetty.client" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.client.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.continuation.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.http.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.io.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.security.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.server.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.servlet.source" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util" version="9.4.24.v20191120"/> + <unit id="org.eclipse.jetty.util.source" version="9.4.24.v20191120"/> + <repository id="jetty-9.4.24" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/"/> </location> <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> <unit id="org.eclipse.license.feature.group" version="0.0.0"/> diff --git a/org.eclipse.egit.target/egit-4.9.tpd b/org.eclipse.egit.target/egit-4.9.tpd index b53fbd2b0c..267404560c 100644 --- a/org.eclipse.egit.target/egit-4.9.tpd +++ b/org.eclipse.egit.target/egit-4.9.tpd @@ -1,6 +1,6 @@ target "egit-4.9" with source configurePhase -include "projects/jetty-9.4.22.tpd" +include "projects/jetty-9.4.24.tpd" include "projects/license.tpd" include "projects/swtbot-snapshot.tpd" include "orbit/R20191126223242-2019-12.tpd" diff --git a/org.eclipse.egit.target/pom.xml b/org.eclipse.egit.target/pom.xml index 69cdc2381b..a5e83a77df 100644 --- a/org.eclipse.egit.target/pom.xml +++ b/org.eclipse.egit.target/pom.xml @@ -20,7 +20,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <build> diff --git a/org.eclipse.egit.target/projects/jetty-9.4.22.tpd b/org.eclipse.egit.target/projects/jetty-9.4.22.tpd deleted file mode 100644 index 562e017d32..0000000000 --- a/org.eclipse.egit.target/projects/jetty-9.4.22.tpd +++ /dev/null @@ -1,20 +0,0 @@ -target "jetty-9.4.22" with source configurePhase - -location jetty-9.4.22 "https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.22.v20191022/" { - org.eclipse.jetty.client [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.client.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.continuation [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.continuation.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.http [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.http.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.io [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.io.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.security [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.security.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.server [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.server.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.servlet [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.servlet.source [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.util [9.4.22.v20191022,9.4.22.v20191022] - org.eclipse.jetty.util.source [9.4.22.v20191022,9.4.22.v20191022] -} diff --git a/org.eclipse.egit.target/projects/jetty-9.4.24.tpd b/org.eclipse.egit.target/projects/jetty-9.4.24.tpd new file mode 100644 index 0000000000..7b2af02385 --- /dev/null +++ b/org.eclipse.egit.target/projects/jetty-9.4.24.tpd @@ -0,0 +1,20 @@ +target "jetty-9.4.24" with source configurePhase + +location jetty-9.4.24 "https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.24.v20191120/" { + org.eclipse.jetty.client [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.client.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.continuation [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.continuation.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.http [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.http.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.io [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.io.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.security [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.security.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.server [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.server.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.servlet [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.servlet.source [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.util [9.4.24.v20191120,9.4.24.v20191120] + org.eclipse.jetty.util.source [9.4.24.v20191120,9.4.24.v20191120] +} diff --git a/org.eclipse.egit.ui.test/META-INF/MANIFEST.MF b/org.eclipse.egit.ui.test/META-INF/MANIFEST.MF index 2f6434c1df..07085f337e 100644 --- a/org.eclipse.egit.ui.test/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.ui.test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-Vendor: Eclipse.org Automatic-Module-Name: org.eclipse.egit.ui.test Bundle-SymbolicName: org.eclipse.egit.ui.test;singleton:=true Fragment-Host: org.eclipse.egit.ui -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.apache.log4j;bundle-version="[1.0.0,2.0.0)", org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", @@ -15,24 +15,24 @@ Require-Bundle: org.apache.log4j;bundle-version="[1.0.0,2.0.0)", org.eclipse.ui;bundle-version="[3.108.0,4.0.0)", org.hamcrest;bundle-version="[1.1.0,2.0.0)", org.eclipse.jdt.launching;bundle-version="[3.8.100,4.0.0)", - org.eclipse.egit.core.junit;bundle-version="[5.6.1,5.7.0)" + org.eclipse.egit.core.junit;bundle-version="[5.7.0,5.8.0)" Import-Package: net.bytebuddy;version="[1.7.9,2.0.0)", org.eclipse.core.net.proxy;bundle-version="[1.1.0,2.0.0)", - org.eclipse.egit.gitflow;version="[5.6.1,5.7.0)", - org.eclipse.egit.gitflow.op;version="[5.6.1,5.7.0)", - org.eclipse.egit.gitflow.ui;version="[5.6.1,5.7.0)", - org.eclipse.egit.gitflow.ui.internal;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)", - org.eclipse.jgit.junit;version="[5.6.1,5.7.0)", - org.eclipse.jgit.junit.http;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport.resolver;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)", + org.eclipse.egit.gitflow;version="[5.7.0,5.8.0)", + org.eclipse.egit.gitflow.op;version="[5.7.0,5.8.0)", + org.eclipse.egit.gitflow.ui;version="[5.7.0,5.8.0)", + org.eclipse.egit.gitflow.ui.internal;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)", + org.eclipse.jgit.junit;version="[5.7.0,5.8.0)", + org.eclipse.jgit.junit.http;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport.resolver;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)", org.eclipse.swt.widgets, org.eclipse.swtbot.eclipse.finder, org.eclipse.swtbot.eclipse.finder.waits, diff --git a/org.eclipse.egit.ui.test/pom.xml b/org.eclipse.egit.ui.test/pom.xml index 455c4b2a38..7feb82e4e9 100644 --- a/org.eclipse.egit.ui.test/pom.xml +++ b/org.eclipse.egit.ui.test/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.ui.test</artifactId> diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/actions/StashesMenuTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/actions/StashesMenuTest.java index 1cab418ed5..544c6f4a7a 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/actions/StashesMenuTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/internal/actions/StashesMenuTest.java @@ -15,6 +15,8 @@ import static org.junit.Assert.assertTrue; import java.text.MessageFormat; +import org.eclipse.egit.core.test.TestUtils; +import org.eclipse.egit.ui.JobFamilies; import org.eclipse.egit.ui.common.LocalRepositoryTestCase; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.test.ContextMenuHelper; @@ -66,6 +68,8 @@ public class StashesMenuTest extends LocalRepositoryTestCase { enterMessageText.setText(stashMessage); createDialog.bot().button(UIText.StashCreateCommand_ButtonOK).click(); + TestUtils.waitForJobs(5000, JobFamilies.STASH); + assertEquals(originalContent, getTestFileContent()); ContextMenuHelper.clickContextMenu(selectProject(), "Team", STASHES, @@ -81,6 +85,8 @@ public class StashesMenuTest extends LocalRepositoryTestCase { util.getPluginLocalizedValue("StashApplyCommand.label")) .click(); + TestUtils.waitForJobs(5000, JobFamilies.STASH); + assertEquals(modifiedContent, getTestFileContent()); } diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewBranchHandlingTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewBranchHandlingTest.java index 27c32d70bc..7e181a2c07 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewBranchHandlingTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewBranchHandlingTest.java @@ -86,6 +86,11 @@ public class GitRepositoriesViewBranchHandlingTest extends setVerboseBranchMode(false); repositoryFile = createProjectAndCommitToRepository(); remoteRepositoryFile = createRemoteRepository(repositoryFile); + // Create one more branch on HEAD^1 + try (Git git = new Git(lookupRepository(remoteRepositoryFile))) { + git.branchCreate().setName("initial").setStartPoint("HEAD^1") + .call(); + } // now let's clone the remote repository final URIish uri = new URIish(remoteRepositoryFile.getPath()); final File workdir = new File(getTestDirectory(), "Cloned"); @@ -233,7 +238,9 @@ public class GitRepositoriesViewBranchHandlingTest extends item = TestUtil.expandAndWait(myRepoViewUtil.getRemoteBranchesItem(tree, clonedRepositoryFile)); children = item.getNodes(); - assertEquals("Wrong number of children", 2, children.size()); + assertEquals("Wrong number of children", 3, children.size()); + assertTrue("Missing remote branch", + children.contains("origin/initial")); assertTrue("Missing remote branch", children.contains("origin/master")); assertTrue("Missing remote branch", children.contains("origin/stable")); item.getNode("origin/stable").select(); @@ -270,7 +277,7 @@ public class GitRepositoriesViewBranchHandlingTest extends item = TestUtil.expandAndWait(myRepoViewUtil.getRemoteBranchesItem(tree, clonedRepositoryFile)); List<String> children = item.getNodes(); - assertEquals("Wrong number of remote children", 2, children.size()); + assertEquals("Wrong number of remote children", 3, children.size()); item.getNode("origin/stable").select(); ContextMenuHelper.clickContextMenuSync(tree, @@ -537,4 +544,52 @@ public class GitRepositoriesViewBranchHandlingTest extends .getNode(UIText.BranchPropertySource_RebaseDescriptor); assertEquals("true", rebaseItem.cell(1)); } + + @Test + public void testBranchConfigurationDecoration() throws Exception { + SWTBotView view = getOrOpenView(); + + SWTBotTreeItem repoItem = myRepoViewUtil.getRootItem(view.bot().tree(), + clonedRepositoryFile); + TestUtil.waitForDecorations(); + String label = repoItem.getText(); + assertTrue("Expected branch decoration to be present: " + label, + label.contains("[master]")); + SWTBotTreeItem localItem = myRepoViewUtil + .getLocalBranchesItem(view.bot().tree(), clonedRepositoryFile); + TestUtil.expandAndWait(localItem).getNode("master").select(); + ContextMenuHelper.clickContextMenu(view.bot().tree(), + myUtil.getPluginLocalizedValue("ConfigurBranchCommand.label")); + + SWTBotShell configureBranchDialog = bot.shell( + UIText.BranchConfigurationDialog_BranchConfigurationTitle); + configureBranchDialog.bot() + .comboBoxWithLabel( + UIText.BranchConfigurationDialog_UpstreamBranchLabel) + .setSelection(0); + // add a listener to wait for the configuration changed event + final AtomicBoolean changed = new AtomicBoolean(); + ConfigChangedListener listener = new ConfigChangedListener() { + @Override + public void onConfigChanged(ConfigChangedEvent event) { + changed.set(true); + } + }; + ListenerHandle handle = lookupRepository(clonedRepositoryFile) + .getConfig().addChangeListener(listener); + // only now click ok + configureBranchDialog.bot() + .button(UIText.BranchConfigurationDialog_ButtonOK).click(); + bot.waitUntil(Conditions.shellCloses(configureBranchDialog)); + // cleanup behind ourselves + handle.remove(); + assertTrue("Expected a ConfigChangeEvent", changed.get()); + TestUtil.waitForJobs(100, 5000); + TestUtil.waitForDecorations(); + repoItem = myRepoViewUtil.getRootItem(view.bot().tree(), + clonedRepositoryFile); + label = repoItem.getText(); + assertTrue("Expected branch decoration to be updated: " + label, + label.contains("[master \u21911]")); + } } diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTestUtils.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTestUtils.java index 5190cf918b..9e95b5207e 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTestUtils.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTestUtils.java @@ -44,7 +44,7 @@ public class GitRepositoriesViewTestUtils { @Override public void run() { - providerRef.set(new RepositoryTreeNodeLabelProvider()); + providerRef.set(new RepositoryTreeNodeLabelProvider(true)); } }); diff --git a/org.eclipse.egit.ui/META-INF/MANIFEST.MF b/org.eclipse.egit.ui/META-INF/MANIFEST.MF index ed601659c2..9a9f008f66 100644 --- a/org.eclipse.egit.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.egit.ui/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Automatic-Module-Name: org.eclipse.egit.ui Bundle-SymbolicName: org.eclipse.egit.ui;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Activator: org.eclipse.egit.ui.Activator Bundle-Vendor: %Bundle-Vendor Bundle-Localization: plugin @@ -37,93 +37,93 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)", Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Service-Component: OSGI-INF/org.eclipse.egit.ui.internal.clone.GitCloneDropAdapter.xml -Import-Package: org.eclipse.egit.core;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.attributes;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.gerrit;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.indexdiff;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.job;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.rebase;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.storage;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.internal.util;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.op;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.project;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.securestorage;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.synchronize;version="[5.6.1,5.7.0)", - org.eclipse.egit.core.synchronize.dto;version="[5.6.1,5.7.0)", - org.eclipse.jgit.annotations;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api;version="[5.6.1,5.7.0)", - org.eclipse.jgit.api.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.attributes;version="[5.6.1,5.7.0)", - org.eclipse.jgit.blame;version="[5.6.1,5.7.0)", - org.eclipse.jgit.diff;version="[5.6.1,5.7.0)", - org.eclipse.jgit.dircache;version="[5.6.1,5.7.0)", - org.eclipse.jgit.errors;version="[5.6.1,5.7.0)", - org.eclipse.jgit.events;version="[5.6.1,5.7.0)", - org.eclipse.jgit.lib;version="[5.6.1,5.7.0)", - org.eclipse.jgit.merge;version="[5.6.1,5.7.0)", - org.eclipse.jgit.notes;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revplot;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.revwalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.storage.file;version="[5.6.1,5.7.0)", - org.eclipse.jgit.submodule;version="[5.6.1,5.7.0)", - org.eclipse.jgit.transport;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk;version="[5.6.1,5.7.0)", - org.eclipse.jgit.treewalk.filter;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util;version="[5.6.1,5.7.0)", - org.eclipse.jgit.util.io;version="[5.6.1,5.7.0)" -Export-Package: org.eclipse.egit.ui;version="5.6.1";x-friends:="org.eclipse.egit.mylyn.ui,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal;version="5.6.1";x-friends:="org.eclipse.egit.import,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal.actions;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.blame;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.branch;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal.clean;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.clone;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.commands;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.commands.shared;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.commit;version="5.6.1";x-friends:="org.eclipse.egit.mylyn.ui,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal.commit.command;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.components;version="5.6.1";x-friends:="org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal.credentials;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.decorators;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.dialogs;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.expressions;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.factories;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.fetch;version="5.6.1";x-friends:="org.eclipse.mylyn.github.ui", - org.eclipse.egit.ui.internal.gerrit;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.groups;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.handler;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.history;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.history.command;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.importing;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.jobs;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.merge;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.operations;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.patch;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.preferences;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.provisional.wizards;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.pull;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.push;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.rebase;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.reflog;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.reflog.command;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.repository;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.repository.tree;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.repository.tree.command;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.repository.tree.filter;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.resources;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.revision;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.search;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.selection;version="5.6.1";x-friends:="org.eclipse.egit.gitflow.ui", - org.eclipse.egit.ui.internal.sharing;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.staging;version="5.6.1";x-friends:="org.eclipse.egit.mylyn.ui", - org.eclipse.egit.ui.internal.stash;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.submodule;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.synchronize;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.synchronize.action;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.synchronize.compare;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.synchronize.mapping;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.synchronize.model;version="5.6.1";x-friends:="org.eclipse.egit.mylyn.ui", - org.eclipse.egit.ui.internal.trace;version="5.6.1";x-internal:=true, - org.eclipse.egit.ui.internal.variables;version="5.6.1";x-internal:=true +Import-Package: org.eclipse.egit.core;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.attributes;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.gerrit;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.indexdiff;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.job;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.rebase;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.storage;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.internal.util;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.op;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.project;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.securestorage;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.synchronize;version="[5.7.0,5.8.0)", + org.eclipse.egit.core.synchronize.dto;version="[5.7.0,5.8.0)", + org.eclipse.jgit.annotations;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api;version="[5.7.0,5.8.0)", + org.eclipse.jgit.api.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.attributes;version="[5.7.0,5.8.0)", + org.eclipse.jgit.blame;version="[5.7.0,5.8.0)", + org.eclipse.jgit.diff;version="[5.7.0,5.8.0)", + org.eclipse.jgit.dircache;version="[5.7.0,5.8.0)", + org.eclipse.jgit.errors;version="[5.7.0,5.8.0)", + org.eclipse.jgit.events;version="[5.7.0,5.8.0)", + org.eclipse.jgit.lib;version="[5.7.0,5.8.0)", + org.eclipse.jgit.merge;version="[5.7.0,5.8.0)", + org.eclipse.jgit.notes;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revplot;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.revwalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.storage.file;version="[5.7.0,5.8.0)", + org.eclipse.jgit.submodule;version="[5.7.0,5.8.0)", + org.eclipse.jgit.transport;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk;version="[5.7.0,5.8.0)", + org.eclipse.jgit.treewalk.filter;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util;version="[5.7.0,5.8.0)", + org.eclipse.jgit.util.io;version="[5.7.0,5.8.0)" +Export-Package: org.eclipse.egit.ui;version="5.7.0";x-friends:="org.eclipse.egit.mylyn.ui,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal;version="5.7.0";x-friends:="org.eclipse.egit.import,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal.actions;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.blame;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.branch;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal.clean;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.clone;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.commands;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.commands.shared;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.commit;version="5.7.0";x-friends:="org.eclipse.egit.mylyn.ui,org.eclipse.egit.gitflow.ui,org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal.commit.command;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.components;version="5.7.0";x-friends:="org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal.credentials;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.decorators;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.dialogs;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.expressions;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.factories;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.fetch;version="5.7.0";x-friends:="org.eclipse.mylyn.github.ui", + org.eclipse.egit.ui.internal.gerrit;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.groups;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.handler;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.history;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.history.command;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.importing;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.jobs;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.merge;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.operations;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.patch;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.preferences;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.provisional.wizards;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.pull;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.push;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.rebase;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.reflog;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.reflog.command;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.repository;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.repository.tree;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.repository.tree.command;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.repository.tree.filter;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.resources;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.revision;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.search;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.selection;version="5.7.0";x-friends:="org.eclipse.egit.gitflow.ui", + org.eclipse.egit.ui.internal.sharing;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.staging;version="5.7.0";x-friends:="org.eclipse.egit.mylyn.ui", + org.eclipse.egit.ui.internal.stash;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.submodule;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.synchronize;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.synchronize.action;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.synchronize.compare;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.synchronize.mapping;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.synchronize.model;version="5.7.0";x-friends:="org.eclipse.egit.mylyn.ui", + org.eclipse.egit.ui.internal.trace;version="5.7.0";x-internal:=true, + org.eclipse.egit.ui.internal.variables;version="5.7.0";x-internal:=true diff --git a/org.eclipse.egit.ui/pom.xml b/org.eclipse.egit.ui/pom.xml index 6624040f30..e10b96227a 100644 --- a/org.eclipse.egit.ui/pom.xml +++ b/org.eclipse.egit.ui/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit.ui</artifactId> diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchOperationUI.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchOperationUI.java index 14e4f3e986..02e4ee1355 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchOperationUI.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchOperationUI.java @@ -428,7 +428,8 @@ public class BranchOperationUI { public static void handleSingleRepositoryCheckoutOperationResult( Repository repository, CheckoutResult result, String target) { - if (result.getStatus() == CheckoutResult.Status.CONFLICTS) { + switch (result.getStatus()) { + case CONFLICTS: PlatformUI.getWorkbench().getDisplay().asyncExec(() -> { Shell shell = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell(); @@ -440,7 +441,8 @@ public class BranchOperationUI { .start(); } }); - } else if (result.getStatus() == CheckoutResult.Status.NONDELETED) { + break; + case NONDELETED: // double-check if the files are still there boolean show = false; List<String> pathList = result.getUndeletedList(); @@ -459,7 +461,11 @@ public class BranchOperationUI { new NonDeletedFilesDialog(shell, repository, result.getUndeletedList()).open(); }); - } else { + break; + case OK: + return; + case NOT_TRIED: + case ERROR: String repoName = Activator.getDefault().getRepositoryUtil() .getRepositoryName(repository); String message = NLS.bind( diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java index 61aa9b1c52..7d00a36870 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java @@ -100,7 +100,7 @@ class BranchProjectTracker { public ProjectTrackerMemento snapshot() { ProjectTrackerMemento memento = new ProjectTrackerMemento(); Stream.of(repositories).map(this::takeSnapshot).filter(Objects::nonNull) - .forEach(x -> memento.addSnapshot(x)); + .forEach(memento::addSnapshot); return memento; } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/ProjectTrackerPreferenceHelper.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/ProjectTrackerPreferenceHelper.java index 5726f520d2..303bc901a0 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/ProjectTrackerPreferenceHelper.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/ProjectTrackerPreferenceHelper.java @@ -126,7 +126,7 @@ class ProjectTrackerPreferenceHelper { return Collections.emptyList(); } List<String> projectPaths = Stream.of(children) - .map(child -> child.getTextData()) + .map(IMemento::getTextData) .filter(x -> !StringUtils.isEmptyOrNull(x)) .collect(Collectors.toList()); return projectPaths; diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java index 1f57fb4d80..2a4ce48bdf 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java @@ -179,7 +179,7 @@ public class GitSelectRepositoryPage extends WizardPage { return false; } }); - tv.setLabelProvider(new RepositoryTreeNodeLabelProvider()); + tv.setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); tv.addSelectionChangedListener(new ISelectionChangedListener() { @Override diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectWizardPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectWizardPage.java index fce34ef522..4b998c1172 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectWizardPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectWizardPage.java @@ -200,7 +200,7 @@ public class GitSelectWizardPage extends WizardPage { tv.setContentProvider(cp); GridDataFactory.fillDefaults().grab(true, true).hint(SWT.DEFAULT, 200) .applyTo(tv.getTree()); - tv.setLabelProvider(new RepositoryTreeNodeLabelProvider()); + tv.setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); tv.addSelectionChangedListener(new ISelectionChangedListener() { @Override diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java index b570a2ff27..4257154c68 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java @@ -76,7 +76,7 @@ public class DiffEditorOutlinePage extends NestedContentOutlinePage { viewer.setLabelProvider(new DiffLabelProvider()); viewer.addDoubleClickListener( event -> openFolder(event.getSelection())); - viewer.addOpenListener(event -> fireOpenEvent(event)); + viewer.addOpenListener(this::fireOpenEvent); if (input != null) { viewer.setInput(input); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/MultiPageEditorContentOutlinePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/MultiPageEditorContentOutlinePage.java index 26c1ec4f34..584ba2e742 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/MultiPageEditorContentOutlinePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/MultiPageEditorContentOutlinePage.java @@ -53,8 +53,7 @@ public class MultiPageEditorContentOutlinePage extends ContentOutlinePage { private final MultiPageEditorPart editorPart; - private final ISelectionChangedListener globalSelectionListener = // - event -> fireSelectionChangedEvent(event); + private final ISelectionChangedListener globalSelectionListener = this::fireSelectionChangedEvent; private final CopyOnWriteArrayList<ISelectionChangedListener> selectionListeners = new CopyOnWriteArrayList<>(); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/RevertHandler.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/RevertHandler.java index fa19de2ea4..bef0f7f68b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/RevertHandler.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/command/RevertHandler.java @@ -61,7 +61,8 @@ public class RevertHandler extends CommitCommandHandler { } List<RevCommit> commits = repoCommits.stream() - .map(c -> c.getRevCommit()).collect(Collectors.toList()); + .map(IRepositoryCommit::getRevCommit) + .collect(Collectors.toList()); try { if (!CommitUtil.areCommitsInCurrentBranch(commits, repo)) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratorRepositoryStateCache.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratorRepositoryStateCache.java index f21ce60c5a..1f17e4a23b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratorRepositoryStateCache.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratorRepositoryStateCache.java @@ -13,6 +13,7 @@ package org.eclipse.egit.ui.internal.decorators; import java.io.File; import java.io.IOException; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.eclipse.egit.core.UnitOfWork; @@ -41,6 +42,8 @@ public class DecoratorRepositoryStateCache extends RepositoryStateCache { private final Map<File, String> branchStateLabels = new ConcurrentHashMap<>(); + private final Set<File> branchStatesToClear = ConcurrentHashMap.newKeySet(); + private DecoratorRepositoryStateCache() { // No public instantiation } @@ -56,13 +59,26 @@ public class DecoratorRepositoryStateCache extends RepositoryStateCache { super.clear(); branchLabels.clear(); branchStateLabels.clear(); + branchStatesToClear.clear(); } @Override public void clear(Repository repository) { super.clear(repository); - branchLabels.remove(repository.getDirectory()); - branchStateLabels.remove(repository.getDirectory()); + File gitDir = repository.getDirectory(); + branchLabels.remove(gitDir); + branchStateLabels.remove(gitDir); + branchStatesToClear.remove(gitDir); + } + + /** + * Clears the cache for {@link #getBranchStatus(Repository)}. + * + * @param repository + * to clear the state of + */ + public void resetBranchState(Repository repository) { + branchStatesToClear.add(repository.getDirectory()); } /** @@ -127,8 +143,13 @@ public class DecoratorRepositoryStateCache extends RepositoryStateCache { * @return the label, or {@code null}Â if none */ public String getBranchStatus(Repository repository) { + File gitDir = repository.getDirectory(); + // Clear if needed + if (branchStatesToClear.remove(gitDir)) { + branchStateLabels.remove(gitDir); + } String label = branchStateLabels - .computeIfAbsent(repository.getDirectory(), dir -> { + .computeIfAbsent(gitDir, dir -> { return UnitOfWork.get(repository, () -> { String branchName = getFullBranchName(repository); if (branchName == null) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDecorator.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDecorator.java index f3619767b8..30e0ab6183 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDecorator.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDecorator.java @@ -22,6 +22,9 @@ import org.eclipse.egit.ui.internal.UIText; import org.eclipse.jface.viewers.ILightweightLabelDecorator; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProviderChangedEvent; +import org.eclipse.jgit.events.ConfigChangedEvent; +import org.eclipse.jgit.events.ConfigChangedListener; +import org.eclipse.jgit.events.ListenerHandle; import org.eclipse.jgit.lib.Repository; import org.eclipse.ui.PlatformUI; @@ -31,13 +34,16 @@ import org.eclipse.ui.PlatformUI; * changes. */ public abstract class GitDecorator extends LabelProvider - implements ILightweightLabelDecorator, IndexDiffChangedListener { + implements ILightweightLabelDecorator, IndexDiffChangedListener, + ConfigChangedListener { private Object lock = new Object(); /** Protected by lock's monitor. */ private EventJob eventJob; + private ListenerHandle configListener; + /** * Creates a new {@link GitDecorator}, registering to receive notifications * about index changes. @@ -45,12 +51,17 @@ public abstract class GitDecorator extends LabelProvider public GitDecorator() { org.eclipse.egit.core.Activator.getDefault().getIndexDiffCache() .addIndexDiffChangedListener(this); + configListener = org.eclipse.egit.core.Activator.getDefault() + .getRepositoryCache().getGlobalListenerList() + .addConfigChangedListener(this); } @Override public void dispose() { org.eclipse.egit.core.Activator.getDefault().getIndexDiffCache() .removeIndexDiffChangedListener(this); + configListener.remove(); + configListener = null; Job job; synchronized (lock) { job = eventJob; @@ -82,6 +93,14 @@ public abstract class GitDecorator extends LabelProvider @Override public void indexDiffChanged(Repository repository, IndexDiffData indexDiffData) { + DecoratorRepositoryStateCache.INSTANCE.clear(repository); + postLabelEvent(); + } + + @Override + public void onConfigChanged(ConfigChangedEvent event) { + DecoratorRepositoryStateCache.INSTANCE + .resetBranchState(event.getRepository()); postLabelEvent(); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitLightweightDecorator.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitLightweightDecorator.java index d8425772b4..d4665ee841 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitLightweightDecorator.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitLightweightDecorator.java @@ -54,7 +54,6 @@ import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jgit.annotations.NonNull; -import org.eclipse.jgit.lib.Repository; import org.eclipse.osgi.util.NLS; import org.eclipse.osgi.util.TextProcessor; import org.eclipse.swt.SWT; @@ -687,14 +686,6 @@ public class GitLightweightDecorator extends GitDecorator } } - @Override - public void indexDiffChanged(Repository repository, - IndexDiffData indexDiffData) { - // clear calculated repo data - DecoratorRepositoryStateCache.INSTANCE.clear(repository); - super.indexDiffChanged(repository, indexDiffData); - } - // -------- Helper methods -------- private static IResource getResource(Object actElement) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java index 28c89de994..e70688062e 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java @@ -32,8 +32,8 @@ import org.eclipse.egit.ui.internal.repository.tree.BranchHierarchyNode; import org.eclipse.egit.ui.internal.repository.tree.LocalNode; import org.eclipse.egit.ui.internal.repository.tree.RefNode; import org.eclipse.egit.ui.internal.repository.tree.RemoteTrackingNode; -import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeSorter; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode; +import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeSorter; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeType; import org.eclipse.egit.ui.internal.repository.tree.TagNode; import org.eclipse.egit.ui.internal.repository.tree.TagsNode; @@ -297,7 +297,7 @@ public abstract class AbstractBranchSelectionDialog extends TitleAreaDialog { selectionModel | SWT.BORDER, filter, true); branchTree = tree.getViewer(); branchTree.setUseHashlookup(true); - branchTree.setLabelProvider(new RepositoryTreeNodeLabelProvider()); + branchTree.setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); branchTree.setContentProvider(new RepositoriesViewContentProvider()); ColumnViewerToolTipSupport.enableFor(branchTree); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractConfigureRemoteDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractConfigureRemoteDialog.java index d5fd2fca2d..591511213b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractConfigureRemoteDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractConfigureRemoteDialog.java @@ -347,11 +347,11 @@ public abstract class AbstractConfigureRemoteDialog } }; IAction deleteRefSpecAction = ActionUtils.createGlobalAction( - ActionFactory.DELETE, () -> doDeleteRefSpecs()); + ActionFactory.DELETE, this::doDeleteRefSpecs); IAction copyRefSpecAction = ActionUtils - .createGlobalAction(ActionFactory.COPY, () -> doCopy()); + .createGlobalAction(ActionFactory.COPY, this::doCopy); IAction pasteRefSpecAction = ActionUtils - .createGlobalAction(ActionFactory.PASTE, () -> doPaste()); + .createGlobalAction(ActionFactory.PASTE, this::doPaste); IAction selectAllRefSpecsAction = ActionUtils.createGlobalAction( ActionFactory.SELECT_ALL, () -> { @@ -539,7 +539,7 @@ public abstract class AbstractConfigureRemoteDialog case DRY_RUN: try { new ProgressMonitorDialog(getShell()).run(true, true, - (monitor) -> dryRun(monitor)); + this::dryRun); } catch (InvocationTargetException e) { Activator.showError(e.getMessage(), e); } catch (InterruptedException e1) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/HyperlinkSourceViewer.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/HyperlinkSourceViewer.java index 741dde1fa6..3646a9513f 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/HyperlinkSourceViewer.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/HyperlinkSourceViewer.java @@ -119,12 +119,10 @@ public class HyperlinkSourceViewer extends ProjectionViewer { super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles); setColors(); - editorPropertyChangeListener = event -> handleEditorPreferencesChange( - event); + editorPropertyChangeListener = this::handleEditorPreferencesChange; EditorsUI.getPreferenceStore() .addPropertyChangeListener(editorPropertyChangeListener); - jFacePropertyChangeListener = event -> handleJFacePreferencesChange( - event); + jFacePropertyChangeListener = this::handleJFacePreferencesChange; JFacePreferences.getPreferenceStore() .addPropertyChangeListener(jFacePropertyChangeListener); } @@ -140,7 +138,7 @@ public class HyperlinkSourceViewer extends ProjectionViewer { String property = event.getProperty(); if (preferenceKeysForEnablement.contains(property)) { resetHyperlinkDetectors(); - async(() -> refresh()); + async(this::refresh); } else if (preferenceKeysForActivation.contains(property)) { resetHyperlinkDetectors(); } @@ -231,7 +229,7 @@ public class HyperlinkSourceViewer extends ProjectionViewer { case AbstractTextEditor.PREFERENCE_COLOR_SELECTION_FOREGROUND_SYSTEM_DEFAULT: case AbstractTextEditor.PREFERENCE_COLOR_SELECTION_BACKGROUND: case AbstractTextEditor.PREFERENCE_COLOR_SELECTION_BACKGROUND_SYSTEM_DEFAULT: - async(() -> setColors()); + async(this::setColors); break; default: break; @@ -248,7 +246,7 @@ public class HyperlinkSourceViewer extends ProjectionViewer { */ protected void handleJFacePreferencesChange(PropertyChangeEvent event) { if (JFacePreferences.HYPERLINK_COLOR.equals(event.getProperty())) { - async(() -> invalidateTextPresentation()); + async(this::invalidateTextPresentation); } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/SpellcheckableMessageArea.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/SpellcheckableMessageArea.java index d490c4cbcb..4419f59b93 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/SpellcheckableMessageArea.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/SpellcheckableMessageArea.java @@ -507,7 +507,7 @@ public class SpellcheckableMessageArea extends Composite { List<AnnotationPreference> annotationPreferences = new MarkerAnnotationPreferences() .getAnnotationPreferences(); annotationPreferences.iterator() - .forEachRemaining(p -> support.setAnnotationPreference(p)); + .forEachRemaining(support::setAnnotationPreference); support.install(EditorsUI.getPreferenceStore()); return support; diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchDestinationPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchDestinationPage.java index 6dcf3cfe25..7a2066781b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchDestinationPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchDestinationPage.java @@ -96,7 +96,7 @@ public class FetchDestinationPage extends WizardPage { GridDataFactory.fillDefaults().grab(true, false).applyTo( destinationText); UIUtils.addRefContentProposalToText(sourceText, repository, - () -> getRemoteRefs(), true); + this::getRemoteRefs, true); force = new Button(main, SWT.CHECK); force.setText(UIText.FetchDestinationPage_ForceCheckbox); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchSourcePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchSourcePage.java index 6668b63f8a..f4e053338d 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchSourcePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchSourcePage.java @@ -91,7 +91,7 @@ public class FetchSourcePage extends WizardPage { }); GridDataFactory.fillDefaults().grab(true, false).applyTo(sourceText); UIUtils.addRefContentProposalToText(sourceText, repository, - () -> getRemoteRefs(), true); + this::getRemoteRefs, true); checkPage(); setControl(main); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java index 9ce8aa9e52..dd7123c7c1 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java @@ -361,7 +361,7 @@ public class CommitFileDiffViewer extends TableViewer { copy.setEnabled(true); if ((rawTable.getStyle() & SWT.MULTI) != 0) { selectAll = ActionUtils.createGlobalAction(ActionFactory.SELECT_ALL, - () -> doSelectAll()); + this::doSelectAll); selectAll.setEnabled(true); ActionUtils.setGlobalActions(rawTable, copy, selectAll); mgr.add(selectAll); @@ -792,6 +792,8 @@ public class CommitFileDiffViewer extends TableViewer { public UpdateJob(String name, FileDiffLoader loadJob) { super(name); this.loadJob = loadJob; + setUser(false); // always triggered by FileDiffLoader + setSystem(true); } @Override @@ -909,7 +911,7 @@ public class CommitFileDiffViewer extends TableViewer { FileDiff first = diffs.iterator().next(); Repository repository = first.getRepository(); String revision = first.getCommit().getName(); - List<String> paths = diffs.stream().map(d -> d.getNewPath()) + List<String> paths = diffs.stream().map(FileDiff::getNewPath) .collect(Collectors.toList()); return new DiscardChangesOperation(repository, paths, revision); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitGraphTable.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitGraphTable.java index c6ff9f1368..dd02cad274 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitGraphTable.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitGraphTable.java @@ -277,7 +277,7 @@ class CommitGraphTable { }); copy = ActionUtils.createGlobalAction(ActionFactory.COPY, - () -> doCopy()); + this::doCopy); copy.setText(UIText.CommitGraphTable_CopyCommitIdLabel); copy.setImageDescriptor(UIIcons.ELCL16_ID); table.setUseHashlookup(true); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitSelectionDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitSelectionDialog.java index 4422e3346c..ca0a4ae4cc 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitSelectionDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitSelectionDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2011, 2013 Mathias Kinzler <mathias.kinzler@sap.com> and others. + * Copyright (C) 2011, 2019 Mathias Kinzler <mathias.kinzler@sap.com> and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -7,6 +7,9 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Simon Muschel <smuschel@gmx.de> - Bug 345466 *******************************************************************************/ package org.eclipse.egit.ui.internal.history; @@ -58,6 +61,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; @@ -80,6 +84,10 @@ public class CommitSelectionDialog extends TitleAreaDialog { private ObjectId commitId; + private SearchBar searchBar; + + private Label statusLabel; + /** * @param parentShell * @param repository @@ -113,12 +121,18 @@ public class CommitSelectionDialog extends TitleAreaDialog { @Override protected Control createDialogArea(Composite parent) { + Composite searchBarParent = new Composite(parent, SWT.NONE); + searchBarParent.setLayout(new GridLayout(1, false)); + GridDataFactory.fillDefaults().grab(true, false) + .applyTo(searchBarParent); + Composite main = new Composite(parent, SWT.NONE); main.setLayout(new GridLayout(1, false)); GridDataFactory.fillDefaults().grab(true, true).applyTo(main); final ResourceManager resources = new LocalResourceManager( JFaceResources.getResources()); UIUtils.hookDisposal(main, resources); + // Table never shows e-mail addresses because it might get rather wide. table = new CommitGraphTable(main, null, resources, false); table.getTableView().addSelectionChangedListener( @@ -146,6 +160,26 @@ public class CommitSelectionDialog extends TitleAreaDialog { 400).applyTo(table.getControl()); allCommits = new SWTCommitList(resources); table.getControl().addDisposeListener(e -> allCommits.clear()); + + searchBar = new SearchBar( + CommitSelectionDialog.class.getName() + ".searchBar", table) {//$NON-NLS-1$ + + @Override + protected void showStatus(FindToolbar originator, String text) { + statusLabel.setText(text); + statusLabel.requestLayout(); + } + + }; + searchBar.fill(searchBarParent); + + Composite statusLine = new Composite(parent, SWT.NONE); + statusLine.setLayout(new GridLayout()); + GridDataFactory.fillDefaults().grab(true, true).applyTo(statusLine); + statusLabel = new Label(statusLine, SWT.NONE); + GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER) + .grab(false, false).applyTo(statusLabel); + return main; } @@ -201,7 +235,8 @@ public class CommitSelectionDialog extends TitleAreaDialog { if (monitor.isCanceled()) { throw new InterruptedException(); } - getShell().getDisplay().asyncExec(() -> updateUi()); + getShell().getDisplay().asyncExec( + CommitSelectionDialog.this::updateUi); } catch (IOException e) { throw new InvocationTargetException(e); } finally { @@ -229,8 +264,25 @@ public class CommitSelectionDialog extends TitleAreaDialog { Integer.valueOf(allCommits.size()), GitLabels.getPlainShortLabel(repository))); setMessage(UIText.CommitSelectionDialog_DialogMessage); - table.setInput(highlightFlag, allCommits, allCommits - .toArray(new SWTCommit[0]), null, true); + SWTCommit[] allCommitsArray = allCommits.toArray(new SWTCommit[0]); + table.setInput(highlightFlag, allCommits, allCommitsArray, null, true); + searchBar.setInput(new ICommitsProvider() { + + @Override + public Object getSearchContext() { + return null; + } + + @Override + public SWTCommit[] getCommits() { + return allCommitsArray; + } + + @Override + public RevFlag getHighlight() { + return highlightFlag; + } + }); } private void markStartAllRefs(RevWalk walk, Set<Ref> refs) diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbar.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbar.java index 8cb65db38d..283e94849b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbar.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbar.java @@ -5,6 +5,7 @@ * Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com> * Copyright (C) 2013, Robin Stocker <robin@nibor.org> * Copyright (C) 2016, Thomas Wolf <thomas.wolf@paranor.ch> + * Copyright (C) 2019, Simon Muschel <smuschel@gmx.de> * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -219,7 +220,8 @@ public class FindToolbar extends Composite { patternField = new Text(this, SWT.SEARCH | SWT.ICON_CANCEL | SWT.ICON_SEARCH); - GridData findTextData = new GridData(SWT.LEFT, SWT.TOP, true, false); + GridData findTextData = new GridData(SWT.FILL, SWT.TOP, true, + false); findTextData.minimumWidth = 150; patternField.setLayoutData(findTextData); patternField.setMessage(UIText.HistoryPage_findbar_find_msg); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java index 12eb010acf..c480f2f092 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java @@ -11,6 +11,7 @@ * Copyright (C) 2015-2019 Thomas Wolf <thomas.wolf@paranor.ch> * Copyright (C) 2015-2017, Stefan Dirix <sdirix@eclipsesource.com> * Copyright (C) 2019, Tim Neumann <Tim.Neumann@advantest.com> + * Copyright (C) 2019, Simon Muschel <smuschel@gmx.de> * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -69,7 +70,6 @@ import org.eclipse.egit.ui.internal.commit.FocusTracker; import org.eclipse.egit.ui.internal.components.DropDownMenuAction; import org.eclipse.egit.ui.internal.components.RepositoryMenuUtil.RepositoryToolbarAction; import org.eclipse.egit.ui.internal.fetch.FetchHeadChangedEvent; -import org.eclipse.egit.ui.internal.history.FindToolbar.StatusListener; import org.eclipse.egit.ui.internal.history.RefFilterHelper.RefFilter; import org.eclipse.egit.ui.internal.repository.tree.AdditionalRefNode; import org.eclipse.egit.ui.internal.repository.tree.FileNode; @@ -84,12 +84,10 @@ import org.eclipse.egit.ui.internal.selection.SelectionUtils; import org.eclipse.egit.ui.internal.trace.GitTraceLocation; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.ControlContribution; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IContributionManager; import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; @@ -309,12 +307,12 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, if (IAction.ENABLED.equals(e.getProperty())) { boolean previousEnablement = isEnabled(); childEnablement = FilterAction.this.actions.stream() - .anyMatch(act -> act.isEnabled()); + .anyMatch(IAction::isEnabled); boolean currentEnablement = isEnabled(); if (currentEnablement != previousEnablement) { IAction currentChild = currentEnablement ? FilterAction.this.actions.stream() - .filter(act -> act.isChecked()) + .filter(IAction::isChecked) .findFirst().orElse(null) : null; if (currentChild == null) { @@ -1389,248 +1387,6 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, } } - private interface ICommitsProvider { - - Object getSearchContext(); - - SWTCommit[] getCommits(); - - RevFlag getHighlight(); - } - - private static class SearchBar extends ControlContribution { - - private IActionBars bars; - - private FindToolbar toolbar; - - private Object searchContext; - - private String lastText; - - private ObjectId lastObjectId; - - private Object lastSearchContext; - - private ICommitsProvider provider; - - private boolean wasVisible = false; - - private final CommitGraphTable graph; - - private final IAction openCloseToggle; - - /** - * "Go to next/previous" from the {@link FindToolbar} sends - * {@link SWT#Selection} events with the chosen {@link RevCommit} as - * data. - */ - private final Listener selectionListener = new Listener() { - - @Override - public void handleEvent(Event evt) { - final RevCommit commit = (RevCommit) evt.data; - lastObjectId = commit.getId(); - graph.selectCommit(commit); - } - }; - - /** - * Listener to close the search bar on ESC. (Ctrl/Cmd-F is already - * handled via global retarget action.) - */ - private final KeyListener keyListener = new KeyAdapter() { - - @Override - public void keyPressed(KeyEvent e) { - int key = SWTKeySupport.convertEventToUnmodifiedAccelerator(e); - if (key == SWT.ESC) { - setVisible(false); - e.doit = false; - } - } - }; - - /** - * Listener to display status messages from the asynchronous find. (Is - * called in the UI thread.) - */ - private final StatusListener statusListener = new StatusListener() { - - @Override - public void setMessage(FindToolbar originator, String text) { - IStatusLineManager status = bars.getStatusLineManager(); - if (status != null) { - status.setMessage(text); - } - } - }; - - /** - * Listener to ensure that the history view is fully activated when the - * user clicks into the search bar's text widget. This makes sure our - * status manager gets activated and thus shows the status messages. We - * don't get a focus event when the user clicks in the field; and - * fiddling with the focus in a FocusListener could get hairy anyway. - */ - private final Listener mouseListener = new Listener() { - - private boolean hasFocus; - - private boolean hadFocusOnMouseDown; - - @Override - public void handleEvent(Event e) { - switch (e.type) { - case SWT.FocusIn: - toolbar.getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - hasFocus = true; - } - }); - - break; - case SWT.FocusOut: - hasFocus = false; - break; - case SWT.MouseDown: - hadFocusOnMouseDown = hasFocus; - break; - case SWT.MouseUp: - if (!hadFocusOnMouseDown) { - graph.getControl().setFocus(); - toolbar.setFocus(); - } - break; - default: - break; - } - } - }; - - public SearchBar(String id, CommitGraphTable graph, - IAction openCloseAction, IActionBars bars) { - super(id); - super.setVisible(false); - this.graph = graph; - this.openCloseToggle = openCloseAction; - this.bars = bars; - } - - private void beforeHide() { - lastText = toolbar.getText(); - lastSearchContext = searchContext; - statusListener.setMessage(toolbar, ""); //$NON-NLS-1$ - // It will be disposed by the IToolBarManager - toolbar = null; - openCloseToggle.setChecked(false); - wasVisible = false; - } - - private void workAroundBug551067(boolean visible) { - // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=551067 - IContributionManager parent = getParent(); - if (parent instanceof SubToolBarManager) { - SubToolBarManager subManager = (SubToolBarManager) parent; - IContributionItem item = subManager.getParent().find(getId()); - if (item instanceof SubContributionItem) { - item.setVisible(visible && subManager.isVisible()); - } - } - } - - @Override - public void setVisible(boolean visible) { - if (visible != isVisible()) { - if (!visible) { - beforeHide(); - } - super.setVisible(visible); - workAroundBug551067(visible); - // Update the toolbar. Will dispose our FindToolbar widget on - // hide, and will create a new one (through createControl()) - // on show. It'll also reposition the toolbar, if needed. - // Note: just doing bars.getToolBarManager().update(true); - // messes up big time (doesn't resize or re-position). - bars.updateActionBars(); - if (visible && toolbar != null) { - openCloseToggle.setChecked(true); - // If the toolbar was moved below the tabs, we now have - // the wrong background. It disappears when one clicks - // elsewhere. Looks like an inactive selection... No - // way found to fix this but this ugly focus juggling: - graph.getControl().setFocus(); - toolbar.setFocus(); - } else if (!visible && !graph.getControl().isDisposed()) { - graph.getControl().setFocus(); - } - } - } - - @Override - public boolean isDynamic() { - // We toggle our own visibility - return true; - } - - @Override - protected Control createControl(Composite parent) { - toolbar = new FindToolbar(parent); - toolbar.setBackground(null); - toolbar.addKeyListener(keyListener); - toolbar.addListener(SWT.FocusIn, mouseListener); - toolbar.addListener(SWT.FocusOut, mouseListener); - toolbar.addListener(SWT.MouseDown, mouseListener); - toolbar.addListener(SWT.MouseUp, mouseListener); - toolbar.addListener(SWT.Modify, - (e) -> lastText = toolbar.getText()); - toolbar.addStatusListener(statusListener); - toolbar.addSelectionListener(selectionListener); - boolean hasInput = provider != null; - if (hasInput) { - setInput(provider); - } - if (lastText != null) { - if (lastSearchContext != null - && lastSearchContext.equals(searchContext)) { - toolbar.setPreselect(lastObjectId); - } - toolbar.setText(lastText, hasInput); - } - lastSearchContext = null; - lastObjectId = null; - if (wasVisible) { - return toolbar; - } - wasVisible = true; - // This fixes the wrong background when Eclipse starts up with the - // search bar visible. - toolbar.getDisplay().asyncExec(new Runnable() { - - @Override - public void run() { - if (toolbar != null && !toolbar.isDisposed()) { - // See setVisible() above. Somehow, we need this, too. - graph.getControl().setFocus(); - toolbar.setFocus(); - } - } - }); - return toolbar; - } - - public void setInput(ICommitsProvider provider) { - this.provider = provider; - if (toolbar != null) { - searchContext = provider.getSearchContext(); - toolbar.setInput(provider.getHighlight(), - graph.getTableView().getTable(), provider.getCommits()); - } - } - - } - @Override public void createControl(final Composite parent) { trace = GitTraceLocation.HISTORYVIEW.isActive(); @@ -1729,7 +1485,8 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, .addPreferenceChangeListener(prefListener); IToolBarManager manager = getSite().getActionBars().getToolBarManager(); - searchBar = new SearchBar(GitHistoryPage.class.getName() + ".searchBar", //$NON-NLS-1$ + searchBar = new HistorySearchBar( + GitHistoryPage.class.getName() + ".searchBar", //$NON-NLS-1$ graph, actions.findAction, getSite().getActionBars()); manager.prependToGroup("org.eclipse.team.ui.historyView", searchBar); //$NON-NLS-1$ getSite().getActionBars().updateActionBars(); @@ -3302,4 +3059,173 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, public String getRenamedPath(String path, ObjectId commit) { return renameTracker.getPath(commit, path); } + + private static final class HistorySearchBar extends SearchBar { + + private IActionBars bars; + + private final IAction openCloseToggle; + + private boolean wasVisible = false; + + /** + * Listener to close the search bar on ESC. (Ctrl/Cmd-F is already + * handled via global retarget action.) + */ + private final KeyListener keyListener = new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + int key = SWTKeySupport.convertEventToUnmodifiedAccelerator(e); + if (key == SWT.ESC) { + setVisible(false); + e.doit = false; + } + } + }; + + /** + * Listener to ensure that the history view is fully activated when the + * user clicks into the search bar's text widget. This makes sure our + * status manager gets activated and thus shows the status messages. We + * don't get a focus event when the user clicks in the field; and + * fiddling with the focus in a FocusListener could get hairy anyway. + */ + private final Listener mouseListener = new Listener() { + + private boolean hasFocus; + + private boolean hadFocusOnMouseDown; + + @Override + public void handleEvent(Event e) { + switch (e.type) { + case SWT.FocusIn: + toolbar.getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + hasFocus = true; + } + }); + + break; + case SWT.FocusOut: + hasFocus = false; + break; + case SWT.MouseDown: + hadFocusOnMouseDown = hasFocus; + break; + case SWT.MouseUp: + if (!hadFocusOnMouseDown) { + graph.getControl().setFocus(); + toolbar.setFocus(); + } + break; + default: + break; + } + } + }; + + public HistorySearchBar(String id, CommitGraphTable graph, + IAction openCloseAction, IActionBars bars) { + super(id, graph); + this.bars = bars; + this.openCloseToggle = openCloseAction; + super.setVisible(false); + } + + @Override + public boolean isDynamic() { + // We toggle our own visibility + return true; + } + + @Override + protected FindToolbar createControl(Composite parent) { + FindToolbar createdControl = super.createControl(parent); + toolbar.addKeyListener(keyListener); + toolbar.addListener(SWT.FocusIn, mouseListener); + toolbar.addListener(SWT.FocusOut, mouseListener); + toolbar.addListener(SWT.MouseDown, mouseListener); + toolbar.addListener(SWT.MouseUp, mouseListener); + + if (wasVisible) { + return toolbar; + } + wasVisible = true; + // This fixes the wrong background when Eclipse starts up with the + // search bar visible. + toolbar.getDisplay().asyncExec(new Runnable() { + + @Override + public void run() { + if (toolbar != null && !toolbar.isDisposed()) { + // See setVisible() above. Somehow, we need this, too. + graph.getControl().setFocus(); + toolbar.setFocus(); + } + } + }); + return createdControl; + } + + private void beforeHide() { + lastText = toolbar.getText(); + lastSearchContext = searchContext; + showStatus(toolbar, ""); //$NON-NLS-1$ + // It will be disposed by the IToolBarManager + toolbar = null; + openCloseToggle.setChecked(false); + wasVisible = false; + } + + private void workAroundBug551067(boolean visible) { + // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=551067 + IContributionManager parent = getParent(); + if (parent instanceof SubToolBarManager) { + SubToolBarManager subManager = (SubToolBarManager) parent; + IContributionItem item = subManager.getParent().find(getId()); + if (item instanceof SubContributionItem) { + item.setVisible(visible && subManager.isVisible()); + } + } + } + + @Override + public void setVisible(boolean visible) { + if (visible != isVisible()) { + if (!visible) { + beforeHide(); + } + super.setVisible(visible); + workAroundBug551067(visible); + // Update the toolbar. Will dispose our FindToolbar widget on + // hide, and will create a new one (through createControl()) + // on show. It'll also reposition the toolbar, if needed. + // Note: just doing bars.getToolBarManager().update(true); + // messes up big time (doesn't resize or re-position). + if (bars != null) { + bars.updateActionBars(); + } + if (visible && toolbar != null) { + openCloseToggle.setChecked(true); + // If the toolbar was moved below the tabs, we now have + // the wrong background. It disappears when one clicks + // elsewhere. Looks like an inactive selection... No + // way found to fix this but this ugly focus juggling: + graph.getControl().setFocus(); + toolbar.setFocus(); + } else if (!visible && !graph.getControl().isDisposed()) { + graph.getControl().setFocus(); + } + } + } + + @Override + protected void showStatus(FindToolbar originator, String text) { + bars.getStatusLineManager().setMessage(text); + } + + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryRefFilterConfigurationDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryRefFilterConfigurationDialog.java index 171774f3d6..ac8eb6944d 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryRefFilterConfigurationDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryRefFilterConfigurationDialog.java @@ -74,6 +74,9 @@ import org.eclipse.ui.preferences.ViewSettingsDialog; public class GitHistoryRefFilterConfigurationDialog extends ViewSettingsDialog { + /** Standard binding for the rename command. */ + private static final int EDITOR_ACTIVATION_KEY = SWT.F2; + private static final String FILTER_COLUMN_NAME = "filter"; //$NON-NLS-1$ private static final String NEW_FILTER_INITIAL_STRING = "refs/*"; //$NON-NLS-1$ @@ -280,11 +283,14 @@ public class GitHistoryRefFilterConfigurationDialog boolean isLeftDoubleClick = event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION && ((MouseEvent) event.sourceEvent).button == 1; return singleSelect && (isLeftDoubleClick - || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC); + || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC + || event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED + && event.keyCode == EDITOR_ACTIVATION_KEY); } }; TableViewerEditor.create(configsTable, focusCellManager, - editorActivation, ColumnViewerEditor.DEFAULT); + editorActivation, ColumnViewerEditor.DEFAULT + | ColumnViewerEditor.KEYBOARD_ACTIVATION); editor = new TextCellEditor(configsTable.getTable()) { @@ -339,7 +345,8 @@ public class GitHistoryRefFilterConfigurationDialog @Override public void beforeEditorActivated( ColumnViewerEditorActivationEvent event) { - // Nothing + configsTable.reveal(configsTable + .getStructuredSelection().getFirstElement()); } @Override diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/ICommitsProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/ICommitsProvider.java new file mode 100644 index 0000000000..726557ae55 --- /dev/null +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/ICommitsProvider.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (C) 2019 Simon Muschel <smuschel@gmx.de> and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Simon Muschel <smuschel@gmx.de> - Bug 345466 + *******************************************************************************/ +package org.eclipse.egit.ui.internal.history; + +import org.eclipse.jgit.revwalk.RevFlag; + +/** + * Provides relevant information to {@link SearchBar} implementations. + */ +interface ICommitsProvider { + + /** + * Returns the search context the {@link SearchBar} is using. An example on + * how to use the context can be found in {@link GitHistoryPage}. + * + * @return the current search context + */ + Object getSearchContext(); + + /** + * Returns a list of commits to be searched. + * + * @return array of commits + */ + SWTCommit[] getCommits(); + + /** + * Returns the RevFlag to be used as highlight marker for matching commits. + * + * @return the highlight RevFlag + */ + RevFlag getHighlight(); +}
\ No newline at end of file diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/RefFilterHelper.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/RefFilterHelper.java index 913178dac8..6617b748c5 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/RefFilterHelper.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/RefFilterHelper.java @@ -430,7 +430,7 @@ public class RefFilterHelper { RefDatabase db = this.repository.getRefDatabase(); Set<Ref> result = new LinkedHashSet<>(); Set<RefFilter> selectedFilters = getRefFilters().stream() - .filter(f -> f.isSelected()) + .filter(RefFilter::isSelected) .collect(Collectors.toCollection(LinkedHashSet::new)); for (Ref ref : db.getRefs()) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/SearchBar.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/SearchBar.java new file mode 100644 index 0000000000..724765bf2c --- /dev/null +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/SearchBar.java @@ -0,0 +1,129 @@ +/******************************************************************************* + * Copyright (C) 2019 Simon Muschel <smuschel@gmx.de> and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Simon Muschel <smuschel@gmx.de> - Bug 345466 + *******************************************************************************/ +package org.eclipse.egit.ui.internal.history; + +import org.eclipse.jface.action.ControlContribution; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevFlag; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; + +/** + * A reusable SearchBar component that may be used in combination with + * {@link CommitGraphTable} to search in a given list of commits. + * + * @see GitHistoryPage + * @see CommitSelectionDialog + */ +abstract class SearchBar extends ControlContribution { + + protected FindToolbar toolbar; + + protected Object searchContext; + + protected String lastText; + + private ObjectId lastObjectId; + + protected Object lastSearchContext; + + private ICommitsProvider provider; + + protected final CommitGraphTable graph; + + /** + * "Go to next/previous" from the {@link FindToolbar} sends + * {@link SWT#Selection} events with the chosen {@link RevCommit} as data. + */ + private final Listener selectionListener = new Listener() { + + @Override + public void handleEvent(Event evt) { + final RevCommit commit = (RevCommit) evt.data; + lastObjectId = commit.getId(); + graph.selectCommit(commit); + } + }; + + /** + * Creates the SearchBar. + * + * @param id + * the contribution item id + * @param graph + * the UI element displaying the commits + */ + public SearchBar(String id, CommitGraphTable graph) { + super(id); + this.graph = graph; + } + + @Override + protected FindToolbar createControl(Composite parent) { + toolbar = new FindToolbar(parent); + toolbar.setBackground(null); + toolbar.addListener(SWT.Modify, (e) -> lastText = toolbar.getText()); + toolbar.addSelectionListener(selectionListener); + toolbar.addStatusListener(this::showStatus); + boolean hasInput = provider != null; + if (hasInput) { + setInput(provider); + } + if (lastText != null) { + if (lastSearchContext != null + && lastSearchContext.equals(searchContext)) { + toolbar.setPreselect(lastObjectId); + } + toolbar.setText(lastText, hasInput); + } + lastSearchContext = null; + lastObjectId = null; + + GridDataFactory.fillDefaults().grab(true, false).applyTo(toolbar); + return toolbar; + } + + /** + * Set the {@link ICommitsProvider} implementation that provides a search + * context for the SearchBar. The list of commits and the {@link RevFlag} + * are passed on to the {@link FindToolbar}. + * + * @param provider + */ + public void setInput(ICommitsProvider provider) { + this.provider = provider; + if (toolbar != null) { + searchContext = provider.getSearchContext(); + toolbar.setInput(provider.getHighlight(), + graph.getTableView().getTable(), provider.getCommits()); + } + } + + /** + * The {@link FindToolbar} notifies clients of status changes (e.g. number + * of matching commits) by calling this method. A sub-class can provide a + * way to display these status messages to the user. + * + * @param originator + * the toolbar object that produced the new message + * @param text + * the new status message to be displayed + */ + abstract protected void showStatus(FindToolbar originator, String text); + +} diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushTagsPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushTagsPage.java index 7269f001d3..4943dbadf5 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushTagsPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushTagsPage.java @@ -130,7 +130,7 @@ public class PushTagsPage extends WizardPage { TagsNode tagsNode = new TagsNode(null, repository); ContentProvider contentProvider = new ContentProvider(tagsNode); treeViewer.setContentProvider(contentProvider); - treeViewer.setLabelProvider(new RepositoryTreeNodeLabelProvider()); + treeViewer.setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); treeViewer.setComparator(new ViewerComparator( CommonUtils.STRING_ASCENDING_COMPARATOR)); treeViewer.setInput(tagsNode); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java index 0f369640ec..db37776db6 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java @@ -426,7 +426,7 @@ public class ReflogView extends ViewPart implements RefsChangedListener, IShowIn selectionChangedListener, site); site.setSelectionProvider(new RepositorySelectionProvider( - refLogTreeViewer, () -> getRepository())); + refLogTreeViewer, this::getRepository)); addRefsChangedListener = org.eclipse.egit.core.Activator.getDefault() .getRepositoryCache().getGlobalListenerList() @@ -436,7 +436,7 @@ public class ReflogView extends ViewPart implements RefsChangedListener, IShowIn IToolBarManager toolbar = getViewSite().getActionBars() .getToolBarManager(); switchRepositoriesAction = new RepositoryToolbarAction(false, - () -> getRepository(), + this::getRepository, repo -> reactOnSelection(new StructuredSelection(repo))); toolbar.add(switchRepositoriesAction); getViewSite().getActionBars().updateActionBars(); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/DropAdapterAssistant.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/DropAdapterAssistant.java index d792f04a68..9fc5039811 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/DropAdapterAssistant.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/DropAdapterAssistant.java @@ -160,7 +160,7 @@ public class DropAdapterAssistant extends CommonDropAdapterAssistant { private boolean onlyRepositoryNodesSelected(ISelection selection) { if (selection instanceof IStructuredSelection) { return ((List<?>) ((IStructuredSelection) selection).toList()) - .stream().allMatch(e -> isRegularRepository(e)); + .stream().allMatch(this::isRegularRepository); } return false; } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RefCache.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RefCache.java new file mode 100644 index 0000000000..174c931e8b --- /dev/null +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RefCache.java @@ -0,0 +1,192 @@ +/******************************************************************************* + * Copyright (c) 2019 Thomas Wolf <thomas.wolf@paranor.ch> + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.egit.ui.internal.repository; + +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.WeakHashMap; + +import org.eclipse.jgit.events.ListenerHandle; +import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.RefDatabase; +import org.eclipse.jgit.lib.Repository; + +/** + * A global cache of {@link Ref}s per {@link Repository}. Used to avoid that the + * content provider or decorator has to re-read the info all the time from the + * repository, which would be relatively expensive and incur file system + * accesses at least for checking file time stamps. + * <p> + * The cache is refreshed on {@link org.eclipse.jgit.events.RefsChangedEvent + * RefsChangedEvents} and {@link org.eclipse.jgit.events.IndexChangedEvent + * IndexChangedEvents}. + * </p> + */ +final class RefCache { + + private static final RefCache INSTANCE = new RefCache(); + + private final Map<Repository, Map<String, Ref>> branchRefs = new WeakHashMap<>(); + + private final Map<Repository, List<Ref>> additionalRefs = new WeakHashMap<>(); + + private final Map<Repository, ListenerHandle> refsChangedListeners = new WeakHashMap<>(); + + private final Map<Repository, ListenerHandle> indexChangedListeners = new WeakHashMap<>(); + + private long refCount; + + private RefCache() { + // Singleton + } + + protected synchronized boolean isLoaded(Repository repository) { + return branchRefs.get(repository) != null; + } + + protected synchronized Map<String, Ref> byPrefix(Repository repository, + String prefix) throws IOException { + Map<String, Ref> allRefs = branchRefs.get(repository); + if (allRefs == null) { + allRefs = repository.getRefDatabase().getRefs(RefDatabase.ALL); + branchRefs.put(repository, allRefs); + if (refsChangedListeners.get(repository) == null) { + refsChangedListeners.put(repository, repository + .getListenerList().addRefsChangedListener(event -> { + synchronized (this) { + branchRefs.remove(event.getRepository()); + additionalRefs.remove(event.getRepository()); + } + })); + } + } + if (prefix.equals(RefDatabase.ALL)) { + return allRefs; + } + Map<String, Ref> filtered = new HashMap<>(); + for (Map.Entry<String, Ref> entry : allRefs.entrySet()) { + if (entry.getKey().startsWith(prefix)) { + filtered.put(entry.getKey(), entry.getValue()); + } + } + return filtered; + } + + protected synchronized List<Ref> additional(Repository repository) + throws IOException { + List<Ref> result = additionalRefs.get(repository); + if (result == null) { + result = repository.getRefDatabase().getAdditionalRefs(); + additionalRefs.put(repository, result); + if (indexChangedListeners.get(repository) == null) { + indexChangedListeners.put(repository, repository + .getListenerList().addIndexChangedListener(event -> { + synchronized (this) { + additionalRefs.remove(event.getRepository()); + } + })); + } + } + return result; + } + + protected synchronized void unregister() { + if (refCount == 0) { + return; + } + if (--refCount == 0) { + refsChangedListeners.values().forEach(ListenerHandle::remove); + refsChangedListeners.clear(); + indexChangedListeners.values().forEach(ListenerHandle::remove); + indexChangedListeners.clear(); + branchRefs.clear(); + } + } + + private synchronized Cache register() { + refCount++; + return new CacheAccessor(); + } + + public static Cache get() { + return INSTANCE.register(); + } + + static interface Cache { + + boolean isLoaded(Repository repository); + + default Ref exact(Repository repository, String fullName) + throws IOException { + return byPrefix(repository, RefDatabase.ALL).get(fullName); + } + + Map<String, Ref> byPrefix(Repository repository, String prefix) + throws IOException; + + List<Ref> additional(Repository repository) throws IOException; + + default Ref findAdditional(Repository repository, String name) + throws IOException { + Ref ref = exact(repository, name); + if (ref != null) { + return ref; + } + for (Ref additional : additional(repository)) { + if (additional.getName().equals(name)) { + return additional; + } + } + return null; + + } + + void dispose(); + } + + static class CacheAccessor implements Cache { + + private boolean disposed; + + @Override + public boolean isLoaded(Repository repository) { + return INSTANCE.isLoaded(repository); + } + + @Override + public Map<String, Ref> byPrefix(Repository repository, String prefix) + throws IOException { + if (disposed) { + return Collections.emptyMap(); + } + return INSTANCE.byPrefix(repository, prefix); + } + + @Override + public List<Ref> additional(Repository repository) throws IOException { + if (disposed) { + return Collections.emptyList(); + } + return INSTANCE.additional(repository); + } + + @Override + public void dispose() { + if (!disposed) { + disposed = true; + INSTANCE.unregister(); + } + } + } +} diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java index a094e5dc2a..ae1ccdb532 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java @@ -30,20 +30,18 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.commands.IStateListener; import org.eclipse.core.commands.State; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Adapters; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; import org.eclipse.egit.core.AdapterUtils; import org.eclipse.egit.core.RepositoryCache; import org.eclipse.egit.core.RepositoryUtil; @@ -96,11 +94,10 @@ import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnViewerEditor; import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent; import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy; -import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; @@ -111,13 +108,11 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.jface.viewers.TreeViewerEditor; +import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.jface.window.Window; -import org.eclipse.jgit.events.ConfigChangedEvent; import org.eclipse.jgit.events.ConfigChangedListener; -import org.eclipse.jgit.events.IndexChangedEvent; import org.eclipse.jgit.events.IndexChangedListener; import org.eclipse.jgit.events.ListenerHandle; -import org.eclipse.jgit.events.RefsChangedEvent; import org.eclipse.jgit.events.RefsChangedListener; import org.eclipse.jgit.lib.Repository; import org.eclipse.osgi.util.NLS; @@ -171,7 +166,7 @@ import org.eclipse.ui.views.properties.PropertySheet; import org.eclipse.ui.views.properties.PropertySheetPage; /** - * The "Git Repositories View" + * The "Git Repositories View". */ public class RepositoriesView extends CommonNavigator implements IShowInSource, IShowInTargetList { @@ -197,20 +192,22 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, private static final String SINGLE_REPO_CONTEXT_ID = VIEW_ID + ".SingleRepository"; //$NON-NLS-1$ - private static final long DEFAULT_REFRESH_DELAY = 1000; + /** + * Delay between refreshes in milliseconds. Used to avoid overwhelming the + * viewer with refreshes when many change events arrive from repositories. + */ + private static final long DEFAULT_REFRESH_DELAY = 300L; private final Set<Repository> repositories = new HashSet<>(); - private final RefsChangedListener myRefsChangedListener; + private final RefsChangedListener myRefsChangedListener = event -> scheduleRefresh(); - private final IndexChangedListener myIndexChangedListener; + private final IndexChangedListener myIndexChangedListener = event -> scheduleRefresh(); - private final ConfigChangedListener myConfigChangeListener; + private final ConfigChangedListener myConfigChangeListener = event -> scheduleRefresh(); private final List<ListenerHandle> myListeners = new LinkedList<>(); - private Job scheduledJob; - private RefreshUiJob refreshUiJob; private final RepositoryUtil repositoryUtil; @@ -221,10 +218,6 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, private StackLayout layout; - private volatile long lastInputChange = 0L; - - private volatile long lastInputUpdate = -1L; - private State reactOnSelection; private IWorkbenchPart lastSelectionPart; @@ -282,7 +275,11 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, private final IStateListener stateChangeListener = (state, oldValue) -> refresh(); - private final IPreferenceChangeListener configurationListener; + private final IPreferenceChangeListener configurationListener = event -> { + if (RepositoryUtil.PREFS_DIRECTORIES_REL.equals(event.getKey())) { + refresh(); + } + }; private IContextActivation renameContext; @@ -298,39 +295,6 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, repositoryUtil = Activator.getDefault().getRepositoryUtil(); repositoryCache = org.eclipse.egit.core.Activator.getDefault() .getRepositoryCache(); - - configurationListener = new IPreferenceChangeListener() { - @Override - public void preferenceChange(PreferenceChangeEvent event) { - if (RepositoryUtil.PREFS_DIRECTORIES_REL - .equals(event.getKey())) { - lastInputChange = System.currentTimeMillis(); - scheduleRefresh(DEFAULT_REFRESH_DELAY, null); - } - } - }; - - myRefsChangedListener = new RefsChangedListener() { - @Override - public void onRefsChanged(RefsChangedEvent e) { - scheduleRefresh(DEFAULT_REFRESH_DELAY, null); - } - }; - - myIndexChangedListener = new IndexChangedListener() { - @Override - public void onIndexChanged(IndexChangedEvent event) { - scheduleRefresh(DEFAULT_REFRESH_DELAY, null); - - } - }; - - myConfigChangeListener = new ConfigChangedListener() { - @Override - public void onConfigChanged(ConfigChangedEvent event) { - scheduleRefresh(DEFAULT_REFRESH_DELAY, null); - } - }; } /** @@ -765,7 +729,7 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, private void initRepositoriesAndListeners() { synchronized (repositories) { repositories.clear(); - unregisterRepositoryListener(); + unregisterRepositoryListeners(); Set<File> dirs = new HashSet<>(); // listen for repository changes for (String dir : repositoryUtil.getConfiguredRepositories()) { @@ -815,11 +779,6 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, if (branchHierarchy != null) { branchHierarchy.removeListener(stateChangeListener); } - // make sure to cancel the refresh job - if (this.scheduledJob != null) { - this.scheduledJob.cancel(); - this.scheduledJob = null; - } refreshUiJob.cancel(); repositoryUtil.getPreferences().removePreferenceChangeListener( @@ -828,8 +787,7 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, ISelectionService srv = CommonUtils.getService(getSite(), ISelectionService.class); srv.removePostSelectionListener(selectionChangedListener); - // remove RepositoryChangedListener - unregisterRepositoryListener(); + unregisterRepositoryListeners(); repositories.clear(); super.dispose(); @@ -937,7 +895,7 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, * Refresh Repositories View */ public void refresh() { - lastInputUpdate = -1L; + initRepositoriesAndListeners(); scheduleRefresh(0, null); } @@ -946,62 +904,17 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, GitTraceLocation.REPOSITORIESVIEW.getLocation(), message); } - private synchronized void scheduleRefresh(long delay, Runnable uiTask) { - if (GitTraceLocation.REPOSITORIESVIEW.isActive()) { - trace("Entering scheduleRefresh()"); //$NON-NLS-1$ - } - - refreshUiJob.cancel(); - refreshUiJob.uiTask = uiTask; - - if (scheduledJob != null) { - schedule(scheduledJob, delay); - return; - } - - Job job = new Job("Refreshing Git Repositories data") { //$NON-NLS-1$ - - @Override - protected IStatus run(IProgressMonitor monitor) { - final CommonViewer tv = getCommonViewer(); - if (!UIUtils.isUsable(tv)) { - return Status.CANCEL_STATUS; - } - final boolean trace = GitTraceLocation.REPOSITORIESVIEW - .isActive(); - final boolean needsNewInput = lastInputChange > lastInputUpdate; - if (trace) { - trace("Running the update, new input required: " //$NON-NLS-1$ - + (lastInputChange > lastInputUpdate)); - } - lastInputUpdate = System.currentTimeMillis(); - if (needsNewInput) { - initRepositoriesAndListeners(); - } - - refreshUiJob.needsNewInput = needsNewInput; - refreshUiJob.schedule(); - if (monitor.isCanceled()) { - return Status.CANCEL_STATUS; - } - return Status.OK_STATUS; - } - - @Override - public boolean belongsTo(Object family) { - return JobFamilies.REPO_VIEW_REFRESH.equals(family); - } + private void scheduleRefresh() { + scheduleRefresh(DEFAULT_REFRESH_DELAY, null); + } - }; - job.setSystem(true); - job.setUser(false); - schedule(job, delay); - scheduledJob = job; + private synchronized void scheduleRefresh(long delay, Runnable uiTask) { + refreshUiJob.uiTask.compareAndSet(null, uiTask); + refreshUiJob.schedule(delay); } class RefreshUiJob extends WorkbenchJob { - volatile boolean needsNewInput; - volatile Runnable uiTask; + final AtomicReference<Runnable> uiTask = new AtomicReference<>(); RefreshUiJob() { super(PlatformUI.getWorkbench().getDisplay(), @@ -1028,16 +941,8 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, return Status.CANCEL_STATUS; } - if (needsNewInput) { - // keep expansion state and selection so that we can - // restore the tree after update - Object[] expanded = tv.getExpandedElements(); - tv.setInput(ResourcesPlugin.getWorkspace().getRoot()); - tv.setExpandedElements(expanded); - afterRefresh(tv); - } else { - tv.refresh(true); - } + tv.refresh(true); + if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } @@ -1053,15 +958,12 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, ((PropertySheetPage) page).refresh(); } } - if (monitor.isCanceled()) { - return Status.CANCEL_STATUS; - } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } - Runnable task = uiTask; + Runnable task = uiTask.getAndSet(null); if (task != null) { task.run(); } @@ -1074,20 +976,8 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, } } - private void schedule(Job job, long delay) { - IWorkbenchSiteProgressService service = CommonUtils.getService(getSite(), IWorkbenchSiteProgressService.class); - - if (GitTraceLocation.REPOSITORIESVIEW.isActive()) { - GitTraceLocation.getTrace().trace( - GitTraceLocation.REPOSITORIESVIEW.getLocation(), - "Scheduling refresh job"); //$NON-NLS-1$ - } - service.schedule(job, delay); - } - - private void unregisterRepositoryListener() { - for (ListenerHandle lh : myListeners) - lh.remove(); + private void unregisterRepositoryListeners() { + myListeners.forEach(ListenerHandle::remove); myListeners.clear(); } @@ -1389,9 +1279,9 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, } /** - * Customized {@link CommonViewer} that doesn't create a decorating label - * provider -- our label provider already does so, and we don't want double - * decorations. + * Customized {@link CommonViewer} that switches back to the empty area if + * the tree view becomes empty, and that adds additional information at the + * end of labels. */ private class RepositoriesCommonViewer extends CommonViewer { @@ -1403,12 +1293,8 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, @Override protected void init() { super.init(); - IBaseLabelProvider labelProvider = getLabelProvider(); - // Our label provider already decorates. Avoid double decorating. - if (labelProvider instanceof DecoratingStyledCellLabelProvider) { - ((DecoratingStyledCellLabelProvider) labelProvider) - .setLabelDecorator(null); - } + setLabelProvider(new PathAddingLabelProvider( + getNavigatorContentService().createCommonLabelProvider())); } @Override @@ -1423,4 +1309,18 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, afterRefresh(this); } } + + @SuppressWarnings("restriction") + private static class PathAddingLabelProvider extends + org.eclipse.ui.internal.navigator.NavigatorDecoratingLabelProvider { + + public PathAddingLabelProvider(ILabelProvider commonLabelProvider) { + super(commonLabelProvider); + } + + @Override + public void update(ViewerCell cell) { + RepositoryTreeNodeLabelProvider.update(cell, super::update); + } + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java index 370184a089..a6435f9604 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java @@ -29,14 +29,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.EnumSet; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; -import java.util.WeakHashMap; import java.util.stream.Collectors; import org.eclipse.core.commands.State; @@ -81,9 +79,6 @@ import org.eclipse.egit.ui.internal.repository.tree.command.ToggleBranchHierarch import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.events.ListenerHandle; -import org.eclipse.jgit.events.RefsChangedEvent; -import org.eclipse.jgit.events.RefsChangedListener; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; @@ -117,9 +112,7 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider { private boolean showRepositoryGroups = false; - private Map<Repository, Map<String, Ref>> branchRefs = new WeakHashMap<>(); - - private Map<Repository, ListenerHandle> refsChangedListeners = new WeakHashMap<>(); + private RefCache.Cache refCache = RefCache.get(); /** * Constructs a new {@link RepositoriesViewContentProvider} that doesn't @@ -195,8 +188,7 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider { @Override public void dispose() { - refsChangedListeners.values().forEach(ListenerHandle::remove); - refsChangedListeners.clear(); + refCache.dispose(); } @Override @@ -242,7 +234,7 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider { refs.add(new AdditionalRefNode(node, repo, refEntry .getValue())); } - for (Ref r : repo.getRefDatabase().getAdditionalRefs()) { + for (Ref r : refCache.additional(repo)) { refs.add(new AdditionalRefNode(node, repo, r)); } if (showUnbornHead) { @@ -603,7 +595,7 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider { */ private boolean hasTagsChildren(Repository repo) { try { - if (branchRefs.get(repo) == null) { + if (!refCache.isLoaded(repo)) { WorkspaceJob job = new WorkspaceJob( UIText.RepositoriesViewContentProvider_ReadReferencesJob) { @@ -629,33 +621,9 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider { } } - private synchronized Map<String, Ref> getRefs(final Repository repo, final String prefix) throws IOException { - Map<String, Ref> allRefs = branchRefs.get(repo); - if (allRefs == null) { - allRefs = repo.getRefDatabase().getRefs(RefDatabase.ALL); - branchRefs.put(repo, allRefs); - if (refsChangedListeners.get(repo) == null) { - RefsChangedListener listener = new RefsChangedListener() { - @Override - public void onRefsChanged(RefsChangedEvent event) { - synchronized (RepositoriesViewContentProvider.this) { - branchRefs.remove(repo); - } - } - }; - refsChangedListeners.put(repo, repo.getListenerList() - .addRefsChangedListener(listener)); - } - } - if (prefix.equals(RefDatabase.ALL)) - return allRefs; - - Map<String, Ref> filtered = new HashMap<>(); - for (Map.Entry<String, Ref> entry : allRefs.entrySet()) { - if (entry.getKey().startsWith(prefix)) - filtered.put(entry.getKey(), entry.getValue()); - } - return filtered; + private Map<String, Ref> getRefs(final Repository repo, final String prefix) + throws IOException { + return refCache.byPrefix(repo, prefix); } /** diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeDecorator.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeDecorator.java index b2cea36918..289692f1a6 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeDecorator.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeDecorator.java @@ -15,6 +15,7 @@ package org.eclipse.egit.ui.internal.repository; import java.io.File; import java.io.IOException; +import java.text.MessageFormat; import java.util.Set; import org.eclipse.core.commands.IStateListener; @@ -28,6 +29,7 @@ import org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry; import org.eclipse.egit.core.internal.indexdiff.IndexDiffData; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.internal.CommonUtils; +import org.eclipse.egit.ui.internal.UIIcons; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.internal.decorators.DecoratorRepositoryStateCache; import org.eclipse.egit.ui.internal.decorators.GitDecorator; @@ -42,6 +44,7 @@ import org.eclipse.egit.ui.internal.repository.tree.TagNode; import org.eclipse.egit.ui.internal.repository.tree.command.ToggleBranchCommitCommand; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jgit.annotations.NonNull; +import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; @@ -74,6 +77,8 @@ public class RepositoryTreeNodeDecorator extends GitDecorator private boolean verboseBranchMode = false; + private final RefCache.Cache refCache = RefCache.get(); + /** * Constructs a repositories view label provider */ @@ -94,17 +99,11 @@ public class RepositoryTreeNodeDecorator extends GitDecorator @Override public void dispose() { verboseBranchModeState.removeListener(this); + refCache.dispose(); super.dispose(); } @Override - public void indexDiffChanged(Repository repository, - IndexDiffData indexDiffData) { - DecoratorRepositoryStateCache.INSTANCE.clear(repository); - super.indexDiffChanged(repository, indexDiffData); - } - - @Override public void handleStateChange(State state, Object oldValue) { try { boolean newValue = ((Boolean) state.getValue()) @@ -124,46 +123,150 @@ public class RepositoryTreeNodeDecorator extends GitDecorator Repository repository = node.getRepository(); if (repository != null) { UnitOfWork.execute(repository, - () -> decorateText(node, repository, decoration)); + () -> decorateNode(node, repository, decoration)); } else if (node.getType() == RepositoryTreeNodeType.REPOGROUP) { decorateRepositoryGroup(node, decoration); } } - private void decorateText(RepositoryTreeNode<?> node, + private void decorateNode(RepositoryTreeNode<?> node, @NonNull Repository repository, IDecoration decoration) { - boolean decorated = false; + try { + decorateText(node, repository, decoration); + decorateIcon(node, repository, decoration); + } catch (IOException e) { + Activator.logError(MessageFormat.format( + UIText.GitLabelProvider_UnableToRetrieveLabel, + node.toString()), e); + } + } + + private void decorateIcon(RepositoryTreeNode<?> node, + @NonNull Repository repository, IDecoration decoration) + throws IOException { + switch (node.getType()) { + case TAG: { + String branchName = DecoratorRepositoryStateCache.INSTANCE + .getFullBranchName(repository); + if (branchName == null) { + return; + } + // HEAD would be on the commit id to which the tag is pointing + if (branchName.equals(((TagNode) node).getCommitId())) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, + IDecoration.TOP_LEFT); + } + break; + } + case ADDITIONALREF: { + Ref ref = refCache.findAdditional(repository, + ((Ref) node.getObject()).getName()); + if (ref != null) { + decorateRefIcon(repository, ref, decoration); + } + break; + } + case REF: { + Ref ref = refCache.exact(repository, + ((Ref) node.getObject()).getName()); + if (ref != null) { + decorateRefIcon(repository, ref, decoration); + } + break; + } + default: + break; + } + } + + private void decorateRefIcon(@NonNull Repository repository, Ref ref, + IDecoration decoration) { + String branchName = DecoratorRepositoryStateCache.INSTANCE + .getFullBranchName(repository); + if (branchName == null) { + return; + } + String refName = ref.getName(); + Ref leaf = ref.getLeaf(); + + String compareString = null; + if (refName.startsWith(Constants.R_HEADS)) { + // local branch: HEAD would be on the branch + compareString = refName; + } else if (refName.startsWith(Constants.R_REMOTES)) { + // remote branch: branch name is object id in detached HEAD + // state + ObjectId objectId = leaf.getObjectId(); + if (objectId != null) { + String leafName = objectId.getName(); + if (leafName.equals(branchName)) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, + IDecoration.TOP_LEFT); + return; + } + } + } else if (refName.equals(Constants.HEAD)) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); + return; + } else { + String leafname = leaf.getName(); + if (leafname.startsWith(Constants.R_REFS) + && leafname.equals(branchName)) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, + IDecoration.TOP_LEFT); + return; + } + ObjectId objectId = leaf.getObjectId(); + if (objectId != null + && objectId.equals(DecoratorRepositoryStateCache.INSTANCE + .getHead(repository))) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, + IDecoration.TOP_LEFT); + } + // some other symbolic reference + return; + } + + if (branchName.equals(compareString)) { + decoration.addOverlay(UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); + } + } + + private void decorateText(RepositoryTreeNode<?> node, + @NonNull Repository repository, IDecoration decoration) + throws IOException { switch (node.getType()) { case REPO: - decorated = decorateRepository(node, repository, decoration); + decorateRepository(node, repository, decoration); break; case ADDITIONALREF: - decorated = decorateAdditionalRef((AdditionalRefNode) node, + decorateAdditionalRef((AdditionalRefNode) node, decoration); break; case REF: - decorated = decorateRef((RefNode) node, decoration); + decorateRef((RefNode) node, decoration); break; case TAG: - decorated = decorateTag((TagNode) node, decoration); + decorateTag((TagNode) node, decoration); break; case STASHED_COMMIT: - decorated = decorateStash((StashedCommitNode) node, decoration); + decorateStash((StashedCommitNode) node, decoration); break; case SUBMODULES: - decorated = decorateSubmodules(repository, decoration); + decorateSubmodules(repository, decoration); break; default: return; } - if (!decorated) { - ensureCorrectLabelCaching(decoration); - } } - private boolean decorateAdditionalRef(AdditionalRefNode node, - IDecoration decoration) { - Ref ref = node.getObject(); + private void decorateAdditionalRef(AdditionalRefNode node, + IDecoration decoration) throws IOException { + String name = node.getObject().getName(); + Ref ref = refCache.findAdditional(node.getRepository(), name); + if (ref == null) { + return; + } StringBuilder suffix = new StringBuilder(); if (ref.isSymbolic()) { suffix.append(OPEN_BRACKET).append(ref.getLeaf().getName()) @@ -171,7 +274,7 @@ public class RepositoryTreeNodeDecorator extends GitDecorator } ObjectId refId = ref.getObjectId(); suffix.append(' '); - RevCommit commit = getLatestCommit(node); + RevCommit commit = getLatestCommit(node.getRepository(), ref); if (commit != null) { suffix.append(abbreviate(commit)).append(' ') .append(commit.getShortMessage()); @@ -182,22 +285,25 @@ public class RepositoryTreeNodeDecorator extends GitDecorator UIText.RepositoriesViewLabelProvider_UnbornBranchText); } decoration.addSuffix(suffix.toString()); - return true; } - private boolean decorateRef(RefNode node, IDecoration decoration) { + private void decorateRef(RefNode node, IDecoration decoration) + throws IOException { if (verboseBranchMode) { - RevCommit latest = getLatestCommit(node); + Ref ref = refCache.exact(node.getRepository(), + node.getObject().getName()); + if (ref == null) { + return; + } + RevCommit latest = getLatestCommit(node.getRepository(), ref); if (latest != null) { decoration.addSuffix(" " + abbreviate(latest) + ' ' //$NON-NLS-1$ + latest.getShortMessage()); - return true; } } - return false; } - private boolean decorateRepository(RepositoryTreeNode<?> node, + private void decorateRepository(RepositoryTreeNode<?> node, @NonNull Repository repository, IDecoration decoration) { boolean isSubModule = node.getParent() != null && node.getParent() .getType() == RepositoryTreeNodeType.SUBMODULES; @@ -209,7 +315,7 @@ public class RepositoryTreeNodeDecorator extends GitDecorator Ref head = DecoratorRepositoryStateCache.INSTANCE .getHeadRef(repository); if (head == null) { - return false; + return; } suffix.append(OPEN_BRACKET); if (head.isSymbolic()) { @@ -231,7 +337,7 @@ public class RepositoryTreeNodeDecorator extends GitDecorator String branch = DecoratorRepositoryStateCache.INSTANCE .getCurrentBranchLabel(repository); if (branch == null) { - return false; + return; } suffix.append(OPEN_BRACKET); suffix.append(branch); @@ -250,7 +356,6 @@ public class RepositoryTreeNodeDecorator extends GitDecorator suffix.append(']'); } decoration.addSuffix(suffix.toString()); - return true; } private void decorateRepositoryGroup(RepositoryTreeNode<?> node, @@ -289,62 +394,43 @@ public class RepositoryTreeNodeDecorator extends GitDecorator } } } - boolean decorated = false; if (markGroupDirty) { - decorated = true; decoration.addPrefix(HAS_CHANGES_PREFIX); } if (numberOfBranches == 1) { - decorated = true; String repoLabel = singleRepoName != null ? singleRepoName : MULTIPLE_REPOSITORIES; decoration.addSuffix( OPEN_BRACKET + repoLabel + ' ' + singleBranch + ']'); } else if (numberOfDirectories > 1) { - decorated = true; decoration.addSuffix(OPEN_PARENTHESIS + numberOfDirectories + ')'); } - if (!decorated) { - ensureCorrectLabelCaching(decoration); - } - } - - private void ensureCorrectLabelCaching(IDecoration decoration) { - // Ensure the caching of last labels in - // RepositoryTreeNodeLabelProvider works - decoration.addSuffix(" ");//$NON-NLS-1$ } - private boolean decorateStash(StashedCommitNode node, + private void decorateStash(StashedCommitNode node, IDecoration decoration) { RevCommit commit = node.getObject(); decoration.addSuffix( OPEN_BRACKET + abbreviate(commit) + "] " //$NON-NLS-1$ + commit.getShortMessage()); - return true; } - private boolean decorateSubmodules(@NonNull Repository repository, + private void decorateSubmodules(@NonNull Repository repository, IDecoration decoration) { if (haveSubmoduleChanges(repository)) { decoration.addPrefix(HAS_CHANGES_PREFIX); - return true; } - return false; } - private boolean decorateTag(TagNode node, IDecoration decoration) { + private void decorateTag(TagNode node, IDecoration decoration) { if (verboseBranchMode && node.getCommitId() != null && node.getCommitId().length() > 0) { decoration.addSuffix(" " + node.getCommitId().substring(0, 7) + ' ' //$NON-NLS-1$ + node.getCommitShortMessage()); - return true; } - return false; } - private RevCommit getLatestCommit(RepositoryTreeNode node) { - Ref ref = (Ref) node.getObject(); + private RevCommit getLatestCommit(Repository repository, Ref ref) { ObjectId id; if (ref.isSymbolic()) { id = ref.getLeaf().getObjectId(); @@ -354,7 +440,7 @@ public class RepositoryTreeNodeDecorator extends GitDecorator if (id == null) { return null; } - try (RevWalk walk = new RevWalk(node.getRepository())) { + try (RevWalk walk = new RevWalk(repository)) { walk.setRetainBody(true); return walk.parseCommit(id); } catch (IOException ignored) { @@ -383,7 +469,7 @@ public class RepositoryTreeNodeDecorator extends GitDecorator } Set<String> modified = data.getModified(); return data.getSubmodules().stream() - .anyMatch(s -> modified.contains(s)); + .anyMatch(modified::contains); } @Override diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeLabelProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeLabelProvider.java index 3921505618..458769d15b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeLabelProvider.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeLabelProvider.java @@ -15,7 +15,8 @@ *******************************************************************************/ package org.eclipse.egit.ui.internal.repository; -import java.util.WeakHashMap; +import java.util.Arrays; +import java.util.function.Consumer; import org.eclipse.egit.ui.internal.GitLabels; import org.eclipse.egit.ui.internal.groups.RepositoryGroup; @@ -28,10 +29,13 @@ import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeType; import org.eclipse.egit.ui.internal.repository.tree.WorkingDirNode; import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; +import org.eclipse.jface.viewers.IDecorationContext; +import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.StyledString; +import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; -import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.custom.StyleRange; import org.eclipse.ui.IMemento; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.model.WorkbenchLabelProvider; @@ -50,91 +54,36 @@ public class RepositoryTreeNodeLabelProvider private final boolean showPaths; /** - * Keeps the last label. If the label we originally get is undecorated, we - * return this last decorated label instead to prevent flickering. When the - * asynchronous lightweight decorator then has computed the decoration, the - * label will be updated. Note that this works only because our - * RepositoryTreeNodeDecorator always decorates! (If there's no decoration, - * it appends a single blank to ensure the decorated label is different from - * the undecorated one.) - * <p> - * For images, there is no such work-around, and thus we need to do the - * image decorations in the label provider (in the - * RepositoryTreeNodeWorkbenchAdapter in our case) in the UI thread. - */ - private final WeakHashMap<Object, StyledString> previousDecoratedLabels = new WeakHashMap<>(); - - /** - * Creates a new {@link RepositoryTreeNodeLabelProvider} that shows the - * paths for repositories and working tree nodes. + * Creates a new {@link RepositoryTreeNodeLabelProvider} that neither + * decorates nor shows paths. */ public RepositoryTreeNodeLabelProvider() { - this(true); + this(new WorkbenchLabelProvider(), null, null, false); } /** - * Creates a new {@link RepositoryTreeNodeLabelProvider}. + * Creates a new {@link RepositoryTreeNodeLabelProvider} that decorates and + * optionally shows paths. * * @param showPaths - * whether to show the file system paths for repositories and - * working tree nodes + * whether to show paths */ public RepositoryTreeNodeLabelProvider(boolean showPaths) { - this(new WorkbenchLabelProvider(), showPaths); + this(new WorkbenchLabelProvider(), PlatformUI.getWorkbench() + .getDecoratorManager().getLabelDecorator(), null, showPaths); } private RepositoryTreeNodeLabelProvider( - WorkbenchLabelProvider labelProvider, boolean showPaths) { - super(labelProvider, PlatformUI.getWorkbench() - .getDecoratorManager().getLabelDecorator(), null); + WorkbenchLabelProvider labelProvider, ILabelDecorator decorator, + IDecorationContext decorationContext, boolean showPaths) { + super(labelProvider, decorator, decorationContext); this.labelProvider = labelProvider; this.showPaths = showPaths; } @Override - public void dispose() { - super.dispose(); - previousDecoratedLabels.clear(); - } - - @Override public StyledString getStyledText(Object element) { - StyledString decoratedLabel = super.getStyledText(element); - String decoratedValue = decoratedLabel.getString(); - String simpleValue = labelProvider.getText(element); - if (decoratedValue.equals(simpleValue)) { - // Decoration not available yet... but may be shortly. Try to - // prevent flickering by returning the previous decorated label, if - // any. - StyledString previousLabel = previousDecoratedLabels.get(element); - if (previousLabel != null) { - return previousLabel; - } - } else if (decoratedValue.trim().equals(simpleValue)) { - // No decoration... - decoratedLabel = labelProvider.getStyledText(element); - } - if (showPaths) { - if (element instanceof RepositoryNode) { - Repository repository = ((RepositoryNode) element) - .getRepository(); - if (repository != null) { - decoratedLabel.append(" - ", StyledString.QUALIFIER_STYLER) //$NON-NLS-1$ - .append(repository.getDirectory().getAbsolutePath(), - StyledString.QUALIFIER_STYLER); - } - } else if (element instanceof WorkingDirNode) { - Repository repository = ((WorkingDirNode) element) - .getRepository(); - if (repository != null) { - decoratedLabel.append(" - ", StyledString.QUALIFIER_STYLER) //$NON-NLS-1$ - .append(repository.getWorkTree().getAbsolutePath(), - StyledString.QUALIFIER_STYLER); - } - } - } - previousDecoratedLabels.put(element, decoratedLabel); - return decoratedLabel; + return super.getStyledText(element); } @Override @@ -143,13 +92,6 @@ public class RepositoryTreeNodeLabelProvider } @Override - public Image getImage(Object element) { - // We know that the decorator for RepositoryTreeNodes will not decorate - // the image; our label provider will do so already. - return labelProvider.getImage(element); - } - - @Override public String getToolTipText(Object element) { if (element instanceof AdditionalRefNode) { AdditionalRefNode additionalRefNode = (AdditionalRefNode) element; @@ -160,6 +102,15 @@ public class RepositoryTreeNodeLabelProvider } @Override + public void update(ViewerCell cell) { + if (showPaths) { + update(cell, super::update); + } else { + super.update(cell); + } + } + + @Override public void restoreState(IMemento memento) { // empty } @@ -198,4 +149,43 @@ public class RepositoryTreeNodeLabelProvider public void init(ICommonContentExtensionSite config) { // empty } + + static void update(ViewerCell cell, Consumer<ViewerCell> updater) { + Object element = cell.getElement(); + if (element instanceof RepositoryNode + || element instanceof WorkingDirNode) { + String textBefore = cell.getText(); + StyleRange[] rangesBefore = cell.getStyleRanges(); + updater.accept(cell); + String textAfter = cell.getText(); + StyleRange[] rangesAfter = cell.getStyleRanges(); + if (textBefore.equals(textAfter) + && Arrays.equals(rangesBefore, rangesAfter)) { + // Decorating delegate decided to wait. + return; + } + Repository repository = ((RepositoryTreeNode<?>) element) + .getRepository(); + if (repository == null) { + return; + } + String newText = " - "; //$NON-NLS-1$ + if (element instanceof RepositoryNode) { + newText += repository.getDirectory().getAbsolutePath(); + } else if (element instanceof WorkingDirNode) { + newText += repository.getWorkTree().getAbsolutePath(); + } + StyleRange style = new StyleRange(); + style.start = textAfter.length(); + style.length = newText.length(); + StyledString.QUALIFIER_STYLER.applyStyles(style); + StyleRange[] newRanges = new StyleRange[rangesAfter.length + 1]; + System.arraycopy(rangesAfter, 0, newRanges, 0, rangesAfter.length); + newRanges[newRanges.length - 1] = style; + cell.setText(textAfter + newText); + cell.setStyleRanges(newRanges); + } else { + updater.accept(cell); + } + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeWorkbenchAdapter.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeWorkbenchAdapter.java index f80c3800c7..4d6f094504 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeWorkbenchAdapter.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoryTreeNodeWorkbenchAdapter.java @@ -14,22 +14,17 @@ import java.io.File; import java.text.MessageFormat; import org.eclipse.core.runtime.IPath; -import org.eclipse.egit.ui.internal.DecorationOverlayDescriptor; import org.eclipse.egit.ui.internal.GitLabels; import org.eclipse.egit.ui.internal.ResourcePropertyTester; import org.eclipse.egit.ui.internal.UIIcons; import org.eclipse.egit.ui.internal.UIText; -import org.eclipse.egit.ui.internal.decorators.DecoratorRepositoryStateCache; import org.eclipse.egit.ui.internal.groups.RepositoryGroup; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeType; import org.eclipse.egit.ui.internal.repository.tree.StashedCommitNode; import org.eclipse.egit.ui.internal.repository.tree.TagNode; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IDecoration; -import org.eclipse.jgit.annotations.NonNull; import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.ui.PlatformUI; @@ -63,18 +58,6 @@ public class RepositoryTreeNodeWorkbenchAdapter extends WorkbenchAdapter { return null; } RepositoryTreeNode<?> node = (RepositoryTreeNode) object; - ImageDescriptor base = getBaseImageDescriptor(node); - if (base == null) { - return null; - } - // We have to decorate here: if we let an asynchronous lightweight - // decorator do it, image decorations may flicker in the - // repositories view and elsewhere where we'd refresh viewers. - return decorateImageDescriptor(base, node); - } - - private ImageDescriptor getBaseImageDescriptor( - @NonNull RepositoryTreeNode<?> node) { switch (node.getType()) { case FILE: { Object item = node.getObject(); @@ -103,78 +86,6 @@ public class RepositoryTreeNodeWorkbenchAdapter extends WorkbenchAdapter { return node.getType().getIcon(); } - private ImageDescriptor decorateImageDescriptor( - @NonNull ImageDescriptor base, - @NonNull RepositoryTreeNode<?> node) { - switch (node.getType()) { - case TAG: - case ADDITIONALREF: - case REF: - // if the branch or tag is checked out, - // we want to decorate the corresponding - // node with a little check indicator - String refName = ((Ref) node.getObject()).getName(); - Ref leaf = ((Ref) node.getObject()).getLeaf(); - - String compareString = null; - Repository repository = node.getRepository(); - String branchName = DecoratorRepositoryStateCache.INSTANCE - .getFullBranchName(repository); - if (branchName == null) { - return base; - } - if (refName.startsWith(Constants.R_HEADS)) { - // local branch: HEAD would be on the branch - compareString = refName; - } else if (refName.startsWith(Constants.R_TAGS)) { - // tag: HEAD would be on the commit id to which the tag is - // pointing - TagNode tagNode = (TagNode) node; - compareString = tagNode.getCommitId(); - } else if (refName.startsWith(Constants.R_REMOTES)) { - // remote branch: branch name is object id in detached HEAD - // state - ObjectId objectId = leaf.getObjectId(); - if (objectId != null) { - String leafName = objectId.getName(); - if (leafName.equals(branchName)) { - return new DecorationOverlayDescriptor(base, - UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); - } - } - } else if (refName.equals(Constants.HEAD)) { - return new DecorationOverlayDescriptor(base, - UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); - } else { - String leafname = leaf.getName(); - if (leafname.startsWith(Constants.R_REFS) - && leafname.equals(branchName)) { - return new DecorationOverlayDescriptor(base, - UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); - } - ObjectId objectId = leaf.getObjectId(); - if (objectId != null && objectId - .equals(DecoratorRepositoryStateCache.INSTANCE - .getHead(repository))) { - return new DecorationOverlayDescriptor(base, - UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); - } - // some other symbolic reference - return base; - } - - if (compareString != null && compareString.equals(branchName)) { - return new DecorationOverlayDescriptor(base, - UIIcons.OVR_CHECKEDOUT, IDecoration.TOP_LEFT); - } - - break; - default: - break; - } - return base; - } - @Override public String getLabel(Object object) { RepositoryTreeNode<?> node = (RepositoryTreeNode) object; diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java index 63b54dc0e1..92584ea246 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java @@ -14,6 +14,7 @@ package org.eclipse.egit.ui.internal.repository.tree; import java.io.File; +import java.util.Objects; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; @@ -366,10 +367,16 @@ public abstract class RepositoryTreeNode<T> extends PlatformObject implements Co return ((Repository) myObject).getDirectory().equals( ((Repository) otherObject).getDirectory()); case REF: - case TAG: case ADDITIONALREF: return ((Ref) myObject).getName().equals( ((Ref) otherObject).getName()); + case TAG: { + Ref myRef = (Ref) myObject; + Ref otherRef = (Ref) otherObject; + return Objects.equals(myRef.getName(), otherRef.getName()) + && Objects.equals(myRef.getObjectId(), + otherRef.getObjectId()); + } case FOLDER: case FILE: return ((File) myObject).getPath().equals( diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/DeleteRepositoryGroupConfirmDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/DeleteRepositoryGroupConfirmDialog.java index ae9d7a2b89..26d7030d16 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/DeleteRepositoryGroupConfirmDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/DeleteRepositoryGroupConfirmDialog.java @@ -77,7 +77,8 @@ public class DeleteRepositoryGroupConfirmDialog extends TitleAreaDialog { SWT.BORDER | SWT.V_SCROLL); GridDataFactory.fillDefaults().grab(true, true) .applyTo(groupsViewer.getControl()); - groupsViewer.setLabelProvider(new RepositoryTreeNodeLabelProvider()); + groupsViewer + .setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); groupsViewer.setContentProvider( new DeleteRepositoryGroupTreeContentProvider()); groupsViewer.setInput(groupsToDelete); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchPage.java index 5f41929e38..f8c1ec7900 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchPage.java @@ -312,7 +312,7 @@ public class CommitSearchPage extends DialogPage implements ISearchPage { repositoryGroup, SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); this.repositoryViewer - .setLabelProvider(new RepositoryTreeNodeLabelProvider()); + .setLabelProvider(new RepositoryTreeNodeLabelProvider(true)); this.repositoryViewer .setContentProvider(new RepositoriesViewContentProvider()); this.repositoryViewer diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchResultsPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchResultsPage.java index 1353a4a89d..5e817a0e27 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchResultsPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/search/CommitSearchResultsPage.java @@ -82,7 +82,7 @@ public class CommitSearchResultsPage extends AbstractTextSearchViewPage { for (Object inputElement : getInput().getElements()) { RepositoryCommit commit = (RepositoryCommit) inputElement; repos.computeIfAbsent(commit.getRepository(), - r -> new RepositoryMatch(r)).addCommit(commit); + RepositoryMatch::new).addCommit(commit); } return repos.values().toArray(); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/selection/MultiViewerSelectionProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/selection/MultiViewerSelectionProvider.java index d1c3f7bab4..372c864d8a 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/selection/MultiViewerSelectionProvider.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/selection/MultiViewerSelectionProvider.java @@ -38,11 +38,9 @@ public class MultiViewerSelectionProvider extends AbstractSelectionProvider { } }; - private final ISelectionChangedListener selectionHook = event -> selectionChanged( - event); + private final ISelectionChangedListener selectionHook = this::selectionChanged; - private final ISelectionChangedListener postSelectionHook = event -> postSelectionChanged( - event); + private final ISelectionChangedListener postSelectionHook = this::postSelectionChanged; private Viewer currentViewer; diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java index 5fec3702e9..ba0c91a03e 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java @@ -30,6 +30,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; @@ -159,6 +160,7 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.jface.viewers.ViewerLabel; import org.eclipse.jgit.annotations.NonNull; import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.api.AddCommand; @@ -175,6 +177,7 @@ import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.RepositoryState; import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.util.StringUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.custom.VerifyKeyListener; @@ -269,7 +272,9 @@ public class StagingView extends ViewPart private RepositoryNode titleNode; - private RepositoryTreeNodeLabelProvider titleLabelProvider; + private Map<File, ViewerLabel> titleLabels = new HashMap<>(); + + private DecoratingLabelProvider titleLabelProvider; private SashForm mainSashForm; @@ -734,11 +739,12 @@ public class StagingView extends ViewPart GridLayoutFactory.fillDefaults().applyTo(parent); titleNode = null; - titleLabelProvider = new RepositoryTreeNodeLabelProvider(false); + titleLabelProvider = new DecoratingLabelProvider( + new RepositoryTreeNodeLabelProvider(), + PlatformUI.getWorkbench().getDecoratorManager()); titleLabelProvider.addListener(e -> { if (titleNode != null && form != null && !form.isDisposed()) { - form.setText(titleLabelProvider.getStyledText(titleNode) - .getString()); + updateTitle(false); } }); toolkit = new FormToolkit(parent.getDisplay()); @@ -1307,6 +1313,27 @@ public class StagingView extends ViewPart service.showBusyForFamily(org.eclipse.egit.core.JobFamilies.INDEX_DIFF_CACHE_UPDATE); } + private void updateTitle(boolean force) { + ViewerLabel label = titleLabels.computeIfAbsent( + titleNode.getRepository().getDirectory(), + r -> new ViewerLabel(null, null)); + if (force) { + if (label.getImage() != null) { + form.setImage(label.getImage()); + } + if (!StringUtils.isEmptyOrNull(label.getText())) { + form.setText(label.getText()); + } + } + titleLabelProvider.updateLabel(label, titleNode); + if (label.hasNewImage()) { + form.setImage(label.getImage()); + } + if (label.hasNewText()) { + form.setText(label.getText()); + } + } + /** * On Windows some SWT bug avoids repainting the non selected elements * correctly, see bugzilla 533555. @@ -1849,7 +1876,7 @@ public class StagingView extends ViewPart StagingViewSearchThread searchThread = new StagingViewSearchThread( StagingView.this); filterText.getDisplay().timerExec(200, - () -> searchThread.start()); + searchThread::start); }); return toolbarComposite; } @@ -2137,7 +2164,7 @@ public class StagingView extends ViewPart } } }); - viewer.addOpenListener(event -> compareWith(event)); + viewer.addOpenListener(this::compareWith); viewer.setComparator(new StagingEntryComparator(!getSortCheckState(), getPreferenceStore() .getBoolean(UIPreferences.STAGING_VIEW_FILENAME_MODE))); @@ -3652,6 +3679,7 @@ public class StagingView extends ViewPart refreshAction.setEnabled(false); updateSectionText(); titleNode = null; + form.setImage(getImage(UIIcons.REPOSITORY)); if (repository != null && repository.isBare()) { form.setText(UIText.StagingView_BareRepoSelection); } else { @@ -3737,8 +3765,7 @@ public class StagingView extends ViewPart if (repositoryChanged) { titleNode = new RepositoryNode(null, repository); - form.setText(titleLabelProvider.getStyledText(titleNode) - .getString()); + updateTitle(true); // Reset paths, they're from the old repository resetPathsToExpand(); removeRepositoryListeners(); @@ -3752,8 +3779,7 @@ public class StagingView extends ViewPart repository)); } else if (titleNode != null) { // The label decoration may need an update. - form.setText(titleLabelProvider.getStyledText(titleNode) - .getString()); + updateTitle(false); } final StagingViewUpdate update = new StagingViewUpdate(repository, indexDiff, null); @@ -4380,6 +4406,7 @@ public class StagingView extends ViewPart titleLabelProvider = null; } titleNode = null; + titleLabels.clear(); currentRepository = null; lastSelection = null; disposed = true; diff --git a/org.eclipse.egit/META-INF/MANIFEST.MF b/org.eclipse.egit/META-INF/MANIFEST.MF index 6a6f337684..a3674f2588 100644 --- a/org.eclipse.egit/META-INF/MANIFEST.MF +++ b/org.eclipse.egit/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.eclipse.egit;singleton:=true -Bundle-Version: 5.6.1.qualifier +Bundle-Version: 5.7.0.qualifier Bundle-Vendor: %Bundle-Vendor Bundle-Localization: plugin Bundle-ActivationPolicy: lazy diff --git a/org.eclipse.egit/pom.xml b/org.eclipse.egit/pom.xml index f66667f169..3d4f56f070 100644 --- a/org.eclipse.egit/pom.xml +++ b/org.eclipse.egit/pom.xml @@ -18,7 +18,7 @@ <parent> <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> </parent> <artifactId>org.eclipse.egit</artifactId> @@ -19,7 +19,7 @@ <groupId>org.eclipse.egit</groupId> <artifactId>egit-parent</artifactId> - <version>5.6.1-SNAPSHOT</version> + <version>5.7.0-SNAPSHOT</version> <packaging>pom</packaging> <name>EGit Parent</name> @@ -60,7 +60,7 @@ </licenses> <properties> - <egit-version>5.6.1-SNAPSHOT</egit-version> + <egit-version>5.7.0-SNAPSHOT</egit-version> <tycho-version>1.5.1</tycho-version> <tycho-extras-version>${tycho-version}</tycho-extras-version> <jboss-tycho-plugins-version>1.4.0</jboss-tycho-plugins-version> diff --git a/tools/oomph/EGit.setup b/tools/oomph/EGit.setup index bb6a30f248..a6ab15f0eb 100644 --- a/tools/oomph/EGit.setup +++ b/tools/oomph/EGit.setup @@ -105,15 +105,6 @@ xsi:type="pde:APIBaselineTask" name="EGit" activate="false" - version="5.3.0" - location="${workspace.location/../api.baseline/5.3.0}" - remoteURI="https://download.eclipse.org/egit/updates-5.3/org.eclipse.egit.repository-5.3.0.201903130848-r.zip"> - <description>EGit 5.3.0 API baseline; to be used with branch stable-5.4</description> - </setupTask> - <setupTask - xsi:type="pde:APIBaselineTask" - name="EGit" - activate="false" version="5.4.0" location="${workspace.location/../api.baseline/5.4.0}" remoteURI="https://download.eclipse.org/egit/updates-5.4/org.eclipse.egit.repository-5.4.0.201906121030-r.zip"> @@ -122,10 +113,19 @@ <setupTask xsi:type="pde:APIBaselineTask" name="EGit" + activate="false" version="5.5.0" location="${workspace.location/../api.baseline/5.5.0}" remoteURI="https://download.eclipse.org/egit/updates-5.5/org.eclipse.egit.repository-5.5.0.201909110433-r.zip"> - <description>EGit 5.5.0 API baseline; to be used with branch master</description> + <description>EGit 5.5.0 API baseline; to be used with branch stable-5.6</description> + </setupTask> + <setupTask + xsi:type="pde:APIBaselineTask" + name="EGit" + version="5.6.0" + location="${workspace.location/../api.baseline/5.6.0}" + remoteURI="https://download.eclipse.org/egit/updates-5.6/org.eclipse.egit.repository-5.6.0.201912101111-r.zip"> + <description>EGit 5.6.0 API baseline; to be used with branch master</description> </setupTask> <stream name="master" label="Workspace setup for branch master"> |