1a) Uusi projekti GitHub-versiohallintaan (remote first),
1b) Uusi projekti Visual Studioon ja sieltä GitHubiin (local first),
2) Projektin kloonaaminen GitHub-palvelimelta omalle koneelle,
3) Aikaisemmin tehdyn projektin lisääminen versiohallintaan ja GitHub-palveluun
Huom! Tarvit kaikissa edellä mainituissa tilanteissa tunnukset GitHubiin joten tee ensin itsellesi tunnukset GitHub-palveluun kurssia varten: https://github.com/
Ohjelmointikoodin versiohallinta on yksi tärkemmistä asioista, mikä jokaisen ohjelmoijan on jossain vaiheessa ohjelmointiuraa opeteltava. Versiohallinta on tekniikka, jolla pidetään kirjaa tiedostoihin tehdyistä muutoksista ja säilötään niiden vanhemmat versiot. Ohjelmiston versiohallinta on ohjelmistoprojektin tuotosten hallintaa ja se mahdollistaa ohjelmiston kehityksen seurannan ja hallitun kehityksen. Nykyään toteutettavat sovelluksen ovat kooltaan valtavia ja sisältävät useita eri ohjelmointitiedostoja kaikkine muine materiaaleineen. Versiohallinta avustaa myös sovelluksen ohjelmointikokonaisuuksien hallinnan tiedostotasolla, joten sovelluksen kehitystä on helpompi jakaa useampien tekijöiden kanssa. Versiohallinta mahdollistaa kehityksen toteuttamisen "eri suuntiin", joka on suurissa projekteissä lähes välttämätöntä. Tuolloin eri kehitystiimit voivat tehdä sovelluskehistyä samassa projektissa "eri haaroissa" ja toteutetut haarat (sovelluksen ominaisuudet) voidaan yhdistää versiohallinnassa takaisin sovelluksen "päälinjaan".
Versiohallinnan menetelmiä on useita, tällä opintojaksolla käytetään Git-versiohallintaa. Git on ilmainen hajautettu versionhallintaan kehitetty menetelmä, joka on suunniteltu käsittelemään pienien ja/tai isojen ohjelmistoprojektin versionhallinnan. Gitin peruskäyttö käsittää muutamia tärkeitä komentorivikomentoja, jotka on suhtellisen helppo oppia. Useasti Git-toiminnot on kuitenkin integroitu suoraan kehistysympäristöön, joten komentojen käyttö tapahtuu graafisten painikkeiden ja valikkorakenteiden kautta. Git-versiohallinnassa pidetään aina kopiota paikallisella koneella, jonne ohjelmoija tekee muutokset. Halutessaan ohjelmoija voi lähettää muuttamansa tiedostot palvelimelle (esim. GitHub), jossa ne ovat saatavilla muille. Samoin ohjelmoija voi hakea aina muiden päivitetyt tiedostot palvelimelta omalle paikalliselle versiohallinnalle (repolle - repository).
Tällä opintojaksolla Git-versiohallintaa käytetään suoraan Visual Studiosta käsin. Voit ja ehdottomasti kannattaa tutustua Git-perusteisiin täältä:
gradehttp://git-scm.com/ (pääsivu)
gradehttp://try.github.com/ (peruskomentojen opettelu)
gradehttp://student.labranet.jamk.fi/~mapas/git-ohje/ (peruskomentojen opettelu BitBucket-palvelun kanssa)
GitHub on räjähdysmäisesti kasvanut verkkosivusto, joka tarjoaa pilvipalvelun Git-versiohallintaa käyttäville projekteille. GitHub tarjoaa palvelun ilmaiseksi julkisesti nähtävillä oleville repoille, kaupalliset yksityiset repot ovat maksullisia. Oppilaitoksilla ja opiskelijoilla on mahdollisuus saada ilmaiseksi myös yksityisiä repoja.
Tässä muutama periaatekuva GitHubin käytöstä:
Tee itsellesi tunnukset GitHub-palveluun kurssia varten: https://github.com/
Visual Studion 2015 asennuksen yhteydessä on mahdollisuus asentaa GitHub-laajennos Visual Studioon. Jos kuitenkin tämä on unohtunut tai sitä ei jostain muusta syystä ole asennettu, niin sen voi aina asentaa jälkikäteen. Laajennus ohjeineen on tarjolla täällä: https://visualstudio.github.com/
Voit yhdistää Visual Studion GitHub-tunnukseesi heti sen jälkeen kun GitHub-laajennos on asennettu. Avaa Visual Studion Team Explorer ja klikkaa hiirellä GitHub-osion "Connect..."-tekstiä.

