| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| |
| <head> |
| <title>Team Synchronizing</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css"> |
| </head> |
| |
| <body bgcolor="#ffffff" text="#000000"> |
| |
| <table border="0" cellspacing="5" cellpadding="2" width="100%"> |
| <tbody> |
| <tr> |
| <td align="left" valign="top" bgcolor="#0080c0"> <b><font color="#ffffff" face="Arial,Helvetica"> |
| Improving the synchronize view - Eclipse 3.0</font></b> </td> |
| </tr> |
| </table> |
| |
| <p>Why change it? Because there were many <a href="https://bugs.eclipse.org/bugs/buglist.cgi?short_desc_type=allwordssubstr&short_desc=Sync%2BView&product=Platform&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&namedcmd=All%2BOpen%2BVCM%2BP1P3&newqueryname=&order=Reuse%2Bsame%2Bsort%2Bas%2Blast%2Btime&field0-0-0=noop&type0-0-0=noop&value0-0-0=">open</a> |
| 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. </p> |
| <h1>Problems</h1> |
| <p>In brackets is the 3.0 milestone build where the problem has been addressed.</p> |
| <p><strong>Structure compare part has many usability problems</strong></p> |
| <ol> |
| |
| <li>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. (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12453">12453</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16249">16249</a>) [<strong><em>M2</em></strong>] |
| </li> |
| <li>There are several also several expansion/selection usability problems |
| with the part. (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35187">35187</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33041">33041</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=4931">4931</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5431">5431</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20847">20847</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27237">27237</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16249">16249</a>)</li> |
| |
| <li>Synchronize view modes (filtering) and conflict workflows must be improved |
| (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=10556">10556</a>, <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9451">9451</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139">139</a>, <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19712">19712</a>) |
| <strong> <em>[M2]</em></strong> </li> |
| </ol> |
| <p><strong>Finding the outgoing changes requires a long running operation</strong></p> |
| <blockquote> |
| |
| <p>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. [<strong><em>M2</em></strong>]</p> |
| </blockquote> |
| <p><strong>Synchronization view doesn't fit with workbench view/editor |
| paradigm</strong></p> |
| <blockquote> |
| |
| <p>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? [<strong><em>M2</em></strong>]</p> |
| </blockquote> |
| <p><strong>Background fetching of remote state</strong></p> |
| <blockquote> |
| |
| <p>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. <em><strong>[M2]</strong></em></p> |
| </blockquote> |
| <p><strong>Java text merge editor isn't real</strong> </p> |
| <blockquote>Would like to use <em>real</em> editors for merging instead |
| of the <em>neutered</em> 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.</blockquote> |
| <p><strong>Compare editors (merge/compare) versus sync view</strong></p> |
| <blockquote> |
| |
| <p>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. (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35577">35577</a>) |
| [<strong><em>M2</em></strong>] </p> |
| </blockquote> |
| <p><strong>Comparison criteria is not well integrated into compare</strong> |
| </p> |
| <blockquote> |
| |
| <p>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. (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24887">24887</a>, |
| <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21612">21612</a>, <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28143">28143</a>) |
| <em> <strong>[M3]</strong></em> </p> |
| </blockquote> |
| <p><strong>[CVS] Synchronizing against an existing project is not well |
| supported</strong> </p> |
| <blockquote> |
| <p>This is somewhat of a CVS problem but relates to the more general |
| issue of when to change the comparison criteria. (<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21612">21612)</a></p> |
| </blockquote> |
| <h1>Solution</h1> |
| <p>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:</p> |
| <p><strong>General features</strong></p> |
| |
| <ul> |
| <li>The old sync view used to be static, you would synchronize a project(s) |
| and the sync view would display the resources of interest. The new view is |
| dynamic that listens to changes in the workspace and updates the synchronization |
| states of local resources automatically.</li> |
| <li>The old sync view would only allow one 'type' of projects to be shown at |
| a time, and switching between them would require a long running operation. |
| For example, if you you were using FTP and CVS you would and only wanted to |
| see your local changes you had to pick the projects and synchronize them seperatly |
| with each provider. Now, both are registered with the sync view and can be |
| toggled quickly.</li> |
| <li>Can show the changes in either a table and tree view.</li> |
| <li>Instead of embedding the compare views into the sync view, file comparisons |
| are shown in a compare editor. Clean compare editors are re-used so that your |
| editor space is not overloaded and dirty compare editors are left untouched. |
| This switch allows you to have multiple changed compare editors open without |
| being forced to save automatically. This wasn't possible in the old sync view.</li> |
| <li>Merges are shown in the sync view. This simplifies the merge actions and |
| allows for merges to be long lived. For example, in CVs wihle working in a |
| branch you can setup to merge the changes in HEAD into your branch. This merge |
| configuration will be saved between sessions and you can easily keep your |
| branch up-to-date with changes in HEAD. When then merge is complete you can |
| Cancel the merge from the views pulldown menu.</li> |
| <li>Synchronizations are performed in the background and scheduled refreshes |
| can be configured.</li> |
| <li>The changes available in a workspace are shown in the view's title bar. |
| This can help the user be more resources aware and understand if the active |
| filter is filtering out changes.</li> |
| <li>There is a Team Synchronizing perspective which helps users who used the |
| sync view as a fast view.</li> |
| </ul> |
| <p><strong>CVS features</strong></p> |
| |
| <ul> |
| <li>You can perform any of the Team > CVS operations on the elements in the |
| sync view (e.g. create patch, replace with remote, show history)</li> |
| <li>Simpler operations in the sync view. You can update/commit in any mode. |
| The prompts will give you more information about what files will be overwritten.</li> |
| <li>CVS merges now appear in the sync view and will be persisted between sessions |
| until the merge is cancelled.</li> |
| <li>Team > Synchronize with Repository creates a light weight working set |
| and enables for the sync view. This allows selecting a subset of resources |
| to be shown in the sync view.</li> |
| </ul> |
| <p><strong>Issues</strong></p> |
| <ul> |
| <li>There are two CVS Update/Commit actions in the context menu. Use |
| those at the first level since the onces under Team won't do the right |
| thing. This will be fixed when UI supports actions override for contexts.</li> |
| <li>Revision numbers aren't shown in the compare editor.</li> |
| <li>Better multiple selection support</li> |
| <li>Support for basic navigator actions (e.g. rename, delete...)</li> |
| </ul> |
| |
| <p><strong>Upcomming features</strong></p> |
| <ul> |
| <li>Have the compare editor display the structure diff in an outline window.</li> |
| <li>Key bindings for CVS actions</li> |
| <li>Object contribution override will be supported so only one Update/Commit |
| will be shown</li> |
| <li>FTP and Dav plugins will be migrated to the new sync view.</li> |
| <li>It would be cool to have the comment and user name shown for incoming changes</li> |
| </ul> |
| <h1><strong>Where to go from here?</strong></h1> |
| <ul> |
| <li>A <a href="#new">prototype</a> has been released with the goal of removing |
| the existing Team > Synchronize actions by the M2 milestone</li> |
| <li>Incorporate feedback into new sync view</li> |
| <li>Continue to solve the <a href="#issues">issues</a> listed below</li> |
| <li>By M3 have ISVs that where using the internal API over to the new public |
| API</li> |
| </ul> |
| </body> |
| </html> |