Git & open source

Dude käyttää versionhallintaan gitiä, vuodesta 2013 vuoteen 2018 asti Bitbucketia, vuodesta 2019 eteenpäin GitHubia. Kaikki oleellinen koodi tulisi säilyttää git-repositoriossa, mutta arkaluontoiset tiedot kuten tunnukset .env-tiedostossa.

Kaikki minkä voi, tulee julkaista open sourcena, avoimena täysin julkisena Duden GitHub-tilin alla. Näitä voivat olla omat tekniikat, WordPress-teemat tai -lisäosat, joita voisi kuvitella muidenkin käyttävän. Asiakasprojektit ja muut ei-julkiset kehityskohteet julkaistaan GitHubissa Private repositoriossa, jotka näkyvät ainoastaan Duden tiimille.

Commit-viestit muutoksista

Commit-viestien tulee olla selkeitä ja kuvaavia. Massiivisia committeja tulisi välttää ja pyrkiä committaamaan sen sijaan jokainen toiminto erikseen. Pienetkin muutokset pitää committaa mahdollisimman aikaisessa vaiheessa, jotta vältytään konflikteilta. Edes keskeneräisyydellä ei ole väliä, ellei muutos ole menossa suoraan tuotantoon.

Gitin käyttö asiakasprojekteissa

Committeja ei saa jättää jemmaan, vaan ne tulee pushata aina hyvissä ajoin, etenkin silloin kun kun tietää olevansa poissa ruudulta. Omat branchit tulee myös mergetä pääbranchiin työpäivän päätteeksi, etenkin projektin aktiivisessa kehitysvaiheessa ja suurempien muutosten jälkeen. Näin projektin jatkokehittäjä eli työkaveri saa uusimmat muutokset ajoissa, eikä tule konflikteja.

Muutoksia voi niputtaa samaan committiin, esimerkiksi ”Improving readability”, jossa voi olla useampi typografiamuutos samassa. Nyrkkisääntönä sopiva toimintovälin etappi, jossa saa käyttää maalaisjärkeä.

Git-pikaohje komentorivillä

git status

Näe nykyisen edistymisesi tila, mitä on committaamatta, mitä lisättynä, missä mennään. Tälle komennolle on luotu elämää helpottamaan alias s (tämän sivun alalaidassa).

git add --all

Lisää kaikki tiedostot ja alikansioiden tiedostot gittiin. Eli sen jälkeen kun olet tehnyt mitä tahansa muutoksia, kannattaa ajaa tämä. Muutosten suuruus ja laajuus on kiinni sinusta, mutta pidä muutosten vientiväli järkevänä. Esimerkiksi: olet lisännyt värit elementeille tai napeille ja haluat viedä ne muutokset muille devaajille. Tälle komennolle on luotu elämää helpottamaan alias a (tämän sivun alalaidassa).

git push -u origin HEAD

Pushaa eli ”työnnä” muutokset muiden nähtäville ja työstettäville. Push-viestit menevät myös Slackiin, jotta koko työyhteisö näkee edistymisen. Dude ei käytä push-to-deploy tapaa, joten ei ole vaaraa siitä että muutokset menisivät minnekään tuotantoympäristöön näkyville. Muistathan kuitenkin tarkistaa mitä pushaat. Tälle komennolle on luotu elämää helpottamaan alias p (tämän sivun alalaidassa).

Branchit

Jokaisella dudella on oma branchinsa eli ”kehitysoksansa” kun työskennellään samassa projektissa. Omassa työstövaiheessa luodaan branch muotoa wip-omanimi, esimerkiksi Ronin työstö tapahtuu koko ajan branchissa wip-roni (wip as in Work in Progress). Jos vain ja ainoastaan yksi kehittäjä kehittää projektia koko projektin ajan tai tekee yksittäisen muutoksen esimerkiksi julkaisun jälkeen, voi tarvittaessa muutokset tehdä suoraan master-branchiin.

Isompia ominaisuuksia tai leiskoja rakentaessa luodaan oma branch, muotoon feature-featurennimi tai layout-viewinnimi. Ominaisuuden branch voi olla esimerkiksi feature-events-2018 tai feature-shop-integrations kun taas uuden layoutin branch voi olla layout-new-staffmembers.

Branchin luominen projektin alussa

Branchin luominen gitissä on yksinkertaista. Seuraavalla komennolla näet mitä brancheja on tällä hetkellä saatavilla ja missä olet:

git branch

Seuraavalla komennolla luot oman branchisi:

git branch branchisinimi

Seuraavalla komennolla siirryt omaan branchiisi:

git checkout branchisinimi

Muista että voit tarkistaa missä olet komennolla git status (tai aliaksella s).

Branchien mergeäminen eli yhdistäminen

Brancheja pitäisi kehityksen aikana mergetä mahdollisimman tiuhaan masteriin, mutta mielellään aina silloin kun ei ole isompia kesken.

