编程语言
首页 > 编程语言> > java – 使用JGit的PullCommand进行身份验证

java – 使用JGit的PullCommand进行身份验证

作者:互联网

我正在使用JGit并希望从远程存储库拉到我的本地存储库.

第一个approch是克隆存储库,并且工作正常:

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命令的凭据.

解决方法:

您可以使用与CloneCommand相同的方式将CredentialsProvider传递给PushCommand.

例如:

CredentialsProvider cp = new UsernamePasswordCredentialsProvider( username, password );
git.pull().setCredentialsProvider( cp ).call();

连接到远程存储库的所有命令都有一个公共基类:TransportCommand.此类提供了指定身份验证提供程序的方法.

要了解有关使用JGit进行身份验证的更多信息,您可能还需要查看我之前写的JGit Authentication Explained文章.

标签:java,git,jgit
来源: https://codeday.me/bug/20190611/1220197.html