How to Make EGit’s Performance on Synchronization 30 Times Better
The Problem: Major performance and productivity problems in EGit
As written before, in 2011 Intland starts contributing to the EGit project, the Git plugin for the Eclipse IDE. The primary motivation for joining the project is the growing interest on our customers’ side, who use our Agile ALM solutions with Eclipse and consider switching to the Git Distributed Version Control System (or already made the switch).
As a first step, we started to experiment with running some of our internal projects in Git. One of those experimental repositories contains about 6000 files per branch and several years of version history. When we started working with it, we realized that initializing the EGit Syncronization View took for more than 10 minutes on this particular repo… This was obviously, totally unproductive and unacceptable.
So we looked into how could we optimize EGit’s performance, and managed to achieve some impressive results.
Achievements: Synchronization View is 20-40 times faster now
After our changes, the time required to synchronize the repo mentioned before, dropped from 10 minutes to 15 seconds. In other words, it is 40 times faster now on that particular repository.
The Eclipse CDT team reported similar results: their synchronization time dropped from 32 minutes to 1.5 minutes (roughly 20 times faster now).
2 Priceless Tips to Make Your EGit Faster
How can you get the same?
- Install this performance improved EGit version from the Eclipse Update Site at JavaForge.com. It’s free and simple.
(Our changes are based on EGit 0.10, the latest stable version available at the time of writing.)
- Clean up the garbage and optimize your Git repository with git gc (gc stands for garbage collector). See this short git-gc tutorial.
Intland’s changes on EGit
In case you are interested in the specific details of the changes involved, here is the list of the related issues:
- FIXED: Bug 323839 − Synchronize View has massive performance problems
- ADDED: Bug 306001 − Integrate Mylyn in the commit dialog
Please note that all these changes have already been sent to the EGit project leaders, and they are already in the Gerrit review queue. We hope to see them merged to the EGit master branch very soon.
If it happens, they will be available in the next official EGit release. Until then, just download the EGit binaries from the Eclipse Update Site at JavaForge.com. (The source code repository is also available at the same page, so you are more than welcome to fetch our change sets.)