Skip to main content
AgeCommit message (Collapse)AuthorFilesLines
2018-05-23Prepare 5.1.0-SNAPSHOT buildsMatthias Sohn1-18/+18
Change-Id: I5b4427a73f05ed2144d886acb37640fc714757bc Signed-off-by: Matthias Sohn <>
2018-05-05Respect gitattributes in the compare editorThomas Wolf1-0/+1
Apply smudge/clean filters. Store the filters to be applied when we create the internal GitBlobStorage and apply them when the stream is opened. Unfortunately this requires quite a few interface changes to pass through CheckoutMetadata. Adds tests for the new behavior, including index edits. Bug: 520693 Change-Id: If7696501f3e1b8f6d99518915b7292e268d656bd Signed-off-by: Thomas Wolf <>
2018-03-08Prepare 5.0.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I465aecd6dcbe7314ce296193238ee75390ab2839 Signed-off-by: Matthias Sohn <>
2018-03-08Prepare 4.11.1-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I1b3ef129545c7731358b913419f8717fdbb24288 Signed-off-by: Matthias Sohn <>
2018-03-08EGit v4.11.0.201803080745-rv4.11.0.201803080745-rMatthias Sohn1-1/+1
Change-Id: I4097335194990ee3d86a7349a1e9f24a5298b1f2 Signed-off-by: Matthias Sohn <>
2017-12-30Prepare 4.11.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I5524e6e302d089361d2bb2dbd8e59e8d445abd51 Signed-off-by: Matthias Sohn <>
2017-12-22Add header Automatic-Module-Name for Java 9Karsten Thoms1-0/+1
Bug: 529074 Change-Id: Ib51d933a361269fc481303d8c185c757af832f17 Signed-off-by: Karsten Thoms <> Signed-off-by: Matthias Sohn <>
2017-10-08Prepare 4.10.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: If961f7c5dd5e11ff59ed50dda8a93be2d5b1f2a0 Signed-off-by: Matthias Sohn <>
2017-05-30Prepare 4.9.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I9d727e1cd79572167ecb05372b1583bb71cdb7db Signed-off-by: Matthias Sohn <>
2017-04-05Prepare 4.8.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I8b3a0cdd4274467c50714e7fb18af81a41ad0b4b Signed-off-by: Matthias Sohn <>
2016-12-26Prepare 4.7.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I08ba5da00f6b4021dc07355e1f01fb1b6d279c0e Signed-off-by: Matthias Sohn <>
2016-12-24Prepare 4.6.1-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I32a6d58bf4e5ec14ee074cc884e0b185be553dbd Signed-off-by: Matthias Sohn <>
2016-12-23EGit v4.6.0.201612231935-rv4.6.0.201612231935-rMatthias Sohn1-1/+1
Change-Id: Ia254425615f55f6de523c3839fd0eacb2075f981 Signed-off-by: Matthias Sohn <>
2016-09-20Change EGit minimum execution environment to JavaSE-1.8Matthias Sohn1-2/+1
Bug: 500059 JGit-Dependency: I47f3f6749a67da52029f84e002d9b155ed56d2b7 Change-Id: I7c13a9617fb32774842dc146dab564d15d5033af Signed-off-by: Matthias Sohn <>
2016-09-19Prepare 4.6.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: Ie22fec3a9a515759a61e87a45820c216b77f0991 Signed-off-by: Matthias Sohn <>
2016-08-23Allow to run tests with higher mockito versionAndrey Loskutov1-3/+3
Latest orbit repos contain org.mockito with 1.9.5.v201605172210 version which runs just fine but not resolvable if using org.mockito;version="[1.8.0,1.9.0)" version constraints. Change-Id: Ic2cf10bcd199badb612dae58c09189b32c48a123 Signed-off-by: Andrey Loskutov <>
2016-06-01Prepare 4.5.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I83356edf953cb2301e5a5fc45ba5c678af5ab3b3 Signed-off-by: Matthias Sohn <>
2016-04-08Prepare 4.4.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I056cb5e0d0ba20299b614965b49016a85514f3de Signed-off-by: Matthias Sohn <>
2016-04-08Prepare 4.3.1-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: Ide5a9401f66b246cab18e66d3a2046f7c22cabb6 Signed-off-by: Matthias Sohn <>
2016-04-07EGit v4.3.0.201604071810-rv4.3.0.201604071810-rMatthias Sohn1-1/+1
Change-Id: If4a677af68862a663b1fc0cdc56b867f9c7193b8 Signed-off-by: Matthias Sohn <>
2016-04-07EGit v4.3.0.201604071045-rMatthias Sohn1-1/+1
Change-Id: I26ca17f5ce5c83bea828ee642fdfcdf4708c25d7 Signed-off-by: Matthias Sohn <>
2016-04-02Move EclipseAuthenticator and EclipseProxySelector to egit.coreMatthias Sohn1-1/+2
These classes don't have any UI dependencies hence move them down to the org.eclipse.egit.core bundle. Change-Id: I2da6c99bc32f155ad7b9bec21aac0fb0942a595b Signed-off-by: Matthias Sohn <>
2016-03-13RepositoryCache: do not prematurely remove submodulesThomas Wolf1-3/+4
Basically we have no way of knowing when we no longer reference a repository. In our code alone, there may be RepositoryMappings and RepositoryNodes directly referencing a Repository, but some views may also have direct references to Repository instances. We therefore cannot explicitly remove repositories from the RepositoryCache, since we have no efficient and 100% reliable way to determine whether a Repository is still in use somewhere. Therefore the RepositoryCache relies on weak reference semantics. Before , this whole mechanism was broken anyway because the IndexDiffCache had no way to remove an IndexDiffCacheEntry instance, and those instances had hard references to the Repository. So once there was an IndexDiffCacheEntry for a repository, that Repository instance would be kept forever. itself was a wrong approach because it neglected that some repositories might never be "configured" repositories visible in the Repositories view. Such repositories would be removed from the RepositoryCache while still in use. Submodules and nested repositories are affected by this, but so can top-level repositories. The approach taken in this change here fixes this. First, we go back to relying solely on the weak reference semantics of the RepositoryCache. Note that doing so does not give any guarantee about when exactly a no longer used and only weakly reachable Repository instance will actually be removed from the cache. Then we at least make sure that we don't keep any hard references around. That's more difficult than it may seem: * Replaced all hard references to Repository in IndexDiffCacheEntry. We now only use the repository's git directory, and use that to get the repository from the RepositoryCache, if it still is there. * The oldIndex DirCache in an IndexDiffCacheEntry also had a hard reference to the Repository. Use a variant that doesn't set that link -- it's used only for writing a DirCache, which we don't do. Note that this is a bit fragile as it relies on an implementation detail of JGit, but for now I see no other way. * Even worse, some Eclipse internals do keep around hard references to some "last selection"s. Those may contain no longer used RepositoryNodes from the repository view, which still reference the Repository instance through a hard reference. We have no real way to reliably ensure that these Eclipse internals forget those nodes. Therefore we have to ensure in RemoveCommand that we actually do null out these Repository references once we're sure we have removed the node from our view. (The two places I found where Eclipse holds on to such defunct nodes are WorkbenchSourceProvider.lastShowInSelection, set when the "Shown In..." context menu was last filled, and the CommonViewer, which also remembers the last selection.) * Our own RepositorySourceProvider had a private field referencing the last selected Repository. The RepositorySourceProvider is a singleton that is instantiated very early and then kept around forever. That was resolved by using a weak reference for the repository. * The EclipseContext also managed to (indirectly) hold on to a hard reference to a Repository instance through the context variable we provided. That was solved by not passing the Repository directly as the context variable defined by RepositorySourceProvider but again only the git directory. * RebaseInteractivePlan has a static global cache of plans and each plan had a hard reference to a repository. A plan is computed when the view is opened, even if never executed. That accumulated hard references to repositories. Solved by using a weak reference. * The Eclipse resource tree's DataTreeLookup has a static cache of instances that are re-used but not cleared after use. Those may keep references to our RepositoryMapping session properties for some time after the IResource to with the property was attached has gone. The test explicitly accounts for this. In the full test run in maven, more problems showed up in a heap dump taken just before we test for no cached repositories in GitRepositoriesViewRepoDeletionTest: numerous FileRepository instances from earlier tests were still referenced. * The EclipseContext retains some handler activations of ActionHamdlers of anonymous Action subclasses of SpellcheckableMessageArea, which reference the area through this$0, which itself keeps a reference to the CommitDialog through this$0, which means we keep the CommitMessageComponent, which has a hard reference to the Repository. Solved by using static subclasses that reference only the SourceViewer. * The Eclipse NavigationHistory keeps around references to some CommitEditorInputs, which also have a hard reference to a repository. * The synchronize view references a repository through its GitSynchronizeData. Resolved in test by keeping the synchronize view closed. * The FileRepository from testCompareWithPreviousWithMerge was still referenced from the job from CompareWithPreviousActionHandler even though no such job was running anymore. Referenced in the ProgressMonitorFocusJobDialog, which was still kept around through its fontChangeListener (an inner non-static class in the ultimate ancestor class Window), which apparently somehow was still registered.. Unclear why or what happened there. Not resolved. * Same thing with testRevertFailure; referenced from RevertCommitOperation from the job in RevertHandler from ProgressMonitorFocusJobDialog. Unresolved. * Anonymous actions in SwitchToMenu still reference a long gone repository from test method selectionWithProj1. Unclear why and unresolved. * Some repositories from earlier tests were still referenced through long defunct RepositoryNode instances. Unresolved. * RepositoryPropertySourceProvider has a hard reference to its lastObject, and the RepositoryPropertySource has hard references to the configs, which may have hard references to the Repository. Resolved in test by closing the property sheet; unresolved in general. Because we can't explicitly remove items from the RepositoryCache, we also cannot explicitly remove IndexDiffCache entries. The only thing we can do is to ensure we remove IndexDiffCacheEntries when we detect that a repository in the cache no longer exists (has been garbage collected, or its git directory no longer exists.) Additionally, the resource change listener of an IndexDiffCacheEntry unregisters itself when it finds its repository has gone. I cannot really claim that this still fixes bug 483664 because there is absolutely no way to ensure that repositories vanish from the RepositoryCache in a timely manner. But it's a best-effort attempt to at least try, and at the same time not to evict repositories from the cache prematurely. The test explicitly invokes System.gc() in an attempt to make the JVM actually reclaim weakly reachable objects. This is not guaranteed, but appears to work in practice: the test thus only shows that the obvious places where we kept hard references are indeed resolved, and the repository does indeed vanish eventually. But see the "unresolved" items above: there's no guarantee that some view or action handler or Eclipse internal class doesn't somehow still manages to keep a hard reference and thus prevent reclamation. Finally, testing for an empty RepositoryCache must ensure that the RepositoryChangeScanner does not interfere; otherwise that may temporarily hold hard references to repositories. Solved using a scheduling rule. Change-Id: I3f437caccd58d6c9fb4187f66d9f53e7834a5224 Signed-off-by: Thomas Wolf <>
2016-01-21Prepare 4.3.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: I706e98e52ed35db93c830b82eccac6db83ee20df Signed-off-by: Matthias Sohn <>
2015-09-28Prepare 4.2.0-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: Ib8648c6885c90f0c812fb06cf79defdd9368e301 Signed-off-by: Matthias Sohn <>
2015-09-28Prepare 4.1.1-SNAPSHOT buildsMatthias Sohn1-17/+17
Change-Id: Ic04e32bea8bdc7c351cc6ddddb2e33012f952829 Signed-off-by: Matthias Sohn <>
2015-09-28EGit v4.1.0.201509280440-rv4.1.0.201509280440-rMatthias Sohn1-1/+1
Change-Id: Icfa40a868fe197aaf761e0323af0fffbe9107a90 Signed-off-by: Matthias Sohn <>
2015-09-13Check for objects adaptable to IResource in ShowBlameActionHandlerThomas Wolf1-1/+2
Includes a new test. Some refactoring in LocalRepositoryTestCase to avoid having to duplicate test repo creation, and to reduce code duplication. Bug: 401156 Change-Id: Ib78d62f11d3a5a52c672bb192e8baba189c49829 Signed-off-by: Thomas Wolf <>
2015-09-02Fix hyperlink display in SpellcheckableMessageAreaThomas Wolf1-1/+2
This is first and foremost a syntax coloring problem, and should be handled as such. This change implements that: * Adds a token scanner that recognizes hyperlinks using the configured hyperlink detectors. * Adds a presentation reconciler with a damager/repairer that uses this token scanner. * Gets rid of the overridden hideHyperlinks() method -- if we do proper syntax coloring, this can wreck havoc when the text is edited (the super implementation does some StyleRange cleanup; if that is omitted, a stale and possibly out-of-bounds range remains). * Uses SWT.UNDERLINE_LINK to style hyperlink partitions. * Adds a few unit tests for the tokenizing. * Adds org.objenesis to required bundles in org.eclipse.egit.ui.test to enable mocking. In my manual UI tests, this syntax-colors hyperlinks nicely in the staging view, spell-checking works, auto-wrap works, whitespace display works, the "hand" pointer appears only over hyperlinks, and bug 471355 is solved. It also has no adverse effects on the commit viewer or the git history view. Bug: 471355 Change-Id: I623ead62d9600028973353cf63183638a1e06a3e Signed-off-by: Thomas Wolf <>
2015-07-05[gitflow] add UI testsMax Hohenegger1-0/+5
- git flow init - git flow feature start/stop - git flow feature rebase - SWTBot 2.3.0 waitForJobs(..) API Bug: 470710 Change-Id: I4dd936abcb2250ba2b358d01b61319948114fc99 Signed-off-by: Max Hohenegger <>
2015-06-02Prepare 4.1.0-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: I8a3123e90609b0ee84342bd30d2af5fe7933e628 Signed-off-by: Matthias Sohn <>
2015-02-10Set minimum required Java version to Java 7Matthias Sohn1-1/+1
Also update the installation instructions. Bug: 458476 Change-Id: I7a2b20bb7d5ec71d63feeb068078bc4a94fa2f24 Signed-off-by: Matthias Sohn <>
2015-01-26Prepare 4.0.0-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: I6f63324ae7e390318cb17176fef2044144f61656 Signed-off-by: Matthias Sohn <>
2014-12-23Prepare 3.7.0-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: I43054e817e1f6805728a113955296ef7617a8dca Signed-off-by: Matthias Sohn <>
2014-12-23Prepare 3.6.1-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: Ifdcc4a94f800e275a62a7e8a12ef4ea50ed08906 Signed-off-by: Matthias Sohn <>
2014-12-23EGit v3.6.0.201412230720-rv3.6.0.201412230720-rMatthias Sohn1-1/+1
Change-Id: Id31f9ae93293d67c10e0021b72e7b5e42c6b0c41 Signed-off-by: Matthias Sohn <>
2014-11-12Prepare post 3.6.0-m1 buildsMatthias Sohn1-1/+1
Change-Id: I061d71bed22afcc35560c9fd10a194e3284264af Signed-off-by: Matthias Sohn <>
2014-11-12EGit v3.6.0.201411121045-m1v3.6.0.201411121045-m1Matthias Sohn1-1/+1
Change-Id: If3ff91c782d487773cbc3414008adb821f4519e2 Signed-off-by: Matthias Sohn <>
2014-09-04Prepare 3.6.0-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: Iacf8d0b9fbc75727cd6073957a954b9e8b38b771 Signed-off-by: Matthias Sohn <>
2014-06-04Prepare 3.5.0-SNAPSHOT buildsRobin Rosenberg1-12/+12
Change-Id: I2d26dd966f53039ba636bbf1aa100153b4215148 Signed-off-by: Matthias Sohn <>
2014-06-04Prepare post 3.4 RC3 buildsMatthias Sohn1-1/+1
Change-Id: I0475d84e4a086e85e3667eab065fd8073987fffd Signed-off-by: Matthias Sohn <>
2014-06-04EGit v3.4.0.201406041058-rc3v3.4.0.201406041058-rc3Matthias Sohn1-1/+1
Change-Id: I1969db7f5ef794ac12a636884df81b683ef0bac0 Signed-off-by: Matthias Sohn <>
2014-05-28Prepare post 3.4.0 RC2 buildsMatthias Sohn1-1/+1
Change-Id: I15ddfb941f5cedb079bb056fbe8737b685d8cf2d Signed-off-by: Matthias Sohn <>
2014-05-28EGit v3.4.0.201405281120-rc2v3.4.0.201405281120-rc2Matthias Sohn1-1/+1
Change-Id: Idbe9a38cc853ce0a1368b77b8007e42bcafde4f7 Signed-off-by: Matthias Sohn <>
2014-05-21Prepare post 3.4.0 RC1 buildsMatthias Sohn1-1/+1
Change-Id: Ibd492c226443c1e315ca6d0a11dd48e9fe30fba1 Signed-off-by: Matthias Sohn <>
2014-05-21EGit v3.4.0.201405211411-rc1v3.4.0.201405211411-rc1Matthias Sohn1-1/+1
Change-Id: Iecc5fa334d8e421f96f054923bd86a43a618b442 Signed-off-by: Matthias Sohn <>
2014-05-05Prepare 3.4.0-SNAPSHOT buildsMatthias Sohn1-1/+1
Change-Id: I97d6826554573ccde1c6409ee699c7e0e41ff433 Signed-off-by: Matthias Sohn <>
2014-05-05EGit v3.4.0.201405051725-m7v3.4.0.201405051725-m7Matthias Sohn1-1/+1
Change-Id: Id30c041bfb26752a2754ac931d11cb4c3a74b262 Signed-off-by: Matthias Sohn <>
2014-03-04Prepare 3.4.0-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: Id98bd630fdb9e5bef951aed84f99b80f7a4b4033 Signed-off-by: Matthias Sohn <>
2014-03-04Prepare 3.3.1-SNAPSHOT buildsMatthias Sohn1-12/+12
Change-Id: I66e83c17bba424d1a6f7d7907187304dc574f9ca Signed-off-by: Matthias Sohn <>

Back to the top