我的目的是使用"个人访问令牌"能够在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/'
答案 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”