Bug 116084 - [API] Make ChangeSetProvider and friends API
Summary: [API] Make ChangeSetProvider and friends API
Status: ASSIGNED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Team (show other bugs)
Version: 3.2   Edit
Hardware: All All
: P5 enhancement with 7 votes (vote)
Target Milestone: ---   Edit
Assignee: Platform Team Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted
Depends on:
Blocks: 233055 267827
  Show dependency tree
 
Reported: 2005-11-11 17:04 EST by Brock Janiczak CLA
Modified: 2019-09-06 16:19 EDT (History)
12 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brock Janiczak CLA 2005-11-11 17:04:09 EST
Version: 3.2.0
Build id: I20051102-1600

All of the ChangeSetProvider classes are marked internal.  While these classes
are internal, we can not add the change set feature to Subclipse.

I have implemented a simple change set provider for Subclipse that does not yet
supported checked in changesets.  I could attach it here if you wanted to see
another implementation.

Could ChangeSetProvider be considered for includion in the 3.2 API?
Comment 1 Eugene Kuleshov CLA 2005-11-12 21:50:36 EST
I agree with Brock, if this API is internal, many 3rd party plugins, including
Subclipse won't consider implementing the feature. Also, many vendors don't even
consider to support integration Eclipse builds, primarily because of
dependencies on derived tools (like Rational), so if this feature won't make
into next public release it will delay adoption.

Another thing I'd like to mention that some plugins can use their own metadata
to create commit sets, e.g. Mylar is using unformation about changes that
happens within specific task context. So, it is important that commit set API is
used by all team providers.
Comment 2 Michael Valenta CLA 2005-11-13 22:01:26 EST
Our original intention was to make this API in 3.1 but we didn't have the 
manpower to complete it. Now, in 3.2, our main focus is logical model 
integration (bug 37723). This new support will have an impact on the 
synchronization API. Because of this, I think it would be unwise for the 
change set code to be made API until the logical model support API is 
finalized. Given the tight schedule the platform is on, it is not likely that 
we will have time to address this in 3.2.
Comment 3 Mik Kersten CLA 2006-09-13 20:13:27 EDT
Is this on the table for 3.3?  It looks like both Subclipse and Subversive are relying on it now, and others will doubtlessly need it.  I'm voting for this because Mylar users benefit from team providers having change set support (http://wiki.eclipse.org/index.php/Mylar_Integrator_Reference#Integrating_Team_Providers).
Comment 4 Michael Valenta CLA 2006-09-13 20:48:53 EDT
There are actually two orthogonal issues here. This request is to make the outgoing change set support that is used by CVS API so that other repositories that do not have the first class notion of an outgoing change set (like subversion) can reuse the implementation. I have been contemplating whether or not to put this in 3.3 but we have a lot on our plates so I don't know if we can find the cycles to implement and maintain the API. I'll tag this as 3.3 just so it stays on our radar but I can't make any guarantees.

The other issue that is being piggy backed on this one is the desire to have a third party change set API so that clients like Mylar can create repository change sets. It is mentioned in comment 1 that it is important that all team providers implement this so that third party clients can have this capability. The problem is that there are repository providers out there that have a first class notion of an outgoing change set already so they would never want to use the Eclipse API (i.e.ActiveChangeSet class and friends). That is why it is important to keep these two issues separate. It is good for Mylar to want to define an API that allows them to interact with repository change sets. However, I think it is a mistake to use the ActiveChangeSet directly for this. In essence you will be excluding all repositories that have a first class notion of outgoing change sets from interating fully with Mylar. I don't know what the Mylar architecture is like but I hope that it does not (or will not in the future) depend on ActiveChangeSets directly. A better approach would be to define an independant API that meets the needs of Mylar and then build a bridge between that and ActiveChangeSets so that any repository can integrate with Mylar.
Comment 5 Michael Valenta CLA 2006-12-05 09:57:15 EST
We do not have the manpower to address this issue in 3.3.
Comment 6 Mik Kersten CLA 2007-06-20 18:59:44 EDT
We'll consider the priority of this when doing Mylyn 3.0 planning and if it is high enough try to contribute a solution since we are inherently coupled to the change set internals.
Comment 7 Mik Kersten CLA 2008-06-11 13:32:44 EDT
We made some progress on this for Mylyn 3.0 and managed to de-couple the Mylyn Team API from CVS internals (bug remove bug 191793).  

Our single remaining API leak in Mylyn 3.0 is ActiveChangeSetManager, which is still required by our Team API.  This means that clients using our the Mylyn Team API will need to couple to Platform Team internals.  In other words, we still don't have a proper API here and fail to insulate clients from the ActiveChangeSetManager internals.  We considered making a non typesafe facade that would ensure binary compatibility, but that layer of indirection seemed to be more of a disservice to integrators due to the extra layer of indirection and lack of an API Tooling warning.

We almost succeeded at providing a proper facade for ActiveChangeSetManager and friends by hooking up our own teamContentProvider that allowed extensions to specify their own change set models to be specified (e.g. our CVS extension specified org.eclipse.team.cvs.core.changeSetModel).  This didn't work because the Team API is, probably quite sensibly, not designed to support this kind of overriding/shadowing.  For the next Mylyn release cycle we will look into what it would take to create our own API as per comment#4.  The fear we have is that we would copy and re-implement way too much of the current internal change set management which already does everything we need, but perhaps there is more elegant solution possible.
Comment 8 Eclipse Webmaster CLA 2019-09-06 16:19:14 EDT
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.