Muista kommunikaatio, varmista että työkaveri on mergennyt oman branchinsa masteriin. Sitten, hae masterista uusin versio menemällä master branchiin:

git checkout master

Tämän jälkeen hae masterista uusin versio:

git pull

Sitten mergeä master omaan branchiisi:

git merge branchisinimi

Tämän jälkeen voit siirtyä omaan branchiisi takaisin:

git checkout branchisinimi

Merge conflict

Tuliko merge conflicti? Yleensä merge conflict on helppo selvittää. Merge conflictin tullessa tärkeintä on selvittää mitä tiedostoja on muokattu ja mikä muokkaus on uusin. Muuttuneet tiedostot saat näkyviin tuttuun tapaan git status (tai aliaksella s).

Jos merge conflictissa on global.min.css, voit vain kääntää tyylit uudestaan komennolla gulp styles. Jos muita tiedostoja, katso tiedostot, etsi tiedostosta ”<<<<<<<< branchinnimi", joka osoittaa mihi muutos päättyy ja mihin se loppuu ja poista "<<<<<<<<" -kommentit. Korjausten jälkeen lisää muutokset (git add –all tai a), committaa ne (git commit 'Fix merge conflicts' tai c 'Fix merge conflicts') ja pushaa ne (git push tai p). Tämän jälkeen kaikki on kunnossa ja merge on tehty onnistuneesti. Voit vielä tarkistaa mergeämällä uudestaan niin voit varmistua siitä että kaikki on mergetty eikä uusia muutoksia tule.

Aliaksia

Tuntuuko työläältä kirjoittaa aina kaikki komennot käsin? komennot on päätetty tehdä kirjoittamalla eikä esim jotain appia käyttämällä, koska silloin pysyy parhaiten kärryillä muutoksista kun ne ”hyväksyy” itse. Elämää kuitenkin helpottaa huomattavasti seuraavat aliakset. Muokkaa tietokoneesi ~/.bashrc -tiedostoa esim. komennolla nano ~/.bashrc tai avaamalla tiedoston editoriisi (huom. tiedosto voi olla piilotettuna):

alias s='git status'
alias a='git add --all'
alias c='git commit -m'
alias p='git push -u origin HEAD'

Tämän jälkeen voit katsoa tilanteen kirjoittamalla s, lisätä kaikki muutokset kirjoittamalla a, committaa muutokset kirjoittamalla c ja pushata muutokset kirjoittamalla p.

Viimeksi muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Maininnat pois liittyen vanhaan branch-jaotteluun", katso muutos 29e5228 GitHubissa. Näytä versiohistoria.

1.11.2019 08:41:46 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Maininnat pois liittyen vanhaan branch-jaotteluun", katso muutos 29e5228 GitHubissa.

1.11.2019 08:40:34 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Uudet wip-säännöt brancheihin", katso muutos 8fae032 GitHubissa.

14.1.2019 11:27:35 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Vaihto Bitbucketista GitHubiin", katso muutos 48f1863 GitHubissa.

20.11.2018 09:21:28 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Otsikkotasojen päivitys, projektin aloitus-dokkarin päivitys", katso muutos bc4d0fc GitHubissa.

20.11.2018 09:17:27 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Ohjeet git branchien käyttöön ja merge konfliktien selvittelyyn", katso muutos b308842 GitHubissa.

30.10.2018 12:36:03 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Boldaukse", katso muutos 28df2e4 GitHubissa.

30.10.2018 12:35:21 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Muotoiluja", katso muutos 43bc5a3 GitHubissa.

30.10.2018 12:25:38 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Muotoilu", katso muutos 8a6dea6 GitHubissa.

30.10.2018 12:24:20 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Git-pikaohje", katso muutos 8976a5d GitHubissa.

21.11.2017 08:28:22 Muokattu käyttäjän Timi Wahalahti toimesta viestillä "Syncing _pages/git-open-source.md from WordPress at https://handbook.dude.fi/wp (Dude Handbook) - wpghs", katso muutos 47ca8eb GitHubissa.

16.8.2017 07:42:29 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Tähdennys commit-tihteyteen", katso muutos 305a32f GitHubissa.

7.8.2017 11:08:24 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Jäsentelyn parantelua", katso muutos 5ebda85 GitHubissa.

7.8.2017 11:07:29 Muokattu käyttäjän Roni Laukkarinen toimesta viestillä "Tarkennus committien tiheyteen", katso muutos 114cb34 GitHubissa.

7.8.2017 09:25:53 Muokattu käyttäjän Roni toimesta viestillä "Full export from WordPress at https://handbook.dude.fi/wp (Dude Handbook) - wpghs", katso muutos a0ac9b5 GitHubissa.

Tämä Handbook kertoo kuinka me teemme asioita Dudella, mutta saa ottaa koppia myös omaan toimintaan. Emme takaa että kaikki meidän jutut toimivat muilla samalla tavalla. Ole mitä olet! Kaikki on avointa GitHubissa: digitoimistodude/handbook