Versionhallintaa Git Hubin avulla Heikki Tossavainen Henri Viitasaari
Versionhallintaa Git. Hubin avulla Heikki Tossavainen & Henri Viitasaari
What is Git. Hub?
Vähän Git. Hubista • Git. Hub, Inc. perustettiin helmikuussa 2008 • Perustaja jäseniä 4 • Tom Preston-Werner, Chris Wanstrath, P. J. Hyett, Scott Chacon • Sijainti San Francisco, Califonia, US • Git. Hub kasvoi nopeaa tahtia • • • Helmikuussa 2009 julkisia tietolähteitä on kerääntynyt 46 000 ensimmäisen puolen vuoden aikana Heinäkuussa 2010 tietolähteitä on luotu yli miljoona kappaletta Huhtikuussa 2011 tietolähteitä oli 2 miljoonaa Tammikuussa 2013 käyttäjiä 3 miljoonaa ja tietoläheitä yli 5 miljoonaa Kesäkuussa 2018 Microsoft ja Git. Hub pääsivät sopimaan, että Git. Hub myytäisiin Microsoftille $7. 5 miljardilla. • Ostos tapahtui lokakuussa 2018 • Git. Hub toimii pääosin itsenäisesti
Versionhallinta • Ohjelmistoprojektin tuotosten hallintaa, joka mahdollistaa ohjelmiston kehityksen seurannan ja hallitun kehityksen. • Pidetään kirjaa tiedostoihin tehdyistä muutoksista ja säilötään niiden vanhemmat versiot. • Mahdollistaa ohjelmistokomponenttien yhtäaikaisen ja ristiriidattoman kehityksen • Mahdollistaa kehityksen etenemisen eri suuntiin, joka on tärkeää esimerkiksi työskennellessä eri alustojen kanssa. • Päätoimenpiteet: • versiointi • versioiden merkitseminen • versioiden välisten erojen tunnistaminen • versioiden tallentaminen • Versioiden välisten erojen tunnistamisen päätavoite on minimoida versioiden tallentamiseen käytettävä levytila.
Git • Hajautettu versionhallintajärjestelmä • jokaisella käyttäjällä on oma tietovarasto • ei ole riippuvainen yksittäisestä palvelimesta • nouto, muokkaus, ja yhdistäminen ilman keskitettyä synkronointia • nopeampi yksittäiselle käyttäjälle • skaalautuvuus
Näin pääset alkuun 1. 2. Luo käyttäjä ja asenna Git. Hub Desktopin pitäisi asentaa Git ja GUI. Jos ei toimi, lataa Git osoitteesta https: //git-scm. com/ Luo tietolähde, gist, organisaatio tai projekti. Löytyy vasemmasta ylänurkasta Git. Hubin sivuilla. Uuden tietolähteen asetukset.
3. Luodaan uusi tiedosto • Avaa komentorivi sovellus (Power. Shell tai jokin muu vastaava) • Kirjoitetaan "mkdir Demo" • Tämän luo kansion Demo • Seuraavaksi kirjoitetaan "cd Demo" • Tällä siirrytään Demo kansioon • Luodaan uusi tiedosto Demo kansioon • "echo "#Demo" >> README. md" • Kirjoittamalla tämän luodaan README niminen tiedosto, jonka sisällä lukee #Demo • Seuraavaksi asetaan Git vastuuseen Demo kansiosta • Kirjoitetaan "git init" ja kirjoittamalla "git add README. md" asetamme Gitin seuraamaan muutoksia tässä tiedostossa Tältä näyttää uusi tietolähde kun se on luotu
4. Luodaan sitoumus • "git commit -m "first commit"" • Tällä olet luonut ensimmäisen sitoumuksen kommentilla "first commit" 5. Yhdistetään Git. Hub tietolähde koneeseen • "git remote add origin https: //github. com/<your_username>/De mo. git" • Lopuksi tiedostot siirretään "git push -set-upstream origin master"
Projektin jakaminen • Voit jakaa projektin Githubissa parin askeleen kautta • • Avaa tekemäsi tietolähde ja mene sen "Settings" -sivulle Sieltä avaa Options-valikosta "Manage access" Manage Access-valikosta paina "Invite collaborator" –nappia Tämän jälkeen tulee "Invite collaborator to "…. "" ikkuna esiin • Tässä ikkunassa voit etsiä henkilöitä, jotka haluat kutsua tähän projektiin mukaan. • Kun olet löytänyt haluamasi henkilön, tälle henkilölle lähtee kutsu sähköpostiin. • Näin olet jakanut tietolähteen toisen kanssa. Kutsu, jonko kaveri saa
Push • git push on Git-komento, jota käytetään siirtämään tai työntämään sitoumuksia, joka tehdään oman tietokoneen paikallisessa haarassa etätietovarastoon, kuten Git. Hubiin tai muuhun vastaavaan.
Pull request • Pull request voit avata projektisi haaraumien kautta. • New pull request avaa sivun, jossa voit jättää kommentin ennemmin kuin luot uuden pull requestin. • Pull requestit näet tietolähteesi etusivulla. • Kun avaat pull requestin, voit tarkastella mitä muutoksia siihen on tehty. • Kun olet tarkastellut pull requestia tarpeeksi, voit yhdistää sen "Merge pull requestilla"
Pull request • Pull requestin voi yhdistää "Conversation" tabin sisällä olevalla "Merge" -napilla. • Tämä nappi löytyy "Conversation" -tabin sisältä. • Nappia painamalla aukeaa dropdown-valikko josta löytyy erilaisia merge-tyyppejä. • Kun painat mergeä, niin pull requestin tiedostot siirtyvät master-tietolähteeseen.
Hyödyllisiä git-komentoja • git config --global user. name “Haluamasi käyttäjänimi” (käyttäjänimen valinta) • git config --global user. email “sahkoposti@gmail. com” • git config --global core. editor notepad (tekstieditorin valinta) • Git help (listaa yleiset komennot) • git status (yleiskomento tilan näyttämiseen) • Git init (asetetaan kansio git käyttöön) • git add tiedostonimi. txt (lisätään tiedoston muutokset seuraavaan committiin) • Git remote add origin (yhdistää paikallisen tietolähteen git serveriin) • Git clone https: //github. com/Mikko. Mallikas/Esimerkki. git (kopio halutun tietolähteen kovalevylle) • Git branch (näyttää haaraumat)
Hyödyllisiä git-komentoja • Git branch haluttu_nimi (luo haarauman) • git checkout (siirrytään haluttuun haaraan) • Git merge haluttu_haara (yhdistää haaraumat) • Git fetch (haetaan tieto muutoksista) • Git pull (haetaan commitit) • Git commit (commit halutut muutokset) • git push (julkaistaan commitit)
Git. Hub Desktop • Git on versionhallintajärjestelmä • Git. Hub desktop on graafinen versionhallintajärjestelmä joka pohjautuu git: iin • Git. Hubiin tallennetaan ja jaetaan koodia mitä myös muut voivat käyttää
Github desktopin käyttöönotto/projektin luominen • ladataan github desktop githubin sivuilta ja luodaan käyttäjätunnus. • valitaan tekstieditori ja integroidaan se työpöytäsovelluksen kanssa käytettäväksi. • Luodaan tietolähde • Luodaan haarake(eng branch). • Tiedoston muokkaus, avataan repository tekstieditorissa, muokataan README. md tiedostoa, ja tallennetaan se. • Tallennetaan muutokset, commit. • Julkaistaan (push) muutokset Git. Hubiin. • Pull requestilla tiedustellaan tiimin jäseniltä hyväksyvätkö he muutokset projektiin • Merge yhdistää kaksi eri haaraketta yhdeksi
Tietolähteet(Repository) • Tietolähde on kuin kansio projektillesi. Sinne säilötään kaikki projektisi tiedostot. • Voit luoda uuden tietolähteen myös jo olemassa olevan pohjalta • Voit lisätä siihen README tiedoston jossa kerrot muille käyttäjille informaatiota projektistasi kuten miksi projektisi on hyödyllinen ja kenelle • CODEOWNERS tiedostoon voit määrittää kuka/ketkä ovat kirjoittaneet tietolähteen koodin • Lisensoimalla tietolähteen saat tehtyä siitä avoimen lähdekoodin projektin • Näkyvyysasetukset ovat säädettävissä: public(kaikille näkyvä), internal(enterprise käyttäjille), tai private(voit määrittää ketkä sinun lisäksi näkevät tietolähteen sisällön) • Voit arkistoida tietolähteen, sillä kerrot muille käyttäjille että et ole enää aktiivinen sen parissa.
Haaraumat • Kopio tietolähteestä • Voit tehdä muutoksia projektiin muuttamatta alkuperäistä tietolähdettä • Vetopyynnöllä voit ehdottaa muutoksia alkuperäiseen tietolähteeseen • Voit tuoda muutoksia myös alkuperäisestä haaraumaan synkronisoimalla ne keskenään
Vetopyyntö • Pull Requestilla pystyt kertomaan muutoksista muokkaamassasi tietolähteestä. • Kun muutokset ollaan katsottu, voidaan päättää otetaanko muutokset alkuperäiseen tietolähteeseen. • Kun lähetät pull requestin, näet reviewen tekemistäsi muutoksista omassa haaraumassa (branch) ja alkuperäisestä tietolähteestä. • Voit tehdä muutoksia olemassa olevaan pull requestiin
Vetopyynnön arviointi • Voit kommentoida muutoksia, hyväksyä muutokset, tai ehdottaa lisää muutoksia ennen vetopyynnön yhdistämistä. • Muutosten filtteröinti • Mahdollisuus määrittää vaadittavien hyväksyvien arvointien määrä
Yhdistäminen • Jos olet tyytyväinen muutoksiin, voit yhdistää muutokset alkuperäiseen tietolähteeseen. • Yhdistämisen voi tehdä koska tahansa. • Yhdistämisen rajoitukset. • Yhdistämistä saattaa estää head branchin ja base branchin väliset konfliktit • Konfliktit tapahtuu, jos Git ei osaa päättää mitkä muutokset otetaan mukaan yhdistämisessä • Tämä tapahtuu jos useampi ihminen editoi samaa tiedostoa samasta kohtaa tai jos lisätään tiedosto ja joku sitten poistaa tämän tiedoston. • "Master" haaraumaan saatat tarvita erilaiset tila tarkistukset (status checks), että yhdistäminen voidaan tehdä • Tila tarkistukset tulee vastaan suojattujen haaraumien kohdalla.
Commit / sitoutuminen • Sitoudutaan tekemään muutokset tietolähteeseen • Voidaan jakaa usean tekijän kesken
Tietolähteen visualisointi • • Auttavat tl: n datan analysoinnissa Voit seurata • liikennettä, tekijöitä, haaraumia sekä muutoksia. • projekteja jotka ovat liitoksissa tl: ään.
Issues • Käytetään ideoiden, parannusten, tehtävien tai bugien seuraamiseen. • Projektipöydät(Project boards) - Työn organisointiin, sekä priorisointiin - Koostuvat seikoista, vetopyynnöistä, ja merkinnöistä jotka on kategorisoitu kortteina valitsemassasi kolumneissa - Sisältävät oleellista metadataa seikoille ja vetopyynnöille, kuten tietoa nimikkeistä, tilasta, ja vetopyynnön avaajasta. - Voit tehdä pieniä muutoksia seikkoihin ja vetopyyntöihin projektipöydän kautta. - Voit luoda merkintöjä muistuttamaan tehtävistä, käyttää niitä referenssinä seikkoihin, sekä vetoehdotuksiin - Kustomoitu workflow
Projektin hallinta • Projektin maksimi koko on 100 GB, mutta käytännössä github toivoo että projektin koko rajoitetaan yhteen gigaan. • Voit seurata tiedostoon tehtyjä muutoksia “blame view” kohdasta - Voit katsoa koko tiedoston muutokset riviltä tai tarkemmin yhden rivin kohdalta, josta näet mm sen kuka on tehnyt viimeiset muutokset kyseiselle riville
Github Actions • Auttaa automatisoimaan softan työnkulkua • Voit määrittää yksittäisiä tehtäviä, ja yhdistää niitä luodaksesi haluamasi työnkulun • Työnkulku tarkoittaa kustomoituja automatisoituja prosesseja jotka voit määrittää tietolähteellesi. • Voit koota, testata, pakata, julkaista, tai ottaa käyttöön minkä tahansa koodi projektin mihin sinulla on oikeudet Git. Hubissa. • Esimerkiksi Continuous integration - Vaatii jatkuvaa koodin sitouttamista jaettuun tietolähteeseen - Virheet huomataan aiemmin, näin koodarin tarvitsee käydä vähemmän koodia lävitse löytääksen virheitä
Codespaces • Pilvipalvelu koodin kehittämiseen • Ohjelmointiympäristönä toimii nettiselain, on suositeltavaa käyttää Chromium pohjaista selainta • Mahdollisuus asentaa Visual Studio Code lisäosia
Käyttäjätilin hallinta • Henkilökohtainen työpöytä • Voit seurata projektisi tai seuraamiesi projektien muutoksia, sekä tutkia suositeltuja projekteja • Voit muuttaa käyttäjänimeäsi milloin tahansa • Mahdollisuus yhdistää useita tilejä • Käyttäjätilin muunnos organisaatioksi. • säilyttää projektit automaattisesti, kutsuu työtoverit automaattisesti tiimeihin
Käyttäjätilien tyypit • Free - Rajaton määrä kumppaneita ja julkisia tietolähteitä - Community tuki - turvallisuusilmoitukset - kaksivaiheinen tunnistautuminen - 2000 Github Action minuuttia (mitä on? Selitä ehkä omana slidenä) - 500 MG Github Packages storage (mitä on? Sama homma)
Käyttäjätilien tyypit • Git. Hub Pro - Sähköposti tuki - 3000 Github Action minuuttia - 2 GB Github Packages storage • Edistyneet työkalut privaatti tietolähteille - Useampi vetopyynnön arviointi - automaattisesti linkatut referenssit - Git. Hub sivut - Wikit - Suojatut haaraumat - Code owners ominaisuus - Grafiikat tietolähteille
Käyttäjätilien tyypit • Git. Hub Free organisaatioille - Yhteisötuki - Tiimikeskustelut - Tiimien saavutettavuus asetukset ryhmien hallintaan - 2000 Git. Hub Actions minuuttia - 500 MB Git. Hub Packages tallennustilaa
Käyttäjätilien tyypit • Git. Hub Team • sähköpostituki • 10000 Git. Hub Actions minuuttia • 2 GB Git. Hub Packages tallennustilaa • Useampi vetopyynnön arviointi • Git. Hub sivut • Wiki • Suojatut haaraumat • Code Owners • Grafiikat • Luonnosten vetopyynnöt • Tiimi vetopyyntöjen arviointi. Ajatustetut muistutukset
Enterprise käyttäjätili • Saatavilla Git. Hub Enterprise Cloud käyttäjille • Enterprise käyttäjätili mahdollistaa useiden organisaatioiden hallinnan • Administraattori voi hallita mm: - Jäsenten oikeuksia(organisaation jäsenet, ulkopuoliset kumppanit) - laskutus ja käyttö(käyttäjälisenssit, git paketit) - turvallisuus asetuksia (kaksivaiheinen vahvistus)
Git. Hub One • Sisältää Enterprisen - Git. Hub Support Premiun Plus plan / Git. Hub Engineering Direct - Git. Hub Insights - Edistynyt tietoturva - Git. Hub Learning lab organisaatioille
Git. Hubin eri palveluita/ominaisuuksia • Git • Versionhallintajärjestelmä, joka pystyy seuraamaan muutoksia koodissa sovelluksen kehittyksen aikana. • Git. Hub • Sivusto, mihin voidaan julkaista omia projektejaan joita Gitillä voidaan seurata ja muokata. • Githubissa voi myös keskustella, hallita tietolähteitä, avustaa muiden tietolähteiden kanssa ja seurata muutoksia koodeissa. • Git. Hub Enterprise • Itse-säädettävä versio Githubista. Pystyy toimimaan yrityksen omalla laitteistolla tai pilvipalvelussa. Ollut saatavilla vuodesta 2011 • Git. Hub Community Forums • Paikka, missä yhteisö voi kysyä julkisesti asioita ja vastata niihin.
• Git. Hub Pages • Verkkopalvelu, mihin ihmiset voivat luoda blogeja, dokumentoida projekteja • Tallentuvat tietolähteisiin joko sanatarkasti tai Markdown formaatissa. • Integroitu Jekyll generaattorin kanssa • Staattinen sivu generaattori, joka hakee Markdown- ja HTML tiedostot ja luo verkkosivun haluamasi layoutin mukaan • Markdown, Liquid, HTML ja CSS • Julkaistu vuonna 2008 • Gist • Pastebin-tapainen palvelu koodinpätkille • Pystyt julkaisemaan Gistin julkisena tai yksityisenä • Gist itsessään toimii tietolähteenä, joten voit kloonata tai haarauttaa sen • Julkistettiin 2008
Git. Hub Education Program • Opetusjärjestelmä, joka sisältää suosittuja ohjelmia ja palveluita • Unity, MS Azure, Canva, Git. Hub, Frontend Masters • Github Campus Experts julkistettiin vuonna 2016
Git. Hub Marketplace service • "Software as a service" palvelu, josta löytyy ilmaisia että maksullisia sovelluksia • Marketplacesta löytyy kategorioita erilaisille sovelluksille • Code Quality, Utilities, Monitoring, Mobile, Security ja paljon muuta • Code Quality –kategoriasta löytyy sovellus nimeltä Deep Scan • Deep Scan on sovellus joka auttaa Java. Script, Type. Script, React ja Vue. js: n kanssa. Sovellusta voi käyttää löytämään mahdolliset virheet ja laatuongelmat • Security –kategoriasta löytyy sovellus nimeltä LGTM jonka on kehittänyt Semmle • LGTM analysoi koodia ja ilmoittaa, jos koodista löytyy heikkouksia. • LGTM on open-source ohjelma, johon kontributoinu itse Semmle Security Research Team, heidän asiakkaat myös Microsoft, Google, Uber ja Mozilla ovat ottanut osaa.
Muita kategorioita Marketplacesta • API management • Chat • Code Quality • Core review • Continuous integration • Dependency management • Deployment • IDEs • Learning • • • Localization Mobile Monitoring Project Management Publishing Recently Added Security Support Testing Utilities
Git. Hub Sponsors • Antaa ihmisten lahjoittaa kuukausittain projekteille jotka löytyvät Git. Hubista • "Works exatly like Patreon" sanottiin The Vergen artikkelissa toukokuussa 2019 • Sponsors antaa valita eri lahjoitus tasojen väliltä • Jokaisella tasolla on erilaisia etuuksia • Sponsors on suuri lisäys Git. Hubin ominaisuuksiin. • Open-source projekteille Sponsors on suuri helpotus.
Projekteja Git. Hubista • GOG Galaxy 2. 0 • GOG Galaxy on asiakasohjelma jonka on kehittänyt GOG, joka kuuluu CD Projectille • GOG Galaxy toimii pääosin digitaalisena pelikauppana, mutta muutoksien myötä GOG Galaxy toimii myös alustana jolla voit yhdistää kaikki alustat yhteen paikkaan, yhteen pelikirjastoon.
• GOG antaa yhteisön luoda integraatioita GOG Galaxylle joilla pystyy yhditämään muut alustat heidän omaan. • Git. Hubista löytyy tietolähteet yhteisön integraatioille
Lähteitä https: //www. theverge. com/2019/5/23/18637344/github-sponsors-patreon-style-crowdfunding-open-source https: //help. github. com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests https: //help. github. com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request https: //help. github. com/en/github/administering-a-repository/about-protected-branches https: //opensource. com/article/18/1/step-guide-git https: //tkt-lapio. github. io/git/ https: //fi. wikipedia. org/wiki/Ohjelmiston_versiohallinta https: //help. github. com/en/github/collaborating-with-issues-and-pull-requests https: //help. github. com/en/github/committing-changes-to-your-project https: //help. github. com/en/github/developing-online-with-codespaces https: //help. github. com/en/github/administering-a-repository https: //help. github. com/en/github/managing-files-in-a-repository https: //help. github. com/en/github/setting-up-and-managing-your-github-user-account https: //fi. wikipedia. org/wiki/Ohjelmiston_versiohallinta
- Slides: 43