【发布时间】:2013-07-15 13:38:09
【问题描述】:
有谁知道如何使用 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 文件的列表。欢迎提出任何建议。
【问题讨论】:
-
我实际上检查了treeWalk.next()并使用treeWalk.getPathString(),可以得到所有文件的列表,我应该只比较包含“.java”的长字符串还是使用其他东西?