1

通过使用食谱示例,我可以在离线 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

在第二种情况下我缺少什么。

提前致谢!!!

4

1 回答 1

1

我认为身份验证是这背后的原因。您的代码没有提到用户名和密码,并且在访问远程 git 分支时,您需要提供您的凭据。检查可用资源是否提供任何身份验证方式。

于 2013-08-20T06:32:42.000 回答