I am trying to do a git pull/push using jgit’s api with the following code
org.eclipse.jgit.api.Git.open(theRepoFile).pull().call()
but I am getting exceptions
JSchException Auth fail
com.jcraft.jsch.Session.connect (Session.java:461)
org.eclipse.jgit.transport.JschConfigSessionFactory.getSession (JschConfigSessionFactory.java:116)
org.eclipse.jgit.transport.SshTransport.getSession (SshTransport.java:121)
org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init> (TransportGitSsh.java:306)
org.eclipse.jgit.transport.TransportGitSsh.openPush (TransportGitSsh.java:152)
org.eclipse.jgit.transport.PushProcess.execute (PushProcess.java:130)
org.eclipse.jgit.transport.Transport.push (Transport.java:1127)
org.eclipse.jgit.api.PushCommand.call (PushCommand.java:153)
Even though using cgit pull and pushing works.
I tried checking SO for example code
but the above question does not provide a complete coded example of what is necessary to do a git pull with a remote repo that is normally authenticated via ssh keys. There should be a way to get the credential information from ~/.ssh/ or the windows equivalent.
The problem is Jsch does not support
ssh-agents out of the box. One will need to configure https://github.com/ymnk/jsch-agent-proxy to get it to work.An alternative is to make your own
org.eclipse.jgit.transport.CredentialsProviderand set theorg.eclipse.jgit.transport.CredentialItemto the correct values (by requesting them from the user or looking up a file). You can change the defaultCredentialsProviderwithorg.eclipse.jgit.transport.CredentialsProvider/setDefaultSee my clojure library dj for details: https://github.com/bmillare/dj/blob/library/src/dj/git.clj