Разработка плагинов Eclipse - получение информации от Team Provider - PullRequest
4 голосов
/ 10 августа 2011

Я очень новичок в разработке плагинов Eclipse. Самое большое препятствие, с которым я сталкиваюсь сейчас, это где / как получить данные из различных других плагинов. У меня очень трудно найти документацию для этого. Например, плагин Team Provider ....

  1. Как мне прочитать svn-версию файла? Допустим, у меня есть IResourceChangeListener, и я хочу отслеживать номер версии SVN файла (если пользователь, например, сделал обновление).
  2. Если я хочу спросить svn, есть ли ожидающие обновления для проекта, как мне поговорить с поставщиком команды eclipse?

Я не уверен, с чего начать ...

Спасибо!

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

В конце концов я обнаружил, что искал после многих часов поиска. К сожалению, так как у меня менее 100 представителей. Я не могу оставлять сообщения до сих пор ....

Я немного прогрессирую в этом. Я случайно наткнулся на это, проливая исходный код Eclipse.

Следующий фрагмент кода отслеживает все, что происходит в отношении проекта с поддержкой svn. Если вы сохраняете файл, обновляете, возвращаете и т. Д. Все, что касается файлов или метаданных файлов. Я просто распечатываю имя файла / директории и номер его ревизии.

Подрывная версия:

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());
        }
    }
});

Настоящая хитрость заключалась в том, чтобы выяснить точку входа для получения этой информации: UpdateSubscriber. Было бы неплохо, если бы был хороший ресурс для выяснения такого рода информации.

Версия субклипса:

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);
}
1 голос
/ 12 августа 2011

Для получения общей информации о Team API в платформе Eclipse просмотрите документацию в справочной системе.

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

(Если вы работаете с материалами подписчика, этоПоявляется в разделе «Поддержка синхронизации» -> «Помимо основ».)

Документация Java для пакетов team также помогает:

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/team/core/package-summary.html

Если вы пытаетесь объединиться или иным образом расширить Subclipse или провайдеров Subversive, вам может повезти, задав свой вопрос на их форумах:

http://subclipse.tigris.org/ds/viewForums.do

http://www.eclipse.org/subversive/newsgroup.php

0 голосов
/ 11 августа 2011

Одной из отправных точек будет изучение источников из подрывных , чтобы увидеть, как они реализовали описанные вами функции.

Источники для eclipse.team (общий модуль для всех плагинов VCS) доступны в репозитории Git .

Источники для EGit , другой плагин VCS (для Git) также могутбыть поучительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...