Improving the synchronize view - Eclipse 3.0

Why change it? Because there were many open bugs relating to the synchronize view, there was no public API for repository providers to use it, and we felt that we could to better.

Problems

In brackets is the 3.0 milestone build where the problem has been addressed.

Structure compare part has many usability problems

  1. The problem is that the things you are interested in (the leaves of the tree) are continually scrolled out of view and separated by a great distance when the tree is expanded, making it hard to see at a glance what has changed. It also makes multi-selection operations very painful, for example comitting a set of related files that should have the same comment. (12453, 16249) [M2]
  2. There are several also several expansion/selection usability problems with the part. (35187, 33041, 4931, 5431, 20847, 27237, 16249)
  3. Synchronize view modes (filtering) and conflict workflows must be improved (10556, 9451, 139, 19712) [M2]

Finding the outgoing changes requires a long running operation

To commit outgoing changes you have to hit the server. This is really painful since the list of outgoing changes can be determined without considering the remote files. [M2]

Synchronization view doesn't fit with workbench view/editor paradigm

The sync view is essentially an editor and a view combined. Unfortunatly they don't quite work as any other view/editor combination in the workbench.What would happen if we split the structure compare away and made that a view on the sync states of all resources in the workbench and then allowed opening a compare editor (basically the bottom portion) when merging or viewing changes was required? [M2]

Background fetching of remote state

Currently when a project is synchronized the complete remote tree is fetched and a progress dialog is shown. The user can't perform any other operation while the remote tree is fetched. There is no reason why this couldn't be fetched in the backgroup without blocking the UI and would allow an awareness of what other people in the team are working on and help reduce the time needed to find out what others are doing. [M2]

Java text merge editor isn't real

Would like to use real editors for merging instead of the neutered ones currently used. For example, the java editor shown in the sync view looks real (e.g. syntax coloring) but is a scaled down java editor. This causes integration and context problems because it is very useful to try and write code in these editors without resorting to opening the file with the real java editor. Then going back to the sync view only to find that the file hasn't refreshed.

Compare editors (merge/compare) versus sync view

The terminology and look and feel of the merge editor and sync view is different. Basically a merge is the same as synchronizing except for the fact that you can't commit changes. Merging is already a tricky operation and having a conflicting usage model between the sync and merge makes it even harder. (35577) [M2]

Comparison criteria is not well integrated into compare

The comparison criteria that is used to calculate the sync state is hidden from the user and it isn't obvious for them when the criteria should be changed and what advantage it will have. (24887, 21612, 28143) [M3]

[CVS] Synchronizing against an existing project is not well supported

This is somewhat of a CVS problem but relates to the more general issue of when to change the comparison criteria. (21612)

Solution

In the 3.0 M2 release a new Synchronize view will be made available. Not only does the view look different but synchronization workflows have changed, we hope for the better, based on the feedback that we have received over the last two years. Here is a summary of the features of the new sync view:

General features

CVS features

Issues

Upcomming features

Where to go from here?