Gitin käyttö tällä opintojaksolla¶
Tässä materiaaliosiossa esitellään käytännön toimenpiteet, joiden avulla Gitin käyttö onnistuu tällä opintojaksolla.
Henkilökohtainen tietovarastosi¶
Jokaiselle kurssille ilmoittautuneelle on muodostetaan kurssin ensimmäisellä viikolla henkilökohtainen Git-keskustietovarasto (eli Git-repositorio tai lyhyemmin Git-repo). Kun tietovarasto luodaan, saat opiskelijasähköpostiisi automaattisen ilmoituksen tietovaraston luomisesta.
Tärkeää
Jos et ole saanut automaattista ilmoitusta, älä yritä kirjautua
repoosi, vaan tarkista ensin, ettei viesti ole mennyt roskapostiin.
Jos sähköpostia ei löydy, vaikka sen olisi pitänyt tulla,
ota yhteyttä kurssin henkilökuntaan (prog2@tuni.fi).
Kirjautuminen ennen repon luomista aiheuttaa usein opiskelijan
blokkaamisen repostaan.
Saatuasi ilmoitussähköpostin, pääset näkemään tietovarastosi sisällön web-selaimella, jolloin web-osoitteeksi (URL) annetaan:
https://course-gitlab.tuni.fi/compcs110-fall2026-p1/###.git
missä merkinnän ### paikalle on kirjoitat oman käyttäjätunnuksesi.
Kun Git tai web-selain kysyy käyttäjätunnusta ja salasanaa, tarkoitus on syöttää oma intranet-tunnus ja -salasana. Huomaa, että intranet-tunnus eli käyttäjätunnus on eri asia kuin sähköpostiosoite. Saat käyttäjätunnuksesi selville ainakin automaattiviestistä, joka sinulle pitäisi tulla tietovaraston luomisen jälkeen.
Web-käyttöliittymä on tarkoitettu tietovaraston sisällön
tutkimiseen ja vaikka se tarjoaa joitain työkaluja esimerkiksi
asetusten muuttamiseen, älä tee muutoksia tietovarastoon
web-käyttöliittymän kautta. Jos nimittäin et tiedä täsmälleen
mitä olet tekemässä, kurssin kannalta kriittiset ominaisuudet
saattavat lakata toimimasta. Aivan erityisesti vasemman alakulman
Settings-valintaa kannattaa vältellä.
Sen sijaan esimerkiksi kohdat Files, Commits, Network
ja Graphs sisältävät mielenkiintoista tietoa. Sitä enemmän,
mitä enemmän versionhallintaa käytät.
Tarvitset edellä mainittua URLia myös reposi kloonaamisessa (ks. seuraava aliluku) sekä tehtävien palauttamisessa Plussaan.
Ennen ensimmäistä palautettavaa tehtävää¶
Tärkeä huomautus repositorion kloonaamisesta
Repositoriota ei kannata kloonata suoraan kotihakemistoon, vaan sitä varten kannattaa luoda uusi hakemisto (kansio). Tämä on erityisen tärkeää, jos olet ollut kurssilla aikaisemmin ja olet joskus aikaisemmin kloonannut samannimisen repositorion (repositoriosi nimi on aina sama kuin käyttäjätunnuksesi).
Tässä kohdassa selitetään, mitä alustustoimenpiteitä vaaditaan, jos käytät Gittiä komentoriviltä (Terminal). Jos sen sijaan käytät Gittiä Qt:n kautta, voit lukea tarvittavat alustoimenpiteet materiaalin luvusta Vaihtoehto: Gitin käyttö Qt Creatorin kautta ja sieltä kohta Alustustoimenpiteet.
Alustustoimenpiteet komentorivillä¶
Lyhyesti sanottuna tässä kohdassa pitää kloonata Git-repositorio, joka löytyy web-linkistä, joka mainittiin juuri edellisessä aliluvussa. Jos et vielä osaa käyttää komentoriviä, voit tutustua siihen lukemalla materiaalin lopusta löytyvän kohdan Komentorivioperaatioita.
Tietyssa url:ssa sijaitseva tietovarasto kloonataan annettuun polkuun komennolla:
git clone <url> <polku>
Voi siis kloonatessa asettaa paikallisen tietovaraston hakemistonimeksi jonkin muun, kuin oletuksena tulevan. Näin voit ylläpitää haluamaasi nimeämisperiaatetta hakemistorakenteessasi. Jos kloonatessa ei anna polkua paramerina, niin hakemisto syntyy työhakemistoosi. Oletuksena syntyvän hakemiston nimi on sama kuin kloonattavan repositorion nimi.
Voit kopioida komennossa tarvitsemasi URLin tietovaraston web-käyttöliittymästä (oikeasta reunasta) painamalla nappulaa “Code”, josta avautuu valikko:
Jos olet asettanut GitLabiin SSH-avaimesi (ks. sitä käsittelevä materiaali), voit käyttää SSH-URLia, muuten käytä HTTPS-URLia.
Jos kloonasit repositorion kotihakemistosi alihakemistoon ohj2,
repositoriosi löytyy hakemistopolulta:
/home/username/ohj2/username
missä sanan username tilalla on oma käyttäjätunnuksesi.
Jos taas kloonasit repositoriosi suoraan kotihakemistoosi, se löytyy polulta:
/home/username/username
Joka tapauksessa polulla esiintyy hakemisto username kahteen kertaan,
mutta tämän ei pitäisi tuottaa ongelmia.
Git-komentojen pitäisi toimia ainoastaan alemman tason
username-hakemistossa.
(Jos ne toimivat myös ylemmän tason username-hakemistossa, ota
yhteyttä kurssin henkilökuntaan esimerkiksi lähettämällä sähköpostia
kurssin osoitteeseen prog2@tuni.fi.)
Lopuksi¶
Kuten edellä kerrottiin, Git-projekti voi sisältää mitä tahansa tiedostoja. Tämän kurssin Git-repositoriosi sisältää kolme alihakemistoa, joissa kaikissa on alihakemistoja, jotka ovat puolestaan Qt Creatorin projekteja. Qt Creator taas olettaa, että projekti on hakemisto, joka sisältää .pro-tiedoston ja C++-lähdekooditiedostoja. Suurissa ohjelmistoprojekteissa yleensä yksi Git-repositorio sisältää yhden Qt-projektin, joten Qt Creator odottaa, että kun Git-repositorio kloonataan, niin kloonattu repositorio sisältäisi .pro-tiedoston, josta Qt Creator voisi automaattisesti avata projektin. Koska kurssin repositoriossa on erilainen rakenne, tuli tässä tilanteessa virheilmoitus, mutta repositorio tuli silti kloonatuksi.
Mahdollisia ongelmatilanteita
Jos sinulla on (ollut) työsuhde Tampereen yliopistolla, voi GitLab:in kirjautumisessa aiheutua ongelma siitä johtuen, että tietojärjestelmässä on sinulle kaksi identiteettiä (opiskelija ja henkilökunta). Tässä tapauksessa ota yhteyttä kurssin sähköpostiosoitteeseen prog2@tuni.fi. Kerro sähköpostissa myös käyttäjätunnuksesi.
Jos kloonaaminen ei onnistu, voit kokeilla ensin kirjautua kertaalleen selaimen kautta tietovarastoosi. Joillakin opiskelijoilla tämä on ratkaissut ongelman.
Huomautus
Yliopiston course-gitlab, jota käytämme, sisältää joitakin rajoitteita normaaliin Gitiin verrattuna. Mm. opiskelijalla ei ole oikeuksia luoda course-gitlabiin omia repositorioitaan, eikä kurssikäyttöön luotuja repositorioita säilytetä kurssin päätyttyä ikuisesti. Palaamme tähän aiheeseen kurssin lopussa, kun Gitin käyttö on jo hallussa.
Jos haluat nyt jo harjoitella omien repositorioiden luomista ja Gitin käyttämistä muutenkin enemmän, kannattaa tutustua vaikkapa GitHubiin.