【问题标题】:Eclipse Synchronize with Repository programmaticallyEclipse 以编程方式与存储库同步
【发布时间】:2013-07-13 10:22:06
【问题描述】:

我正在尝试为 Eclipse (Java) 编写插件。

如果源代码有更改(例如错误修复),插件应该知道 eclipse-Project 的哪些文件被更改(以便运行受影响的 JUnit-Tests)。我打算通过 SVN 同步状态来实现这一点。

因此,如果文件与存储库中的“相同”文件不同(传出更改),我知道该文件已被编辑(当然)。

我知道我可以使用 org.eclipse.team.* 包/库。

我还发现我可以使用这个包的“SyncInfo”。

但我真的不知道如何实现。

我想我必须定义一个“IResource”或“IProject”来为我的插件提供我想要测试的 eclipse-project 信息。

我无法在互联网上找到很多有用的信息。

【问题讨论】:

    标签: eclipse svn plugins


    【解决方案1】:

    您没有定义IResourceIProject。相反,您应该使用Workbench 类来获得一个:

     IWorkspace workspace = ResourcesPlugin.getWorkspace();
     IProject project = workspace.getRoot().getProject(...);
     IJavaProject javaProject = JavaCore.create(project);
    

    现在您可以遍历链接到项目的所有资源。

    也就是说,实现IncrementalProjectBuilder 并让 Eclipse 告诉您发生了什么变化可能会更好,这样您就可以简单地为这些元素运行单元测试。这应该让您开始使用增量构建器:Eclipse Help: Incremental project builders

    这样,您根本不必处理颠覆;对项目的任何更改,无论是谁造成的,都会触发您的构建器,然后它可以决定如何处理修改。

    一个好的方法可能是收集测试以在队列中运行并让后台工作人员处理此队列。

    【讨论】:

      【解决方案2】:

      我已经找了 1 个月了。我尝试为 Eclipse 编写一个插件,该插件能够读取项目的变更集(存储库的“工作副本”)。

      我现在所做的是一个丑陋的解决方法。

      我使用 Runtime.exec() 来运行 cmd-command / Shell- 命令。如果你安装了一个 svn-commandline 客户端,你可以输入 svn status -v -u 它给你一个包含变更集信息的工作副本的所有文件的列表。

      然后您可以通过列表解析以查找所有以“M”开头的行 - 用于“修改”以获取更改文件的路径。

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 1970-01-01
        • 2020-08-11
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        • 2021-03-05
        相关资源
        最近更新 更多