gpt4 book ai didi

java - 使用 JGit 获取修订版本中的文件列表

转载 作者:行者123 更新时间:2023-12-01 14:20:15 24 4
gpt4 key购买 nike

有人知道如何使用 JGit API 获取文件列表吗?我尝试找到类似的功能,例如在本地存储库上使用 git show 命令,例如

    git ls-tree -r --name-only 7feff221f86e040f0cd2e4227e9e1496fe16f376

我有一些类似的代码

    File gitDir = new File("/Users/xiansongzeng/NIOServer");
Git git = Git.open(gitDir);
Repository repo = git.getRepository();

ObjectId lastCommitId = repo.resolve("7feff221f86e040f0cd2e4227e9e1496fe16f376");
RevWalk revWalk = new RevWalk(repo);
RevCommit commit = revWalk.parseCommit(lastCommitId);
RevTree tree= commit.getTree();
TreeWalk treeWalk = new TreeWalk(repo);
treeWalk.addTree(tree);
treeWalk.setRecursive(true);

treeWalk.setFilter(PathFilter.create("src/main/java/nds/socket/server/Reader.java"));
if(!treeWalk.next()){
System.out.println("Not found.");
return;
}
ObjectId objectId = treeWalk.getObjectId(0);

此代码针对本地存储库,使用 RevWalk 遍历上次提交的修订树。我发现这个例子使用 PathFilter 来获取文件的引用,但不知道如何获取所有 Java 文件的列表。欢迎任何建议。

最佳答案

建议使用像 PathSuffixFilter.create(".java") 这样的树过滤器来测试从 getPathString 返回的路径。

这样做的原因是 getPathString 必须解码路径(内部是 byte[]),而 PathSuffixFilter 直接工作在byte[]上。

关于java - 使用 JGit 获取修订版本中的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17655619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com