|  | <!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> |