Korzystając z jgit z gitolitem do kontroli kodu źródłowego, mam aplikację, która generuje pewien kod na komendzie i którą chcemy zatwierdzić do kontroli źródła. Celem jest szybkie przewinięcie do przodu, zatwierdzenie nowego kodu, a następnie wciśnięcie go.Konfigurowanie znanych_hostów w jgit
Mam następujący sposób:
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();
}
Ta metoda nie działa na wezwanie pull.call()
metodzie, z następującym wyjątkiem:
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)
Sposób czytam to wydaje się, że to nie jest znalezienie mój plik known_hosts w user_home/.git
. Jednak szukałem przez godzinę i nie znajduję sposobu, aby skonfigurować JGit, aby powiedzieć JSchowi, gdzie szukać pliku known_hosts.
Sugestie? Wiem, że wpis dotyczący pochodzenia jest obecny w pliku moi known_hosts
Ty, panie, jesteś geniuszem. Uderzyłem głową o ścianę, próbując dojść do tego, dlaczego nie rozpoznałem wpisu known_hosts, gdy nagle uświadomiłem sobie, że skoro używam tego w Tomcat jako usługa Windows, Jsch (i przez JGit) to nie znajduje się w folderze _my_ użytkownika, ale w folderze domowym konta _SYSTEM_ dla folderu .ssh. W tym przypadku posunąłem się naprzód i właśnie skopiowałem folder .ssh do folderu domowego SYSTEM, ponieważ Tomcat działa tylko na moim komputerze do celów programistycznych i testowych (prawdopodobnie nie jest to najlepsza polityka bezpieczeństwa, ale ryzyko jest w tym przypadku minimalne). Dzięki! – StormeHawke
@StormeHawke Excellent! Włączyłem Twój komentarz w odpowiedzi, aby uzyskać lepszą widoczność. Jaki był katalog twojego konta SYSTEM? Podałem kilka sugestii, ale nie jestem pewien dokładnej lokalizacji. – VonC
Zgodnie z tym wezwaniem: 'System.out.println (System.getProperty (" user.home "));' domyślny katalog domowy SYSTEM dla Windows7 (i prawdopodobnie dowolnego innego systemu Windows opartego na systemie NT) to po prostu 'C : \\ ' – StormeHawke