使用 JGit 的 PullCommand 进行身份验证
Authentification with JGit 's PullCommand
我正在使用 JGit 并想从远程存储库拉取到我的本地存储库。
第一个方法是克隆存储库并且效果很好:
CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
try (Git result = Git.cloneRepository()
.setURI("http://172.20.1.2/team/myrepo.git")
.setDirectory(new File("c:\temp\gittest"))
.setCredentialsProvider(cp)
.call()) {
System.out.println("Having repository: " + result.getRepository().getDirectory());
}
但是在第二次调用之后不需要再次克隆存储库。所以我想我需要拉
Git git = Git.open(new File("c:\temp\gittest"));
git.pull().call();
但是我收到以下错误:
org.eclipse.jgit.api.errors.TransportException: http://172.20.1.2/team/myrepo.git: Authentication is required but no CredentialsProvider has been registered
我不知道在哪里可以将凭据传递给 pull 命令。
您可以将 CredentialsProvider
传递给 PushCommand
,方法与 CloneCommand
相同。
例如:
CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
git.pull().setCredentialsProvider(cp).call();
连接到远程存储库的所有命令都有一个共同的基础class:TransportCommand
。 class 提供了指定身份验证提供程序的方法。
要了解有关使用 JGit 进行身份验证的更多信息,您可能还想看看我之前写的 JGit Authentication Explained 文章。
我正在使用 JGit 并想从远程存储库拉取到我的本地存储库。
第一个方法是克隆存储库并且效果很好:
CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
try (Git result = Git.cloneRepository()
.setURI("http://172.20.1.2/team/myrepo.git")
.setDirectory(new File("c:\temp\gittest"))
.setCredentialsProvider(cp)
.call()) {
System.out.println("Having repository: " + result.getRepository().getDirectory());
}
但是在第二次调用之后不需要再次克隆存储库。所以我想我需要拉
Git git = Git.open(new File("c:\temp\gittest"));
git.pull().call();
但是我收到以下错误:
org.eclipse.jgit.api.errors.TransportException: http://172.20.1.2/team/myrepo.git: Authentication is required but no CredentialsProvider has been registered
我不知道在哪里可以将凭据传递给 pull 命令。
您可以将 CredentialsProvider
传递给 PushCommand
,方法与 CloneCommand
相同。
例如:
CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
git.pull().setCredentialsProvider(cp).call();
连接到远程存储库的所有命令都有一个共同的基础class:TransportCommand
。 class 提供了指定身份验证提供程序的方法。
要了解有关使用 JGit 进行身份验证的更多信息,您可能还想看看我之前写的 JGit Authentication Explained 文章。