Kirjoita avautuvaan GitHub-ikkunaan omat tunnuksesi ja salasanasi.

Tämän jälkeen yhteys GitHub-palveluun on oletuksena auki ja voit alkaa toteuttamaan Visual Studiossa projektien versiohallintaa yhteydessä GitHub-palveluun.
Alla olevien ohjeiden mukaisesti voit toteuttaa uuden Visual Studio projektin siten, että se on yhteydessä GitHub-versiohallintaan. Ohjeessa luodaan ensin repositorio GitHub-palveluun, joka otetaan sitten käyttöön paikalliseen koneeseen.
Määrittele repositoriolle omistaja ja nimi. Hyvä on myös aina määritellä repositoriolle kuvaava teksti.
Nyt voit kopioida repositorion osoitteen GitHub-palvelusta ja ottaa repositoriosta kloonin Visual Studioon omaksi projektiksi.
Määrittele Visuan Studion Team Explorerin "Local Git Repositories" -osion kautta itsellesi klooni (clone) GitHub-palvelimelle tekemästäsi repositoriosta. Paikalliselle koneelle kopioituu GitHub-palvelusta tekemäsi tyhjä Git-versiohallinta. Tämän jälkeen repositorioon voit aloittaa uuden projektin toteuttamisen.
Nyt paikallinen repositorio eli versiohallinta on valmis ja voidaan aloittaa projektin luominen. Tässä vaiheessa voit klikata Team Explorerissa näkyvää "Create a new project or solution" -tekstiä tai valita sen normaalista File-valinnan kautta valikosta.
Luo uusi projekti ja anna sille nimi. Projektin sijainti (Location) viittaa aikaisemmin tehtyy repositorioon paikallisella levyllä.
Tämän jälkeen voit aloitta ohjelmoinnin. Tässä vaiheessa toteutetaan vain pienimuotoinen tekstintulostaminen pääohjelmassa.
Muutetut ohjelmointitiedostot (tai kokonaisuudet) voidaan lisätä paikalliseen repositorioon commit-käskyllä. Tässä ensimmäisessä tapauksessa, kun mitään tiedostoja ei vielä ole lisätty paikalliseen repositorioon, kannattaa commit-käsky antaa koko projektin solutionille. Valitse projektin solution Solution Explorerista oikealla hiiren painikkeella ja valitse komento Commit... (huomaa samalla projektin solutionin edessä oleva punainen väkänen, se kertoo ettei projektia ole vielä lisätty Git-versiohallintaan.)
Nyt kommitointi tapahtuu versiohallinnan päätasolle (branch - master). Määrittele ensimmäiselle kommitille viesti (esim): Initial commit. Tässä vaiheessa sovelluksen ohjelmoinnissa ei ole vielä mitään tärkeää tehty. Jatkossa kommenteilla on tärkeä rooli, jotta on helpompi ymmärtää mitä muutoksia ohjelmointikoodin on tässä vaiheessa tehty. Muista painaa Commit-painiketta, jotta muutokset paikalliseen repoon tapahtuvat.
Tämän jälkeen muutokset voidaan lähettää myös GitHub-palveluun tai jatkaa ohjelmointia paikallisella koneella. Tarvittaessa muutokset on kommitoitava edellä kuvatulla tavalla paikalliseen repositorioon uudelleen ennen kuin lähetetään GitHub-palveluun. Kokeile muuttaa ohjelmointia pääohjelmassa ja huomaa kuinka Solution Exporerissa Program.cs-tiedoston eteen ilmestyy punainen väkänen kertomaan siitä, ettei muutettua tiedostoa ole vielä viety paikalliseen versiohallintaan.
Myös ohjelmointikooodissa näkyy, että tiedostoa on muutettu.
Muista kommitoida mahdolliset muutokset paikalliseen repoon ennen kuin lähetät tiedostoja GitHub-palveluun. Haluttujen ohjelmointimuutosten jälkeen, koodi voidaan lähettää GitHub-palveluun käyttämällä Sync- tai Push-komentoa. Sync-komento sananmukaisesti synkronoi paikallisen ja GitHub-palvelun repot keskenään, kun taas Push-komento siirtää paikalliselta repolta muuttuneet tiedot GitHub-palveluun. Tässä tapauksessa voimme hyvin käyttää kumpaa tahansa komentoa - käytetään esim. Sync-komentoa. Nyt koko projekti siirtyy GitHub-palveluun, koska sinne ei ole aikaisemmin mitään tiedostoja siirretty.
Tämän jälkeen projekti on kokonaisuudessaan näkyvissä GitHub-palvelussa.
Samaan tyyliin voit jatkaa projektin ohjelmointia ja siirtää paikallisesta reposta halutut muutokset GitHub-palveluun muiden tai itsesi muuta käyttöä varten (esim. koulu <-> koti).
Tarvittaessa voit myös pyytää GitHub-palvelusta mahdollisia muutoksia paikallisen koneen repoon. Tälläinen tilanne voi sattua, jos olet esimerkiksi tehtyt muutoksia ohjelmointkoodeihin koululla ja pushannut/synkannut muutokset GitHub-palveluun ja tämän jälkeen avaat projektin kotikoneella. Tarvittavat muutokset GitHub-palvelusta voit hakea kotikoneellesi Team Explorerin Sync- tai Fetch/Pull-komennoilla. Tämän jälkeen myös kotikoneesi repositori on yhtenevä GitHub-palvelun kanssa.
Alla olevien ohjeille luot ensin uuden projektin Visual Studioon ja samalla luot paikallisen repositoryn (local repository) joka sitten julkaistaan (publish) GitHub-palveluun, jolloin GitHubiin luodaan "remote repository".
Määrittele projektilla nimi ja hakemisto. Myös Solutionille on annettava nimi (Visual Studiossa yhden Solution alla voi olla useita erilaisia projekteja). Tässä esimerkissä Solutionin ja projektin nimi ovat samat. Valitse vaihtoehto "Create new Git repository". Visual Studio luo uuden projektin (tässä esimerkissä tyyppiä konsoli-sovellus), johon voit alkaa kirjoittamaan koodiasi.

