Java 使用Git.cloneRepository时,jgit occurs Packfile被截断
当我使用EclipseJgitAPI Git.cloneRepository()克隆一个大型repo时,会出现java.io.EOFException:Packfile被截断。 位于org.eclipse.jgit.transport.PackParser.fill(PackParser.java:1241) 我的代码:Java 使用Git.cloneRepository时,jgit occurs Packfile被截断,java,eclipse,jgit,Java,Eclipse,Jgit,当我使用EclipseJgitAPI Git.cloneRepository()克隆一个大型repo时,会出现java.io.EOFException:Packfile被截断。 位于org.eclipse.jgit.transport.PackParser.fill(PackParser.java:1241) 我的代码: CloneCommand cmd = Git.cloneRepository(); cmd.setDirectory(repo) cmd.setGitDir() cmd.set
CloneCommand cmd = Git.cloneRepository();
cmd.setDirectory(repo)
cmd.setGitDir()
cmd.setURI()
cmd.setCredentialsProvider()
cmd.setProgressMonitor()
cmd.setTimeout(600000)
git = cmd.call()
出现以下trunck错误:
接收对象:94%(143964/152511)
谢谢。最后,我用ssh解决了这个问题。注意,这个回购协议超过了4.5G! 如果您的repo足够大,例如大于4G,请不要使用jgit使用HTTP格式URI进行克隆,您应该使用SSH URI使用jgit api进行克隆,否则您将收到文件截断错误。即使您使用最新的jgit版本
CloneCommand cmd = Git.cloneRepository()
cmd.setDirecotry()
cmd.setGitDir()
cmd.setURI()
cmd.setCredentialsProvider(new CredentialsProvider(){
})
cmd.setProgressMonitor(new TextProgressMonitor())
cmd.setTimeout(600000)
cmd.setTransportConfigCallback(new TransportConfigCallback(){
@Override
public void configure(Transport transport){
SshTransport ssh = (SshTransport)transport
ssh.setSshSessionFactory(new JshConfigSessionFactory(){
@Override
protected void configure(OpenSshConfig.Host host,Session
session){
session.setConfig("StrictHostKeyChecking","no");
}
@Override
protected JSch getJSch(Final OpenSshConfig.Host hc,FS fs)
throws JSchException {
JSch jsch = super.getJSch(hc,fs);
jsch.removeAllIdentity();
jsch.addIdentity("/path/to/your/private key")//note must be
//a rsa private key format,otherwise you will get the bad private key error
return jsch;
}
})
}
})
git = cmd.call();
请参阅,获取完整的cmd.setCredentialsProvider(new-CredentialsProvider(){}),这是JSch的限制吗?如果是,它是否可以将ApacheMina sshd用作SSH客户端?