【发布时间】:2021-04-26 15:38:03
【问题描述】:
我正在尝试使用 JGit 提取开发人员使用 Github 安全令牌完成的提交日志。我尝试了很多谷歌搜索,但是这方面的文档很少。我目前正在修改的代码如下所示:
public class GitIntegration {
public GitIntegration() {
}
public Iterable<RevCommit> getCommits() throws IOException, InvalidRefNameException, GitAPIException {
FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
repositoryBuilder.setMustExist( true );
repositoryBuilder.setGitDir( new File ("https://oauth2:xyzxyzTOKENxyzxyz@github.com/myuser/myrepo.git"));
Repository repository = repositoryBuilder.build();
try (Git git = new Git(repository)) {
Iterable<RevCommit> commits = git.log().all().call();
int count = 0;
for (RevCommit commit : commits) {
System.out.println("LogCommit: " + commit);
count++;
}
System.out.println(count);
return commits;
}
}
}
但我收到以下错误:
java.nio.file.InvalidPathException: Illegal char <:> at index 5: https:\oauth2:xyzxyzTOKENxyzxyz@github.com\myuser\myrepo.git\config sun.nio.fs.WindowsPathParser.normalize(未知来源)
像这样在 File 构造函数中抛出 git 语法根本不起作用。有谁知道使用令牌进行身份验证然后能够使用 git.log() 方法的方法?
谢谢!
【问题讨论】:
-
您似乎正在尝试直接打开远程仓库。
FileRepositoryBuilder::setGitDir需要本地 Git 存储库的路径。您需要先克隆远程存储库。您可以尝试提出一系列 CLI Git 命令来完成任务,然后将它们转换为 JGit。
标签: java github logging integration jgit