Eclipse插件开发 - 从Team Provider获取信息

时间:2011-08-10 19:25:59

标签: eclipse svn eclipse-plugin

我是开发eclipse插件的新手。我现在面临的最大障碍是在哪里/如何从各种其他插件获取数据。我很难找到这方面的文档。例如Team Provider插件....

  1. 如何阅读文件的svn修订版?假设我有一个IResourceChangeListener,我想跟踪文件的svn版本号(例如,如果用户进行了更新)。
  2. 如果我想询问svn是否有项目的待定更新,我该如何与eclipse团队提供商交谈?
  3. 我不知道从哪里开始...

    谢谢!

3 个答案:

答案 0 :(得分:4)

经过数小时的搜索后,我终于发现了我在寻找的东西。不幸的是,因为我的代表不到100。直到现在我一直无法发布....

我在这方面取得了一些进展。我在浏览日食源代码时偶然发现了这一点。

以下代码段监视有关启用svn的项目所发生的所有事情。如果您保存文件,更新,还原等等。任何接触文件的文件或元数据。我只打印出文件/ direcory名称及其修订号。

颠覆版

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。如果找到这种信息有很好的资源,那就太好了。

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

答案 1 :(得分:1)

有关Eclipse平台中Team API的一般信息,请查看帮助系统中的文档。

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

(如果您正在使用Subscriber的内容,似乎在“同步支持” - >“超越基础知识”主题下提到了。)

团队包的Java文档也有帮助:

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

答案 2 :(得分:0)

一个起点是explore the sourcessubversive,看看他们如何实现您所描述的功能。

eclipse.team的来源(所有VCS插件的通用模块)are available in a Git repo

sources for EGit,另一个VCS插件(适用于Git)也具有指导意义。