DocSys的GIT版本管理功能基于JGIT实现,实现的难点在于如何使用JGIT的底层的API实现目录树的遍历,以下代码可以实现遍历所有目录树的节点包括文件和目录:
TreeWalk tw = new TreeWalk(repository, repository.newObjectReader());
tw.reset(revTree);
tw.setRecursive(false);
while (tw.next())
{
System.out.println("path:" + tw.getPathString());
if (tw.isSubtree())
{
tw.enterSubtree();
}
}
这里值得一提的是treeWalk.forPath接口,该接口可以通过路径找到指定节点的treeWalk,但是只对文件节点有效,所以会出现目录节点无法被遍历的问题。