小编viv*_*nig的帖子

JGit:RevWalk 顺序覆盖起点

我正在将 JGit 用于我的一个涉及 git 深入使用的项目。

我的目标是使用 aRevWalk能够按时间顺序迭代存储库中的提交,从特定提交开始。我设法分别实现了这两个目标:

  • 通过应用时间顺序 RevSort.REVERSE
  • 通过调用开始 RevWalk.markStart(RevCommit c)

我的问题是,当我尝试将两者结合起来时,似乎 RevSort 覆盖了 markStart,而 RevWalk 总是在我指定的提交的提交开始处开始。

这个片段显示了我所拥有的:

import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;

import java.io.IOException;
import org.eclipse.jgit.errors.AmbiguousObjectException;
import org.eclipse.jgit.errors.MissingObjectException;

public class Main {

    public static void main(String[] args) throws IOException, AmbiguousObjectException, MissingObjectException {
        final String repositoryPath = args[0];
        final String commitID = args[1];
        final Repository repository = new FileRepository(repositoryPath + "/.git");
        final RevWalk walk = new RevWalk(repository);
        walk.sort(RevSort.REVERSE);
        walk.markStart(walk.parseCommit(repository.resolve(commitID)));
        for (final RevCommit …
Run Code Online (Sandbox Code Playgroud)

java jgit

5
推荐指数
1
解决办法
653
查看次数

标签 统计

java ×1

jgit ×1