Tighter integration of CVS components into Team API
https://bugs.eclipse.org/bugs/show_bug.cgi?id=82074
Team/CVS Developers,
I'm a contributor to the open source ClearCase plug-ins for Eclipse and
recently started using the subclipse plug-ins. I noticed a lot of code
duplications during the ClearCase development and I found a lof of
similarities in the subclipse plug-ins.
IMHO the CVS compontent contains a lot code that should be generalized
and moved to the team component. Currently the development of new team
plug-ins is extremly time consuming. Developers has to implement a lot
of components themself and need a high level knowledge of Eclipse
development.
They need to implement a lot of things themself:
* repository provider
* move/delete hook
* modification listener
* preference pages
* decorator with preference page
* repository view
* history view
* diff/merge view
* version tree
* synchonrization participants
This a very expensive path. It's time consuming and prone to errors.
When speaking of the open source ClearCase integration, all this can be
generalized by providing all these components through a the team
component and simply moving the SCM dependen API to a single interface.
Thus, team plug-in providers only need to implement ONE simle interface
and register it as extension. I expect also the Subversion plug-ins to
benefit from this. New features (such as the preview for the label
decorator) would be available to all plug-ins immediately.
The interface could look like:
public interface ISCMInterface {
/**
* Adds a file to the repository the parent container belongs to.
*
* @param file
* the file to add
* @param pm
* the progress monitor (maybe <code>null</code> if not
cancelable)
* @param comment
* the changelog comment (maybe <code>null</code>)
* @param hints
* HINTS for performing the operation
* <ul>
* <li>FORCE</li> - force the operation (will also add
parents if necessary)
* <li>COMMIT</li> - commit after successful add
* </ul>
* @return resource status containing the new resource information
(such as version info, modification state) of all changed resources.
* @throws TeamException if the operation failed
*/
ISCMResourceStatus[] addFile(IFile file, IProgressMonitor pm, int
hints) throws TeamException;
....
}
Received on Mon Jan 3 17:55:45 2005