Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 344888 - [sync] Improve user experience in synchronize wizard
Summary: [sync] Improve user experience in synchronize wizard
Status: RESOLVED FIXED
Alias: None
Product: EGit
Classification: Technology
Component: UI (show other bugs)
Version: 0.12   Edit
Hardware: PC Linux
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Dariusz Luksza CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-05 15:15 EDT by Dariusz Luksza CLA
Modified: 2011-06-13 14:52 EDT (History)
1 user (show)

See Also:


Attachments
First page of described wizard workflow with predefined configurations (6.27 KB, image/png)
2011-05-05 15:15 EDT, Dariusz Luksza CLA
no flags Details
Second wizard page with custom configuration (6.52 KB, image/png)
2011-05-05 15:16 EDT, Dariusz Luksza CLA
no flags Details
Project-driven sync wizard page. (44.46 KB, image/png)
2011-05-05 18:14 EDT, Kevin Sawicki CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dariusz Luksza CLA 2011-05-05 15:15:42 EDT
Created attachment 194873 [details]
First page of described wizard workflow with predefined configurations

First of all the current implementation of synchronize wizard isn't fully functional comparing to sync-dialog available from project's 'Team' menu. It doesn't allow to select source branch and enable/disable showing local changes. Both UI should offer same functionality for the user.

Secondly launching synchronization via sync-wizard requires lots of mouse clicks. IMHO we should reduce amount of required click by providing easily available synchronize configurations like:
* synchronize workspace
* compare with remote tracking branch
Apart from that we should also give possibility to launch custom synchronization where user would have full control of source and destination branch and workspace changes

IMHO synchronize wizard should contain two pages. On first user can choose between two described above predefined configurations. When one of those configuration would be selected he should be able to immediate finish wizard and launch synchronization. When none of this configuration fits his needs he should select 'custom' option and go to the next wizard page where he can fill proper configuration
Comment 1 Dariusz Luksza CLA 2011-05-05 15:16:26 EDT
Created attachment 194874 [details]
Second wizard page with custom configuration
Comment 2 Kevin Sawicki CLA 2011-05-05 16:38:50 EDT
I think the wizard should be project driven with a project per row in the table.

Then the Synchronize... action on project selections would just open the wizard
with those projects initially checked.

I would be happy to submit an extension of your current patch with what I am
proposing.
Comment 3 Dariusz Luksza CLA 2011-05-05 16:50:03 EDT
(In reply to comment #2)
> I think the wizard should be project driven with a project per row in the
> table.

Why do you think it should be 'project driven' ? IMHO this can be some times miss leading, because user expect to synchronize only project that he selected not whole repository. But from the second hand we already have similar approach in package explorer where synchronization initially launched from project's context menu displays changes in repository (not only in selected project); but in this case we didn't have any choice.

> Then the Synchronize... action on project selections would just open the wizard
> with those projects initially checked.

This seams to be a good idea to have one UI for 'custom' synchronization configuration.

> I would be happy to submit an extension of your current patch with what I am
> proposing.

TBH yours proposition with 'project driven' wizard doesn't fits me, but I'm not a regular user ;) Of course feel free to modify my changes.
Comment 4 Matthias Sohn CLA 2011-05-05 18:07:38 EDT
Maybe the approach Mathias took by replacing a complicated branch dialog by a dynamic "Switch to" menu could also help here for the most common source/target combinations.

We could have a similar menu listing the newest n branches and tags
(including not yet committed modifications) and providing a dialog for 
the less frequently used options:

"Synchronize workspace with"
         |
          --- master
          --- foo
          --- bar
          --- origin/master
          --- origin/stable-0.12
          --- origin/stable-0.11
          --- tags/v0.12.1
          --- tags/v0.12.0
          --- tags/v0.10.1
          --- Other...
Comment 5 Kevin Sawicki CLA 2011-05-05 18:14:27 EDT
The reason I am suggesting project-driven is that other team providers display projects
in their wizards so users are familiar project-driven synchronization.

