Utilizzando jgit con gitolite per il controllo del codice sorgente, ho un'applicazione che genera un determinato codice su comando e che vogliamo venga eseguito il commit al controllo del codice sorgente. L'obiettivo è quello di tirare con un avanzamento veloce, commettere il nuovo codice e quindi premerlo.Configurazione di known_hosts in jgit
ho il seguente metodo:
private void commitToGitRepository(String updateComment, Config config)
throws IOException, NoFilepatternException, GitAPIException
{
if(git == null)
{
git = Git.open(new File(config.getDpuCheckoutDir()));
}
PullCommand pull = git.pull();
pull.call();
}
Questo metodo non riesce la chiamata pull.call()
metodo, con la seguente eccezione:
com.jcraft.jsch.JSchException: UnknownHostKey: www.somehost.com. RSA key fingerprint is 9d:92:a9:c5:5d:cb:5f:dc:57:ff:38:7e:34:31:fe:75
at com.jcraft.jsch.Session.checkHost(Session.java:748)
at com.jcraft.jsch.Session.connect(Session.java:319)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:248)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1104)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:245)
at net.intellidata.dpu.controller.schema.EntityMappingController.commitToGitRepository(EntityMappingController.java:149)
... (truncated where it meets my code)
Il modo in cui ho letto questo, sembra che non è trovare il mio file known_hosts in user_home/.git
. Tuttavia, ho cercato un'ora e non trovo un modo per configurare JGit per dire a JSch dove cercare il file known_hosts.
Suggerimenti? So che la voce per l'origine è presente nel mio file known_hosts
Tu, signore, sei un genio. Stavo battendo la mia testa contro il muro cercando di capire perché non stava riconoscendo la voce known_hosts quando improvvisamente mi sono reso conto che, dal momento che sto eseguendo questo in Tomcat come servizio Windows, Jsch (e per estensione JGit) era cercando non nella _my_ cartella utente ma nella cartella home dell'account _SYSTEM_ per la cartella .ssh. In questo caso sono andato avanti e ho appena copiato la cartella .ssh nella cartella home SYSTEM poiché Tomcat viene eseguito solo sulla mia macchina per scopi di sviluppo e test (probabilmente non è la migliore politica di sicurezza ma il rischio è minimo in questo caso). Grazie! – StormeHawke
@StormeHawke Eccellente! Ho incluso il tuo commento nella risposta per maggiore visibilità. Qual è stata la directory per il tuo account SYSTEM? Ho inviato alcuni suggerimenti, ma non sono sicuro della posizione esatta. – VonC
In base a questa chiamata: 'System.out.println (System.getProperty (" user.home "));' la directory home SYSTEM di default per Windows7 (e presumibilmente qualsiasi altro sistema Windows basato su NT) è semplicemente 'C : \\ ' – StormeHawke