如何在Eclipse(Mylyn / Team)中访问ChangeSets?

时间:2012-10-01 13:32:02

标签: java version-control mylyn changeset

我想通过Java以编程方式访问SVN,CVS和Git的ChangeSets 。即我想要的数据显示在“Synchronize”-view

我尝试了几种方法在代码中找到正确的用法,这里有一些我能找到的文档(但没有成功):

  • 我设法通过TeamUI.getSynchronizeManager()访问同步视图,但没有通过更改集访问。

  • 我尝试的另一件事是通过FocusedTeamUiPlugin.getDefault().getContextChangeSetManagers()获取cangesets(获取管理器,然后是我尝试获取ChangeSet的ChangeSetProvider) - 但它们总是为空(因为它们是在我先叫它)。

那么,如何在Eclipse(Mylyn)中访问ChangeSets(使用Java)? 最后,我需要提交次数和代码流失(loC添加/删除/编辑)。或者可能还有其他更好的方法吗?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

我认为Eclipse还没有将此功能作为公共API实现。但是,这些链接可能有所帮助:

内部变更集类和其他API:http://www.cct.lsu.edu/~rguidry/ecl31docs/api/index.html?org/eclipse/team/internal/core/subscribers/ChangeSet.html

一个功能增强请求,他们在谈论他们为什么还没有实现它(但它是在2008年,但是这个bug仍然是开放的?)https://bugs.eclipse.org/bugs/show_bug.cgi?id=116084

抱歉,我无法提供更多帮助!也许这会帮助你朝着正确的方向......

答案 1 :(得分:1)

你可以绕过Eclipse:

  • 应用rsync从CVS服务器获取CVS“*,v”文件。它对我有用。
  • cvs2svn的“cvs2git”命令应用于CVS回购。它对我有用。
  • 将“git svn clone”(记录在“git-svn”下)应用于SVN repos。我还没试过。
  • 最后,使用JGit's API从所有repos中获取更改集,此时所有repos都是git repos。我想你特别需要这些:
    • class Git
    • class FileResolver
    • class BaseConnection
    • 接口存储库
    • class CheckoutCommand
    • 类LogCommand
    • class RevCommit
    • class DiffCommand
    • class DiffEntry
    • class DiffFormatter

答案 2 :(得分:1)

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

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

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

然后你可以解析列表以找到所有以“M”开头的行 - 对于“modified”来获取更改文件的路径。