Jos Visual Studio ei vielä tiedä että versionhallintaan käytetään Gittiä niin uuden projektin luonti ikkuna näyttää tältä. Valitse vaihtoehto "Add to source control" ja sen jälkeen valitse Git.


Kun koodi on valmis (se on testattu huolellisesti ja toimivaksi havaittu), ja olet tallentanut muutokset tiedostoon niin on aika kommitoida muutokset paikalliseen repositoryyn.
Kuvassa nähdään punaisella väkäsellä merkittynä tiedostot joihin on tehty muutoksia ja joita ei ole vielä kommitoitu.
Aktivoi "Team Explorer" -ikkuna, näet siinä kaikki paikalliset repositoryt. Äsken luomasi paikallinen repository pitäisi näkyä mös listassa.

Valitse Home "Team Explorer" -ikkunassa

Valitse Changes. Changes näyttää montaako tiedostoa on muutettu ja listaa muutetut tiedostot. Muutetuilla tiedostoilla tarkoitetaan niitä tiedostoja, jotka ovat muuttuneet ja joita ei ole vielä kommitoitu repositoryyn.

Kirjoita muutoksilla kuvaava kommitti ja paina "Commit All".

Changes näyttää että kommitti on onnistutnut, ja tarjoaa toiminnon "Sync", jolla voit viedä paikallisen repositoryn muutokset remote repositoryyn.

Valitse toiminto Sync, niin pääset Publish-osioon. Nyt voit julkaista tuotoksesi haluamaasi remote repositoryyn. Vaihtoehtoina tarjotaan: 1) Visual Studio Team Service 2) GitHub 3) joku muu Git -palvelin. Valitse GitHubista vaihtoehto "Login"

Kirjaudu omilla tunnuksillasi GitHub-palveluun.

Koska GitHubissa ei ole vielä vastaavaa remote repositoryä, valitse seuraavaksi minkä tunnuksen alle ja minkä nimisenä repository luodaan. Voit kirjoittaa myös kuvauksen repositorylle.

Julkaisun jälkeen näet nyt remote repositoryn osoitteen GitHubissa.

Jos haluat tarkistaa että remote repository niin avaa selain ja siirry em. osoitteeseen. Voilá, kaiken pitäisi olla nyt kunnossa!

