首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在jGit中使用过滤器?

如何在jGit中使用过滤器?
EN

Stack Overflow用户
提问于 2015-01-16 22:08:10
回答 1查看 1.2K关注 0票数 2

如何在RevFilter中使用jGit s?

我找到了一个关于完成特定任务(在两个日期之间进行提交)的问题的答案,这个问题的答案是使用RevFilter的一个特定子类。但是,我不知道如何使用RevFilter

特别是,我想知道我需要做些什么才能回答我所联系的问题,这个问题说

日期开始= getClock();日期直到= getClock();RevFilter中间=CommitTimeRevFilter.between(自起,直到);

并使用它实际迭代两个日期之间的提交。类似于:

代码语言:javascript
代码运行次数:0
运行
复制
RevFilter between = CommitTimeRevFilter.between(since, until);
RevWalk walk = new RevWalk(repository);
walk.magicallyApplyFilters(between);
for(RevCommit commit : RevWalk) {
    // Do my thing
}

我已经阅读了jGit文档。可悲的是,在显示如何使用筛选器的部分中。,有这样一条线:

TODO谈过滤器

所以这些文件对我没有帮助。虽然我给人的印象是使用过滤器是使用jGit的基本部分,但还没有人问过如何在StackOverflow上使用过滤器!

EN

回答 1

Stack Overflow用户

发布于 2015-01-16 22:25:04

从源判断,您所需要做的就是创建RevWalk迭代器的一个实例,设置过滤器,然后遍历遍历器。

代码语言:javascript
代码运行次数:0
运行
复制
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
}

过滤器本质上只是一个谓词,说明提交是否从游行者中产生。在org.eclipse.jgit.revwalk.filter包中可以使用许多筛选器。也可以通过扩展RevFilter类来创建自己的类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27993576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档