New synchronize wizard for EGit

Here are some screenshots of new redesigned steps in EGit synchronization wizard. The main idea is to make most common synchronization usage as short as it is possible. So I come with idea of ‘predefined synchronization configurations’. In first step of sync-wizard you can select from three options:

  • Working Tree
  • Remote Tracking
  • Custom

EGit new synchronization wizard - page 1

After selecting first option you only uncommitted local changes (those that are stager/in index and those that aren’t). This should help you when you want to review yours changes just before commit or stage some changes.

Second option ‘Remote Tracking’ is only available when current branch tracks one of yours remote branches (if it doesn’t this option is disabled). This option will show you all locally made changes (same as in ‘Working Tree’) but also changes made in commits that occurs in local and remote branch after you started the local one.

Selecting one of those two actions (and selecting the checkbox next to repository name) will enable the ‘Finish’ button and you are done with launching synchronization.

In case when at least in one repository the ‘Custom’ option is selected, the ‘Finish’ button will be disabled, but ‘Next >’ should be enabled. In this situation you must go to the next page to setup yours custom synchronization.

On ‘custom synchronization step’ you will only see repositories that was chosen to have a custom synchronization. Here you can select source and destination branch and also include or exclude local changes from being shown in synchronization results.

EGit new synchronization wizard - page 2

Those changes are currently pending for a review in ours gerrit, but I think that they will be merged into master branch (not they won’t be included in 0.12 release).

What do you think about such approach for git synchronization? Maybe you see some other ‘predefined’ day-to-day synchronization configuration, if yes please let me know!

Google announces list of accepted projects in GSoC11

Google Summer of Code 2011

Almost 24 hours ago Google announces list of accepted projects in this year edition of Google Summer of Code program. In current edition Eclipse Foundation got 17 slots (as you may know from Wayne post). One of this slots was allocated for me (as a student) and Matthias Sohn, the project that we’ll be working is a continuation of my last year work for EGit project. The project name is “EGit Synchronize View support part 2”, if somebody is curious what this project is about you can check it on melange’s (I’ve made it public). In this proposal I want to address most important missing features in current implementation of EGit Synchronization support. If you think that something there is missing pleas let me know via mail or comments!

Apart from that I’m third time GSoC student (and that Eclipse got 17 slots!) there is another good news for me … on the list of accepted proposals in Eclipse Foundation there is 6 (six!) student’s names that looks like there are from Poland! Yeah! 1/3 of Eclipse GSoC students seams to be from Poland, this is really great information! Next great thing is that four projects are mentored by Polish mentors! Great work guys! And good luck 😉

And last but not least, as far as I know there is one other student from my university that was accepted in GSoC11. This is some kind of regression comparing to 2010 edition where there were three accepted students. Maybe in next edition this will be improved, we’ll see.

After announcement the “community bonding” time begins … but not for me since I’m quite well integrated with EGit community 😉 therefore for me the “coding period” starts today ;>

Show non-workspace resources in Git Change Set

Synchronize view in EGit doesn’t show non-workspace files from its very beginning. This issue seams to be very complicated and also it seams to require lots of hacking on team framework and eclipse API.

Few days ago Ilya Ivanov from Intland pushed into our gerrit a patch that should fix this issue. I was very surprised that this change is so small and simple. It only works partially because the compare editor cannot be launched for non-workspace files. In my opinion this patch cannot be merge into master branch without this core functionality, so today I spent about 3 or 4 hours hacking on that topic … and here are results:

As you can see, there is master pom file (with isn’t imported into eclipse workspace) in synchronize view and on the left hand side there is a compare  editor for it, showing what was changed ;>

Currently both patches are waiting for review in gerrit, but I think that they will be merged into master soon 😉

EGit hackfest @ SAP Walldorf

Last week I spent in Walldorf (Germany) at EGit hackfest. I want to attend on all sessions therefore I’ve decided to go there day before and leave Walldorf day after event. Therefore I had some time that I can spent on short tours in Walldorf and Frankfurt. Here is a short summarization things that we manage to achieve during this time in case of synchronize view in EGit.

With Christian Halstrick we manage to speed up synchronization operation. Our starting point was comparing branch stable-0.7 against stable-0.10 from EGit repository with at the beginning takes around 2 minutes. Then using yourkit profiler we manage to reduce synchronization time down to less then 20 seconds on the same data set! The first set of patches that gives most acceleration were already merged into master and are available in latest nightly build of EGit, but there are also some open change sets in gerrit pending for review that should give some performance boost. Even with this improvements synchronization on some large repositories can take more then 5 minures, therefore this topic is still open for me and I’ll continue to hacking on it in feature. Currently one of the slowest part is mapping path of file/folder from git into eclipse’s workspace resource, but this should be improved by new implementation of IWorkspaceRoot.getFileForLocation()/IWorkspaceRoot.getContainerForLocation() in Eclipse 3.7 ;>

Second task that I manage to start working on during hack sessions is supporting context menu action in synchronization. I didn’t finish it but most of code is currently written. I only need to improve some things and test it. I think that in week or two this change should appear in gerrit.

This was great opportunity for meet persons that I only know from mailing list or code reviews in gerrit, especially to meet Matthias Sohn and Stefan Lay 😉 and also rest of EGit team members ;>

I want to thanks Matthias Sohn for organizing such great event and SAP for hosting it!. Many thanks also for my employer NCDC for refunding me part of my trip.

EGit ChangeSet shows staged and working tree changes

Actually this is quite old feature because it is available in nightly builds since two or more weeks. But I think that is worth mention, because it give a possibility to review current index and working tree status at the same time.

Staged and working tree changes in Synchronize view
To activate this feature simply mark “Include local uncommited changes in comparison” in synchronize dialog and all staged and changed files will be shown in Synchronize view.