4

我想通过 Java 以编程方式访问 SVN、CVS 和 Git 的变更集。即我想要“同步”视图中显示的数据。

我尝试了几种方法来找到代码中的正确用法,这是我能找到的少数文档(但没有成功):

  • 我设法通过 访问 Synchronize-View TeamUI.getSynchronizeManager(),但没有访问变更集。

  • 我尝试的另一件事是通过FocusedTeamUiPlugin.getDefault().getContextChangeSetManagers()(得到管理器,然后是我试图获取 ChangeSets 的 ChangeSetProvider)来获取 cangesets - 但它们总是空的(因为它们是在我第一次调用它时创建的)。

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

非常感谢任何帮助!

4

3 回答 3

3

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

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

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

对不起,我不能提供更多帮助!也许这会帮助你朝着正确的方向前进......

于 2012-11-09T04:15:33.187 回答
1

你也许可以绕过 Eclipse:

  • 应用 rsync 从 CVS 服务器获取 CVS "*,v" 文件。这个对我有用。
  • cvs2svn的“cvs2git”命令应用于 CVS 存储库。这个对我有用。
  • 将“git svn clone”(记录在“git-svn”下)应用到 SVN 存储库。我还没有尝试过。
  • 最后,使用JGit 的 API从所有 repos 中获取变更集,此时它们都是 git repos。我想你会特别需要这些:
    • 类 Git
    • 类文件解析器
    • 类 BaseConnection
    • 接口存储库
    • 类 CheckoutCommand
    • 类 LogCommand
    • 类 RevCommit
    • 类 DiffCommand
    • 类 DiffEntry
    • 类 DiffFormatter
于 2012-11-12T04:04:31.770 回答
1

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

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

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

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

于 2013-08-22T10:34:25.620 回答