Sama tietovarasto toimii git clone-komennolla päätteessä ja epäonnistuu JGitia käyttävässä sovelluksessa. Kyse on kahden toteutuksen vertailusta, ei välttämättä saman asiakkaan toimivan ja rikkinäisen kopion vertailusta.

JGitin asetusviite kertoo, että välityspalvelinasetukset käyttävät Javan vakiotoimintoja java.net.ProxySelector-luokan kautta. Älä oleta, että kaikki natiivin Gitin HTTP-vaihtoehdot on toteutettu vain siksi, että molemmat asiakkaat ymmärtävät Git-asetustiedoston.

Tunnista JGitia isännöivä sovellus, sen versio ja valittu HTTP-siirto. Isäntäsovellus voi tarjota asetuksia tai toimintaa JGitin itsenäisten oletusten ulkopuolelta.

Tarkastele sitten Java-välityspalvelinasetuksia, jotka kyseinen prosessi näkee. URLConnection-pohjaisessa HTTP-siirrossa tarkista JVM:n isäntä- ja porttiominaisuudet, joita se käyttää. Ominaisuus, joka syötetään toiseen päätteeseen sovelluksen käynnistymisen jälkeen, ei voi määrittää uudelleen käynnissä olevaa JVM:ää. IDE:n natiivi Git-toiminto ja sen JGit-toiminto voivat myös käyttää eri polkuja.

Pidä välityspalvelimen todennus erillään reitin valinnasta. Java-välityspalvelimen ominaisuudet, jotka määrittävät isännän ja portin, eivät automaattisesti toteuta välityspalvelimen salasanamallia. Käytä isäntäsovelluksen tuettua todennusmekanismia.

Hyödyllinen kysymys on ”minkä välityspalvelimen tämä JGit-pyyntö valitsi?”, ei ”onko Git-asetuksissani välityspalvelinriviä?”. Natiivin Gitin onnistuminen on arvokas vertailukohta, mutta se ei vastaa tuohon toteutuskohtaiseen kysymykseen.

Aiheeseen liittyvät artikkelit