GitHub-palvelussa on paljon muiden tekemiä projekteja, joista voi ottaa kloonin kotikoneelle ja viedä projektia eteenpäin tai muuten vain opiskella asiaa. Tietysti tämä on keino myös tehdä itse töitä useammassa paikassa ja tavallaan pitää varmuuskopiota sekä omissa paikallisissa repoissa että GitHub-palvelussa. Näin kannattaa menetellä myös koti - ja harkkatehtävien suhteen tällä opintojaksolla.
Ohje noudattelee hyvin pitkälti edellä ollutta ohjetta, mutta tässä siis otetaan käyttöön jo aikaisemmin toteutettu projekti.
Kopio GitHub-palvelusta haluamasi versiohallinnan projektin osoite.
Käynnistä Visual Studio ja valitse clone Team Explorerin "Local Git Repositories" -kohdasta.
Syötä kopioimasi GitHub-palvelussa olevan projektin osoite sille määriteltyyn kenttää. Muista määritellä myös repositorion paikallinen kansio haluamaksesi.
Paina tämän jälkeen Clone-painiketta ja GitHubissa olevasta repositoriosta ladataan kopio paikalliselle koneelle. Tämän jälkeen voit avata ladatun projektin Visual Studioon (normaalisti file-valikon kautta) ja voit aloittaa projektin kanssa työskentelyn.
Voit tehdä tarvittavia muutoksia ohjelmointikoodiin ja synkronoida projektin takaisin GitHub-palveluun (jos sinulla on siihen riittävät oikeudet). Tietysti omiin projekteihin aina on.
Pääohjelmaan on nyt lisätty yksi rivi ohjelmointia, joka pysäyttää sovelluksen suorittamisen (lukee rivin näppikseltä), jotta nähdään "Hello GitHubbi!" -teksti.
Ohjelmointikoodia on muutettu vain yhden tiedoston osalta, ja sen osalta muutokset paikalliseen repoon saadaan kommitoitua valitsemalla ko. tiedosto projektin Solution Explorerista hiiren oikealla painilleella ja valinnalla commit. Muista kirjoittaa kuvaava teksti siitä mitä muutoksia on tehty. Kommitoi muutokset paikalliseen repoon.
Muutosten lähettäminen GitHub-palveluun menee kuiten ne on kuvattu jo aikaisemmin tässä ohjeessa. Aikaisemmin käytettiin Sync-komentoa, mutta käytetään nyt push-komentoa, koska halutaan vain omat muutokset GitHub-palveluun päin. Valitse Push-komento Team Explorerin Synchronization-välilehdeltä. Komento lähettää muutetut tiedostot GitHub-palveluun.
Alla olevassa kuvassa on näkyvillä, että paikallisessa repossa on yksi muuttunut tiedot, joka lähetetään GitHub-palveluun päin.
Onnistuneesta push-kommennosta ilmoitetaan Visual Studiossa.
Ja muutokset ovat näkyvissä myös GitHub-palvelussa ko. projektin repositorion kohdalla.
Usein on myös sellainen tilanne, että on jo tehty valmiiksi paljon ohjelmointia ja kuitenkaan versiohallintaa ei ole vielä otettu ko. projektissa käyttöön. Seuraavassa on kuvattu ohjeet siihen, miten versiohallinta Visual Studiossa liitetään projektiin tässä tapauksessa.
Avaa haluamasi projekti Visual Studioon.
Tee uusi repositorio GitHub-palveluun ja ota sieltä repositorion osoite talteen. Tarvitset sitä pian seuraavissa kohdassa.
Valitse projektin solution Solution Explorerin kautta hiiren oikealla painikkeella ja valitse tämän jälkeen avautuvasta menusta "Add Solution to Source Control..." -valinta. Määrittele projektin käyttöön Git-versiohallinta avautuvasta ikkunasta.
Tämän jälkeen voit aloittaa paikallisen versiohallinnan käyttämisen kommitoimalla muutoksia versiohallintaan (kts. aikaisemmista kohdista ohjeita).
Valitse Team Explorerin kautta "Publish to Remote Repository" -kohta ja kopio siihen aikaisemmin tekemäsi GitHub-palvelun repositorion osoite ja julkaise projekti GitHub-palveluun painamalla Publish-painiketta.
Tämän jälkeen Visual Studiossa on nähtävissä, että projekti on yhteydessä GitHub-palveluun.
Projektista on nyt myös repositorio GitHub-palvelussa.
Edellä esitettiin eri keinoja ottaa versiohallinta käyttöön Visual Studiossa ja yhdistää se GitHub-pilvipalveluun. On huomattava, että tämä oli vasta johdanto Git-versiohallintaan. Tässä ohjeessa ei käsitelty mahdollisia konfliktitilanteita, jotka ovat yleisiä kun projektia ohjelmoi useammat henkilöt (ja samaa tiedostoa on muutettu paikallisissa repoissa ja sitä ollaan julkaisemassa GitHub-palveluun). Ohjeessa ei myöskään käsitelty Git-versiohallintaan kuuluvia haaroja, joitka mahdollistavat eri featureiden lisäämisen ohjelmistoon siten, että niillä on oma haaransa versiohallinnassa featuren kehityksen ja testaamisen aikana. Nämä haarat voidaan myöhemmin liittää versiohallinnan pääpolkuun (master branch), kun ne on todettu ohjelmistoteknisesti toimiviksi ja ovat siis julkaisukelpoisia.
Muista harjoitella itsenäisesti ja kaverin kanssa Git-versiohallinnan käyttöä, yritykset arvostavat kovasti versiohallinnan osaamista!