有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    异常消息指出,您使用的凭据没有“推送”到gitlab repo的权限。 请检查您使用的凭据