通过使用cookbook示例,我可以在离线Git存储库中获取HEAD下的所有文件夹(项目),例如。
String url = "C:/Users/kishore/git/JavaRepos/.git";
File gitDir = new File(url);
Repository repository = new FileRepository(gitDir);
Ref head = repository.getRef("HEAD");
RevWalk walk = new RevWalk(repository);
RevCommit commit = walk.parseCommit(head.getObjectId());
RevTree tree = commit.getTree();
System.out.println("Having tree: " + tree);
TreeWalk treeWalk = new TreeWalk(repository);
treeWalk.addTree(tree);
treeWalk.setRecursive(false);
while(treeWalk.next()) {
System.out.println("Folder Path: " + treeWalk.getPathString());
System.out.println("Folder Name: " + treeWalk.getNameString());
System.out.println("Folder depth: " + treeWalk.getDepth());
System.out.println("Folder Tree Count: " + treeWalk.getTreeCount());
}
此代码列出了位于我的计算机上的给定Git存储库URL的所有文件夹但
Ref head = repository.getRef("HEAD");
为任何在线Git存储库URL返回null,例如的 https://github.com/github/testrepo.git
在第二种情况下我缺少的是什么。
提前致谢!!!
答案 0 :(得分:1)
我认为身份验证是背后的原因。 您的代码无处提及用户名和密码,在访问远程git分支时,您需要提供凭据。 检查可用资源是否提供任何身份验证方式。