Ответ 1
Git не отслеживает собственные каталоги. Вы можете выводить непустые имена каталогов из строки пути, которую вы получаете из TreeWalk.
См. Git FAQ (найдите "пустую папку" ) для подробного объяснения и возможных обходных путей.
Я хотел бы использовать JGit для отображения списка всех файлов и папок для пересмотра главы. Я могу перечислить все файлы с помощью TreeWalk, но это не список папок.
Вот что я до сих пор:
public class MainClass {
public static void main(String[] args) throws IOException {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder
.setGitDir(new File("C:\\temp\\git\\.git")).readEnvironment()
.findGitDir().build();
listRepositoryContents(repository);
repository.close();
}
private static void listRepositoryContents(Repository repository) throws IOException {
Ref head = repository.getRef("HEAD");
// a RevWalk allows to walk over commits based on some filtering that is defined
RevWalk walk = new RevWalk(repository);
RevCommit commit = walk.parseCommit(head.getObjectId());
RevTree tree = commit.getTree();
System.out.println("Having tree: " + tree);
// now use a TreeWalk to iterate over all files in the Tree recursively
// you can set Filters to narrow down the results if needed
TreeWalk treeWalk = new TreeWalk(repository);
treeWalk.addTree(tree);
treeWalk.setRecursive(true);
while (treeWalk.next()) {
System.out.println("found: " + treeWalk.getPathString());
}
}
}
Git не отслеживает собственные каталоги. Вы можете выводить непустые имена каталогов из строки пути, которую вы получаете из TreeWalk.
См. Git FAQ (найдите "пустую папку" ) для подробного объяснения и возможных обходных путей.
Вам нужно установить рекурсивное значение в false (см. документация), а затем выполните следующие действия:
TreeWalk treeWalk = new TreeWalk(repository);
treeWalk.addTree(tree);
treeWalk.setRecursive(false);
while (treeWalk.next()) {
if (treeWalk.isSubtree()) {
System.out.println("dir: " + treeWalk.getPathString());
treeWalk.enterSubtree();
} else {
System.out.println("file: " + treeWalk.getPathString());
}
}