java - 如何在 jGit 中使用过滤器?

标签 java jgit

如何在 jGit 中使用 RevFilter

我找到了有关完成特定任务 ( getting the commits made between two dates ) 的问题的答案,答案是使用 RevFilter 的特定子类。但是,我不知道如何使用 RevFilter!

特别是,我想知道我需要做什么才能得到我链接的问题的答案,该问题说

Date since = getClock();
Date until = getClock();
RevFilter between = CommitTimeRevFilter.between(since, until);

并使用它来实际迭代两个日期之间的提交。像这样的东西:

RevFilter between = CommitTimeRevFilter.between(since, until);
RevWalk walk = new RevWalk(repository);
walk.magicallyApplyFilters(between);
for(RevCommit commit : RevWalk) {
    // Do my thing
}

我已阅读 jGit 文档。可悲的是,in the section that would show how to use filters ,有一行:

TODO talk about filters

所以文档对我没有帮助。尽管我的印象是使用过滤器是使用 jGit 的基本部分,但还没有人问过如何在 StackOverflow 上使用它们!

最佳答案

从源代码来看,您所需要做的就是创建一个 RevWalk 迭代器的实例,设置过滤器,然后迭代 walker。

RevWalk walk = new RevWalk(repo);
walk.markStart(walk.parseCommit(repo.resolve(Constants.HEAD)));
walk.sort(RevSort.REVERSE); // chronological order
final LocalDate thisYear = new LocalDate(2015, 1, 1); // joda
walk.setRevFilter(CommitTimeRevFilter.after(thisYear.toDate()));
for(RevCommit commit : walk) {
    // do your thing
}

过滤器本质上只是一个关于是否从 walker 中产生提交的谓词。在 org.eclipse.jgit.revwalk.filter 包中可以找到许多可以使用的过滤器。或者,您可以通过扩展 RevFilter 类来创建自己的过滤器。

关于java - 如何在 jGit 中使用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993576/

相关文章:

java - UseAdaptiveSizePolicy 和其他 jvm 选项

eclipse-plugin - 如何通过EGit/JGit插件为Git事件创建监听器?

java - JGit 获取 pull 文件

java - 如何使用 JGit API 从父提交中获取树?

android - 如何将Jgit添加到你的Android项目中?

java - 查找 2 个 git 提交之间可用的分支

java - 找不到生成的 .keystore 文件

java - Hibernate 二级缓存——程序不终止

java - 如何在 Mahout Spark 上编写推荐

java - java 中的面向对象编程 ||不知道为什么我的客户名单不打印客户名单