我正在将 JGit 用于我的一个涉及 git 深入使用的项目。
我的目标是使用 aRevWalk能够按时间顺序迭代存储库中的提交,从特定提交开始。我设法分别实现了这两个目标:
RevSort.REVERSERevWalk.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)