使用JGIT不允许使用git-upload-pack

时间:2018-01-24 19:36:01

标签: gitlab jgit

我的目的是使用"个人访问令牌"能够在Java应用程序中克隆/从此repo(GitLab)中提取。我无法弄清楚如何解决这个错误。

这是我的代码。

    String accessToken = conf.getString("accessToken");

    String uri = "https://gitlab-ci-token:" + accessToken + "@gitlab.com/dfurrer/cosmotronsBinaries.git";

    CredentialsProvider cp = new UsernamePasswordCredentialsProvider("PRIVATE-TOKEN", accessToken);
    git = Git.cloneRepository()
                    .setURI(uri)
                    .setCredentialsProvider(cp)
                    .setRemote("origin")
                    .setBranch("master")
                    .call();

我得到他的例外:

org.eclipse.jgit.api.errors.TransportException: https://gitlab-ci-token@gitlab.com/dfurrer/cosmotronsBinaries.git: git-upload-pack not permitted on 'https://gitlab-ci-token@gitlab.com/dfurrer/cosmotronsBinaries.git/'

3 个答案:

答案 0 :(得分:0)

我想出了这个问题。我正在创建一个只有read_user和read_registry的个人访问密钥。一旦我创建了具有api权限的令牌,我就能克隆。

答案 1 :(得分:0)

Jgit:使用UsernamePasswordCredentialsProvider来对令牌进行身份验证,用户名参数可以是token或使用存储库URL中的所有者名称或为空,密码参数的值是您的令牌值,这三种样式都可以按照我的方式很好地工作:

new UsernamePasswordCredentialsProvider("token","Personal Access Token")); 

new UsernamePasswordCredentialsProvider("the owner name of the repository","Personal Access Token")); 

new UsernamePasswordCredentialsProvider("","Personal Access Token"));

答案 2 :(得分:0)

在Git配置中,尝试将HTTP客户端更改为“内置JDK”

引用:https://www.eclipse.org/forums/index.php/t/1104150/