subversion - svn connector eclipse oxygen
Desarrollo de complementos de Eclipse: obtención de información del proveedor del equipo (3)
Soy muy nuevo en el desarrollo de complementos de eclipse. El obstáculo más grande que estoy enfrentando ahora es dónde / cómo obtener los datos de varios otros complementos. Me está costando mucho encontrar documentación para esto. Por ejemplo, el complemento Proveedor de equipo ...
- ¿Cómo leo la revisión svn de un archivo? Digamos que tengo un IResourceChangeListener y quiero hacer un seguimiento del número de revisión svn de un archivo (si el usuario hizo una actualización, por ejemplo).
- Si quiero preguntarle a svn si hay actualizaciones pendientes para un proyecto, ¿cómo hablo con el proveedor del equipo eclipse?
No estoy seguro de por donde empezar...
¡Gracias!
Un punto de partida sería explorar las fuentes de subversivo para ver cómo hicieron su implementación de las características que está describiendo.
Las fuentes para eclipse.team
(el módulo común para todos los complementos de VCS) están disponibles en un repositorio de Git .
Las fuentes de EGit , otro complemento de VCS (para Git) también pueden ser instructivas.
Para obtener información general sobre Team API en la plataforma Eclipse, revise la documentación en el sistema de ayuda.
http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/team.htm
(Si está trabajando con el material del suscriptor, parece que se menciona en el tema "Soporte de sincronización" -> "Más allá de lo básico").
El documento de Java para los paquetes de equipo también ayuda a:
Si intenta integrar o ampliar los proveedores de Subclipse o Subversive Team, puede que tenga más suerte haciendo su pregunta en sus foros:
Finalmente descubrí lo que estaba buscando después de muchas horas de búsqueda. Lamentablemente, dado que tengo menos de 100 rep. No he podido publicar hasta ahora ...
Estoy haciendo un pequeño progreso en esto. Al azar tropecé con esto mientras vertía a través del código fuente de eclipse.
El siguiente fragmento de código supervisa todo lo que sucede con respecto a un proyecto habilitado para svn. Si guarda un archivo, a una actualización, revertir etc. Cualquier cosa que toque los archivos o los metadatos de los archivos. Simplemente imprimo el nombre del archivo / direcory y su número de revisión.
Versión subversiva:
final Subscriber subscriber = UpdateSubscriber.instance();
subscriber.addListener(new ISubscriberChangeListener() {
@Override
public void subscriberResourceChanged(ISubscriberChangeEvent[] events) {
for(ISubscriberChangeEvent event : events) {
UpdateSyncInfo info = (UpdateSyncInfo) subscriber.getSyncInfo(event.getResource());
System.out.println(event.getResource().getName()+" revision: "+uInfo.getLocalResource().getRevision());
}
}
});
El verdadero truco fue averiguar el punto de entrada para obtener esta información: UpdateSubscriber. Sería bueno si hubiera un buen recurso para encontrar este tipo de información.
Versión de Subclipse:
private static final Subscriber subscriber = SVNWorkspaceSubscriber.getInstance();
private static final ISubscriberChangeListener subsciberListener = new ISubscriberChangeListener() {
@Override
public void subscriberResourceChanged(ISubscriberChangeEvent[] events) {
try {
for (ISubscriberChangeEvent event : events) {
SVNStatusSyncInfo info = (SVNStatusSyncInfo) subscriber.getSyncInfo(event.getResource());
System.out.println(event.getResource().getName() + " revision: " + info.getRepositoryRevision());
}
} catch (TeamException e) {
}
}
};
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
subscriber.addListener(subsciberListener);
}
@Override
public void stop(BundleContext context) throws Exception {
subscriber.removeListener(subsciberListener);
super.stop(context);
}