如何在RevFilter
中使用jGit s?
我找到了一个关于完成特定任务(在两个日期之间进行提交)的问题的答案,这个问题的答案是使用RevFilter
的一个特定子类。但是,我不知道如何使用RevFilter
!
特别是,我想知道我需要做些什么才能回答我所联系的问题,这个问题说
日期开始= getClock();日期直到= getClock();RevFilter中间=CommitTimeRevFilter.between(自起,直到);
并使用它实际迭代两个日期之间的提交。类似于:
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上使用过滤器!
发布于 2015-01-16 14:25:04
从源判断,您所需要做的就是创建RevWalk
迭代器的一个实例,设置过滤器,然后遍历遍历器。
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
类来创建自己的类。
https://stackoverflow.com/questions/27993576
复制相似问题