Intland now on Mercurial - Part 3: Giving new momentum to the Eclipse Mercurial Plugin
This blog post is a sequel to Intland now on Mercurial and Transforming our tool set.
As written in the most recent post of this series, we found that quite some features important for us were missing from the latest version of the Eclipse Mercurial Plugin. We really wanted to move from Subversion to Mercurial, but we decided that at that point we could't do it without major productivity losses. We also realized that we couldn't wait for all improvements to be developed and tested by the community. Hence, several weeks ago, Intland Software decided to dedicate a developer to the Mercurial Eclipse plugin project. To put it simply, his task is to complete the most important missing features, and to make sure that the plugin would not be a blocker for our team anymore.
We made one major change though. Because this project will be absolutely mission critical for us even in near term, we wanted to be able to progress at our own pace and have 100% control over our internal release schedule. That's why we cloned the original repository into a new project with a codeBeamer-managed Mercurial repository, which is hosted at JavaForge. Our clone is fully open, and we call it HgEclipse to distinguish it from the original MercurialEclipse project initiated by Zingo Andersen.
We encourage the Mercurial community to pull our changes back to the original repository, and we invite everyone to clone our repository freely. Every kind of contribution including programming, testing, writing documentation is more than welcome! If you just want our binaries, those are already available at the Eclipse Update Site at JavaForge. With this project, we follow a release early approach, so new updates might pop up frequently!
We consider the current plugin version a Release Candidate (final will be rolled out in January 2010), however we have been using this in production without major problems for several weeks. We will be continuously working on this. Most importantly, our ultimate long term goal is to provide a viable option for enterprise scale collaboration, based on the Mercurial distributed version control system, the Eclipse Platform and codeBeamer, our distributed ALM platform.
Our work on the 1.5.0 line incorporates about 300 change sets. Highlights:
- Synchronization View: - lack of a rock solid sync view has been an absolute blocker for us. In 1.5.0 it has been practically rewritten from scratch. Now it works with bi-directional synching, multiple branches, immediate push/pull operations, diff's, real change sets (not just change files) and all that jazz.
- Working with multiple branches: - previous plugin versions were pretty much limited to working on the default branch alone. Not anymore. Our team paralelly works on several branches of our core product, so we are confident to say it.
- Cloning: - detecting Eclipse projects is more stable, and the UI is more responsive.
- Self-contained packaging: - in Windows, the plugin has no additional dependencies. It is bundled with hg itself and all other required packages. That means you just install the plugin through the Eclipse Update Manager, and it works out of the box. It's that simple.
- Major performance and resource usage improvements: - long-running tasks executed in the background, agressive caching, smaller memory footprint on large projects, to name a few. (Our current benchmark is to be able to run with a project with 10,000 files.)
- Tons and tons of bug fixes: - you can follow the progress in this bug tracker.
- See more details here.
And finally, some important links:
- HgEclipse project home page
- HgEclipse screen shots
- How to get the plugin via Eclipse Update?
- How to check out the sources?
Posted at 10:23AM Dec 14, 2009 by Intland Team in Announcements | 6 Comments


Posted by uberVU - social comments on December 14, 2009 at 06:37 PM CET #
Best whishes /Zingo Andersen
Posted by Zingo Andersen on December 14, 2009 at 08:35 PM CET #
Best wishes!
Posted by Zingo Andersen on December 14, 2009 at 08:37 PM CET #
Posted by ETZel on December 18, 2009 at 10:05 PM CET #
your work on HgEclipse is fantastic! We want to change from SVN to Mercurial, too. But its at the moment very hard for us to use it productivity. Now this releas is wonderful.
But we are still missing the capability to change only one file to previous version, not the whole change set.
Beyond Compare should also be implemented to use it with HgEclipse.
But right now HgEclipse has made a huge step into the right way!
Thanks!
Posted by MercurialFan on December 30, 2009 at 07:43 AM CET #
I have Eclipse 3.3.2 and the plugin does not seem to work (errorlog stacktrace at the end). The plugin was shown as enabled in Help > Software Updates ... > Manage Configurations window, but no HgEclipse functions showed up. I tried with Eclipse 3.4 and 3.5 and that worked, however.
Error log/stacktrace:
Could not instantiate provider com.vectrace.MercurialEclipse.team.MercurialTeamProvider for project com.vc...
org.eclipse.team.core.TeamException: Could not instantiate provider com.vectrace.MercurialEclipse.team.MercurialTeamProvider for project com.vc...
at org.eclipse.team.core.RepositoryProvider.mapNewProvider(RepositoryProvider.java:165)
at org.eclipse.team.core.RepositoryProvider.mapExistingProvider(RepositoryProvider.java:235)
at org.eclipse.team.core.RepositoryProvider.getProvider(RepositoryProvider.java:507)
at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.isMappedToCVS(CVSLightweightDecorator.java:196)
at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.decorate(CVSLightweightDecorator.java:151)
at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:253)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:71)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:857)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:336)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:322)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:369)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:329)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Posted by Vic on January 09, 2010 at 03:52 AM CET #