Mit Jgit mit Gitolit für die Quellcodeverwaltung, ich habe eine Anwendung, die bestimmten Code auf Befehl generiert und die wir an die Quellcodeverwaltung Committed werden möchten. Das Ziel ist es, mit einem schnellen Vorlauf zu ziehen, den neuen Code zu committen und dann zu drücken.Konfigurieren von bekannten_Hosts in JGIT
Ich habe die folgende Methode:
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();
}
Diese Methode schlägt fehl, auf dem pull.call()
Methodenaufruf, mit folgenden Ausnahme:
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)
So wie ich diese Zeilen lesen, so scheint es, dass es nicht zu finden Meine known_hosts-Datei in user_home/.git
. Ich habe jedoch nach einer Stunde gesucht und finde keine Möglichkeit, JGit so zu konfigurieren, dass es JSch mitteilt, wo es nach der Datei known_hosts suchen soll.
Vorschläge? Ich weiß, dass der Eintrag für den Ursprung vorhanden ist, in meiner Datei known_hosts
Sie, Sir, sind ein Genie. Ich hatte meinen Kopf gegen die Wand geschlagen und versuchte herauszufinden, warum er den Eintrag von known_hosts nicht erkannte, als mir plötzlich auffiel, dass Jsch (und damit auch JGit) in Tomcat als Windows-Dienst lief Sie suchen nicht im _my_ Benutzerordner, sondern im Homeordner des _SYSTEM_-Kontos nach dem Ordner .ssh. In diesem Fall habe ich den Ordner .ssh einfach in den Home-Ordner SYSTEM kopiert, da Tomcat nur zu Entwicklungs- und Testzwecken auf meinem Computer läuft (wahrscheinlich nicht die beste Sicherheitsrichtlinie, aber das Risiko ist in diesem Fall minimal). Vielen Dank! – StormeHawke
@StormeHawke Ausgezeichnet! Ich habe Ihren Kommentar in die Antwort für mehr Sichtbarkeit aufgenommen. Was war das Verzeichnis für Ihr SYSTEM-Konto? Ich habe einige Vorschläge gemacht, aber ich bin mir nicht sicher über den genauen Standort. – VonC
Nach diesem Aufruf: 'System.out.println (System.getProperty (" user.home "));' das Standard-Home-Systemverzeichnis für Windows7 (und vermutlich jedes andere NT-basierte Windows-System) ist einfach 'C : \\ ' – StormeHawke