Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 146917 - [Sync View] Allow to mix multiple team providers within single synchronization
Summary: [Sync View] Allow to mix multiple team providers within single synchronization
Status: CLOSED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Team (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 enhancement with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Platform Team Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords:
: 339031 358354 (view as bug list)
Depends on: 37705
Blocks:
  Show dependency tree
 
Reported: 2006-06-13 16:43 EDT by Eugene Kuleshov CLA
Modified: 2019-11-14 03:09 EST (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eugene Kuleshov CLA 2006-06-13 16:43:09 EDT
There are cases when projects are using different version control systems, e.g. for historical reasons or while migrating. When dealing with those one would have to create multiple synchronizations and it is difficult navigate trough changes when they are broken across multiple synchronizations.
Comment 1 Bogdan Gheorghe CLA 2006-06-14 14:24:00 EDT
One hurdle to getting this going is figuring out how to provide a common triggering mechanism. Currently, all repo providers contribute their own actions to the Team menu and Sync is driven by that (or by creating a new synchronization in the sync view). One possibility would be to have some way of adding more than one repository type when creating a new synchronization. Needs further investigation.
Comment 2 Eugene Kuleshov CLA 2006-06-14 14:45:29 EDT
Hmm. Why do you mark it resolved then? You could at least use "remind later" resolution...
Comment 3 Bogdan Gheorghe CLA 2006-06-14 15:51:26 EDT
To clarify: while this could be an interesting feature, the problem is that as a platform, Eclipse can only "speak" for CVS. We can't provide an implentation of a generic sync action for all other repo providers that integrate with Eclipse, and unless we can get a broad consensus from most other repo providers, we wouldn't feel comfortable forcing this type of API on them. 
Comment 4 Eugene Kuleshov CLA 2006-06-14 16:00:31 EDT
Hmm. I would expect that platform should provide enough plugability to 3rd party providers to fit nicely into the developers activities... It is been pointed out before, but current Team API is designed based on CVS and has number of shortcomings that make it difficult for other providers to do certain tasks or have to reimplement same functionality over again.

Besides, there is need from other tools (like Mylar) to be able to interact with Team providers and execute certain tasks (for instance, commit, create and apply patch) and none of this stuff has been made a standard API.
Comment 5 Michael Valenta CLA 2006-06-14 16:39:07 EDT
There are two things that are at odds here. What you are saying is that you work with multiple repositories and would like a unified view of those repositories. What repository providers want is the ability to provide a repository specific UI so that they can surface the feature that make their tooling stand apart from other repository tooling.

We tried to have a unfied Synchronize view in Eclipse 1.0 and it was a failure because it provided the lowest common denominator. What we did in 2.0 is provide a set of low level integration points so that repository providers could surface their UI as they saw fit. Both the repository providers and the users were much happier with this architecture.

Since 2.0, we have provided a CVS workflow that we, as Eclipse developers, like. Other users have indicated that they like it as well so we've made some of the pieces of this architecture API so that other repository providers could benefit from it if they desired. However, they are not required to do so and can provide their own workflows if they prefer.

So, with that in mind, it is OK if we define optional Team API that others can choose to use or not. What we don't want to do is force repository providers to implement Team API in order to integrate into the Platform without their involvement in the genesis of that API. As you say, we, the Eclipse Team/CVS Team have not done a good job at defining generally useful API (i.e. it has been too CVS specific). Therefore, from your own argument it would be a mistake for us to define the API for a generic sync view. The API would only succeed if a good cross section of repository vendors were involved in its design. JSR 147 (mentioned in bug 37705) is such an effort.
Comment 6 Eugene Kuleshov CLA 2006-06-14 16:49:47 EDT
Michael, JSR 147 is probably the way to go for a long term, but now it would make sense to at least handle common providers. There is already synchronization model supported by sync view, so why can't it allow aggreagtion of different providers? At least for some most popular providers... 

Also, it doesn't look like JSR 147 API is a good fit for high level operations such as commit, cheate patch, etc that are typicaly bound to Eclipse workspace ot even to specific synchronization.
Comment 7 Michael Valenta CLA 2006-06-14 17:08:29 EDT
Integration into the Synchronize view can happen at many levels and the repository providers can provide customized actions in the toolbar, view menu and context menu. In essence, what your proposal would require is a single level of integration into the Synchronize view with a unified set of actions. That is not something we want to force on repository providers.
Comment 8 Eugene Kuleshov CLA 2006-06-14 18:13:42 EDT
(In reply to comment #7)
> Integration into the Synchronize view can happen at many levels and the
> repository providers can provide customized actions in the toolbar, view menu
> and context menu. In essence, what your proposal would require is a single
> level of integration into the Synchronize view with a unified set of actions.
> That is not something we want to force on repository providers.

Provider-specific actions could go into node-specific popup menu in the same way as in package explorer or navigator views. Personally I find toolbar actions really confusing, especially with that jumpy-buggy behavior of the current view toolbars.

It should be ok to restrict actions like commit, create patch, etc. to single provider, but still allow integration tools to use common API to invoke such actions. I believe we have a separate bug report for that already.
Comment 9 Mik Kersten CLA 2006-09-13 21:40:48 EDT
I can appreciate this tension between keeping the API think thereby giving more control to the providers.  However, it can result in a problematic user experience for those that use more than one repository, and many developers are forced to check out the sources of the APIs that they depend on.

Personally, I rely heavily on the Synchronize view always showing me the diff between my workspace and the rest of the world that I find it confusing to have no way of knowing that there are changes in a SVN or FTP synchronization when I've got my CVS synchronization up (most of the time).

So I wonder if this can be finessed by the UI.  For example, how about providing a mode, called All Synchronizations, in which the top-level nodes are the individual Synchronizations (or Change Sets containing synchronizations)?  Each provider can still get it's own context menu, schedule, etc, but at least multiple synchronizations would be visible. 
Comment 10 Eugene Kuleshov CLA 2006-09-13 21:44:43 EDT
By the way, Michael, isn't Synchronize view already using common navigator framework? For some reason I thought that it does allow to have different actions depends on the model.
Comment 11 Michael Valenta CLA 2006-09-14 08:28:40 EDT
The Synchronize view is just a paged based view to which repository providers can plug in pages. We do provide a page implementaion to repository providers that makes use of the Common Navigator framework in order to allow the repository provider to delegate the rendering of the Synchronization state to the models involved. However, it is up to the repository provider to decide whether they want to use the page we provide or if they want to role their own page (or even provide their own view).
Comment 12 Eugene Kuleshov CLA 2006-10-03 20:52:32 EDT
Michael, can you please clarify how exactly that page would work for CVS provider and some other one? I am not sure how can user select two different provider types to be shown on the same sync page. Unless CVS provider is also not using this feature... Thanks.
Comment 13 Michael Valenta CLA 2006-10-06 08:55:15 EDT
Eugene, I'm not sure what you are asking. Are you asking me to speculate on what this feature would require? Or are you asking about the current shape of the Synchronize view framework?
Comment 14 Eugene Kuleshov CLA 2006-10-06 10:12:16 EDT
(In reply to comment #13)
> Eugene, I'm not sure what you are asking. Are you asking me to speculate on
> what this feature would require? Or are you asking about the current shape of
> the Synchronize view framework?

Michael, you said that: "We do provide a page implementaion to repository providers that makes use of the Common Navigator framework in order to allow the repository provider to delegate the rendering of the Synchronization state to the models involved. However, it is up to the repository provider to decide whether they want to use the page we provide or if they want to role their own page (or even provide their own view)."

So, I am asking if CVS provider does using sync page provided by team plugin? If so, how other plugins could add their synchronizations to that page in order to see their changes on the same page with CVS? I am confused, because it is not obvious from the Synchronization wizard UI.
Comment 15 Michael Valenta CLA 2006-10-06 10:30:57 EDT
Team provides a bunch of interfaces and abstract superclasses the repositories can implement. They are describe here in the ISV doc:

http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/team_model_repo.htm

CVS makes use of the classes provided by Team to create a CVS specific Synchronize view. The framework is not structured in such a way to allow other repository providers to put their Synchronization results in the same page as CVS. It requires them to have their own page.

If I was to speculate on a good starting point for supporting a page that shows results from multiple repositories, I would say that it would require an IMergeContext that delegated to the appropriate repositories IMergeContext. The problem is that you would need a command/action that knew how to build the merge contents for all the repositories involved. Also, this is only a starting point and there would be many more details that would need to be worked out (e.g. how would you surface the commit operation in the sync view).
Comment 16 Denis Roy CLA 2009-08-30 02:21:49 EDT
As of now 'LATER' and 'REMIND' resolutions are no longer supported.
Please reopen this bug if it is still valid for you.
Comment 17 Tomasz Zarna CLA 2011-03-14 05:01:47 EDT
*** Bug 339031 has been marked as a duplicate of this bug. ***
Comment 18 Tomasz Zarna CLA 2011-09-26 07:16:34 EDT
*** Bug 358354 has been marked as a duplicate of this bug. ***
Comment 19 Tomasz Zarna CLA 2011-09-26 07:19:14 EDT
Reopening the bug.
Comment 20 Lars Vogel CLA 2019-11-14 03:09:58 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

If the bug is still relevant, please remove the "stalebug" whiteboard tag.