Also, doesn't the synchronize view only display files that are in projects?
Comment 6 Kevin Sawicki CLA 2011-05-05 18:14:51 EDT
Created attachment 194892 [details]
Project-driven sync wizard page.
Comment 7 Kevin Sawicki CLA 2011-05-05 18:18:04 EDT
I would expect the Synchronize... from a project selection to open the Sync wizard with Source being HEAD
and Destination being the name of my currently checked out branch with the "include local resources" option checked.

When opened from the Synchronize view drop-down menu I would expect all projects to be checked, with 
the source branch being HEAD, the Destination being the name of the currently checkout branch for that project's
repository and the "include local resources" option checked.
Comment 8 Kevin Sawicki CLA 2011-05-05 18:19:21 EDT
Another reason to go with project-driven would be to support a Scope section in the wizard
where workspace, working sets, or selected resources are radio options similar to the
CVS synchronize wizard page.
Comment 9 Dariusz Luksza CLA 2011-05-05 18:24:47 EDT
(In reply to comment #4)
> Maybe the approach Mathias took by replacing a complicated branch dialog by a
> dynamic "Switch to" menu could also help here for the most common source/target
> combinations.

This sounds like a good idea. But maybe we could also leave a shortcut for comparing with HEAD eg:

Synchronize Workspace
Synchronize...
     |
          --- master
          --- foo
          --- bar
          --- origin/master
          --- origin/stable-0.12
          --- origin/stable-0.11
          --- tags/v0.12.1
          --- tags/v0.12.0
          --- tags/v0.10.1
          --- Other...

Maybe we should also always use current HEAD branch as a source and don't allow users to change this? (this approach can simplify some things)

(In reply to comment #5)
> The reason I am suggesting project-driven is that other team providers display
> projects
> in their wizards so users are familiar project-driven synchronization.

OK, this seams reasonable.

> Also, doesn't the synchronize view only display files that are in projects?

By default it doesn't display non-workspace files ... but 'Git Change Set' model can display non-workspace files and even show compare view for them ;)
Comment 10 Dariusz Luksza CLA 2011-05-05 18:27:29 EDT
(In reply to comment #7)
> I would expect the Synchronize... from a project selection to open the Sync
> wizard with Source being HEAD
> and Destination being the name of my currently checked out branch with the
> "include local resources" option checked.

Actually I would reduce as much as we can the number of clicks between showing context menu and showing sync results. Ideally IMHO this action in 80% of cases  should be started by one click therefore (currently) I'm huge fan of having 'Synchronize Workspace' option in context menu.
Comment 11 Kevin Sawicki CLA 2011-05-05 18:33:49 EDT
(In reply to comment #10)
> (In reply to comment #7)
> > I would expect the Synchronize... from a project selection to open the Sync
> > wizard with Source being HEAD
> > and Destination being the name of my currently checked out branch with the
> > "include local resources" option checked.
> 
> Actually I would reduce as much as we can the number of clicks between showing
> context menu and showing sync results. Ideally IMHO this action in 80% of cases
> should be started by one click therefore (currently) I'm huge fan of having
> 'Synchronize Workspace' option in context menu.

That sounds good, the fewer clicks the better.
Comment 12 Dariusz Luksza CLA 2011-05-09 15:57:49 EDT
(In reply to comment #11)
> That sounds good, the fewer clicks the better.

So I would think that we should also remove 'Source' column from the wizard and always use current branch as source. Such approach would also simplify things in context-menu-actions in synchronize view.
Comment 13 Kevin Sawicki CLA 2011-05-09 16:26:02 EDT
I like that idea as well.
Comment 14 Dariusz Luksza CLA 2011-05-11 18:14:48 EDT
Here is sync-wizard implementation based on our discussion:
http://egit.eclipse.org/r/#change,3392
Comment 15 Matthias Sohn CLA 2011-05-13 17:23:35 EDT
I hate the page where I have to select the synchronization type, can't this be left out in some way ?
Comment 16 Matthias Sohn CLA 2011-05-24 18:51:34 EDT
(In reply to comment #14)
> Here is sync-wizard implementation based on our discussion:
> http://egit.eclipse.org/r/#change,3392

merged as c568a6a61ac0b11aedbd399807401496957a0c83

can we close this now ?
Comment 17 Dariusz Luksza CLA 2011-06-13 14:52:20 EDT
Yes I think we can close it.