java传输错误::Jgit::gituploadpack不允许
使用java应用程序中的jgit库api执行git操作时出现以下错误。此应用程序在tomcat inside docker容器上运行
异常堆栈跟踪:
Caused by: org.eclipse.jgit.api.errors.TransportException: https://gitlab.com/xxxxx/testproject.git: git-upload-pack not permitted on 'https://gitlab.com/xxxxx/testproject.git/'
at org.eclipse.jgit.api.LsRemoteCommand.execute(LsRemoteCommand.java:189)
at org.eclipse.jgit.api.LsRemoteCommand.call(LsRemoteCommand.java:128)
at com.test.vcs.JGitUploadPackTest.testRepoUpdate(JGitUploadPackTest.java:35)
Caused by: org.eclipse.jgit.errors.TransportException: https://gitlab.com/xxxxx/testproject.git: git-upload-pack not permitted on 'https://gitlab.com/xxxxx/testproject.git/'
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:545)
at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:359)
at org.eclipse.jgit.api.LsRemoteCommand.execute(LsRemoteCommand.java:167)
... 135 common frames omitted
注:JGIT依赖版本:5.7.0.202003110725-r
重现问题的步骤:
public void getRefBranches() throws IOException, GitAPIException {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.readEnvironment().findGitDir(new File("${projectLocation}")).build();
Git git = new Git(repository);
CredentialsProvider credentialProvider = new UsernamePasswordCredentialsProvider("userName", "password");
LsRemoteCommand listRemoteReferences = git.lsRemote();
listRemoteReferences.setCredentialsProvider(credentialProvider);
listRemoteReferences.setRemote("https://gitlab.com/xxxxx/testproject.git/");
listRemoteReferences.setHeads(true);
listRemoteReferences.setTags(false);
Collection<Ref> remoteBranches = listRemoteReferences.call();
}
# 1 楼答案
异常消息指出,您使用的凭据没有“推送”到gitlab repo的权限。 请检查您使用的凭据