TIE-20200 Ohjelmistojen suunnittelu



Samankaltaiset tiedostot
Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Hajautettu versionhallinta Gitillä

Versionhallinta MIKSI?

Versionhallinta MIKSI?

Versiohallinta ja Subversion Maunu Tuomainen

JOT2013 Demo1-ohje. Ville Isomöttönen, Jonne Itkonen 10. syyskuuta Varmista, että tunnukseesi on aktivoitu Unix-etäkäyttökoneet

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Versionhallintaa. Versionhallinnan käyttöönotto SAS ympäristössä

Projektityö

Versionhallinta. Matti Paksula ja Esko Luontola Syksy Tietojenkäsittelytieteen laitos Kuje Research Group

TIE Ohjelmistojen suunnittelu

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Ennen kuin aloitat lataamisen tarkista järjestelmävaatimukset:

Avoimen lähdekoodin kehitysmallit

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Sisällysluettelo Table of contents

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

MixW ja Dx-vihjeet (ohje) oh3htu

Coolselector Asennusohje

4. Lausekielinen ohjelmointi 4.1

Security server v6 installation requirements

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

TW-LTE 4G/3G. USB-modeemi (USB 2.0)

Käyttäjienhallintatyökalu

Convergence of messaging

Salasanan vaihto uuteen / How to change password

Security server v6 installation requirements

USB-siirto-ohjelman ja ajurin asentaminen

Ohjelmistopohjaisen lisenssin käyttö

EASY Tiedostopalvelin - mobiilin käyttöopas

HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE

INTERBASE 5.0 PÄIVITYS VERSIOON 5.6

Web Services tietokantaohjelmoinnin perusteet

Käyttöohje Planeetta Internet Oy

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

JOVISION IP-KAMERA Käyttöohje

3. Asenna MySQLdb(MySQL-python-1.2.3b4.win32-py2.7.exe) ja pyserial (pyserial- 2.5.win32.exe)

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

MS Aamubrunssi Aktiivihakemiston uutuudet

Javan asennus ja ohjeita ongelmatilanteisiin

statbeatmobile PROJECT REVIEW iteration 1

Projektin tilanne. Tero Vesa Tekninen projektipäällikkö, FiMVO

Backup Exec 3600 Appliance

Työasemien hallinta Microsoft System Center Configuration Manager Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS

NAVIGAATTORIN ASENNUS JA MUOKKAUS

EASY Tiedostopalvelin - mobiilin käyttöopas

Skosmos 0.6 esittely. Osma Suominen ONKI-projektin laajennetun projektiryhmän kokous

Ohjelmistojen eta ka ytto

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

EASY Tiedostopalvelin Käyttöopas

Pika-aloitusopas. Langaton IP-kamera. Tekninen tuki QG4_B

The necessary product key can be found in the hand out given to you.

Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

HARJOITUS 2: Käyttäjien ja käyttäjäryhmien luominen, Active Directory Users and Computers

OCAD KOULUTUS ALITTELIJOILLE OCAD PERUSTEET

Pedacode Pikaopas. Web-sovelluksen luominen

SAKU-materiaalit

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

IBM IT Education Services - DB2 YTR - sertifioinnit

Use of spatial data in the new production environment and in a data warehouse

Group 2 - Dentego PTH Korvake. Peer Testing Report

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

IFAGG WORLD CUP I, CHALLENGE CUP I and GIRLS OPEN INTERNATIONAL COMPETITION 1 st 2 nd April 2011, Vantaa Finland

Ohje digitaalisessa muodossa olevan aineiston siirtoon ja allekirjoittamiseen vaadittavien avainten muodostamisesta

Sense tiedostot Käyttöohje Opastinsilta 8 ae Helsinki

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Käyttäjätunnus Användarnamn Username. Salasana Lösenord Password. Kieli Språk Language. Kirjaudu sisään / Logga in / Login

Online-kurssien pikaopas Adobe Connect -yhteyden käyttämiseen

Verkkosivut perinteisesti. Tanja Välisalo

OFFICE 365 OPISKELIJOILLE

Microsoft SQL Server -tietokannan hallinta. Jouni Huotari

SENAATTILA uudistuu keväällä 2015

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

MY STANDARD -OHJE. mystandard.hansaworld.com. Standard ERP Pilvipalvelu Sivu 1/6

XML tehtävien työnkulku

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

E-lehtien siirtäminen SFX:stä Voyager-tietokantaan

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

API:Hack Tournee 2014

Strateginen tekijä Trello. Ville Tura, projektipäällikkö Tamora Oy

server "Ismo" $ uname -a Linux ismo #1 SMP Thu Sep 16 19:35:51 UTC 2010 i686 GNU/Linux $ cat /etc/issue Debian GNU/Linux 5.


Ennen varmenteen asennusta varmista seuraavat asiat:

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

ASCII-taidetta. Intro: Python

Power BI Tech Conference Power BI. #TechConfFI. Johdanto

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla

Lisenssin hakeminen PTC:n verkkosivun kautta

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

KYMENLAAKSON AMMATTIKORKEAKOULU. Ubuntu. Yukun Zhou

SPSS-pikaohje. Jukka Jauhiainen OAMK / Tekniikan yksikkö

Transkriptio:

TIE-20200 Ohjelmistojen suunnittelu Luento 3: Git & Gitlab Samuel Lahtinen 1

Ajankohtaista Harkkatyöhön ilmoittautumisdedis tänään Git ja ryhmäkutsut Versiohallinnan kutsut lähdössä matkaan huomenna

Ohjelmassa tänään Git ja jotain komennoista jne. Haarat ja niiden käyttö Gitlab Erilaisia tapoja käyttää versiohallintaa (haarat jne.)

Versiohallinnan käytöstä

Versiohallinta vs. Dropbox jne. Monet työkalut sisältävät sisäisesti versiohallinan kaltaista toimintaa (esim Word) Esim Dropbox toimii osin versiohallinnan tapaan, tekee uusia versioita, mahdollisuus palata vanhaankin Samanaikaisen tiedoston muokkailun sallivat työkalut (Google Docs, Overleaf, jne.)

Paikallinen versiohallinta Versiohallintatietokanta samalla koneella, muokattavana uusin versio tiedostosta, mahdollisuus palata vanhempiin jne. checkout tiedosto tietokone versiohallintatietokanta Versio 3 Versio 2 Versio 1 http://git-scm.com/book/en/v2/getting-started-about-version-control

Keskitetty versiohallinta Kuten SVN, versiohallintapalvelin, josta käyttäjät noutavat koneelleen (uusimman) version Commitin jälkeen palvelimella uusin versio, jos palvelin katoaa, jäljelle jää käyttäjiltä löytyvät versio, ei versiohistoriaa tms. Tietokone, käyttäjä 2 commit Tiedostot checkout palvelin versiohallintatietokanta Versio 3 Versio 2 Versio 1 Tietokone, käyttäjä 1 checkout Tiedostot

Hajautettu versiohallinta Distributed Version Control System, esim. Bazaar, Git, Mercurial Koko versiohallintatietokannan peilaaminen, ei pelkästään tietyn version hakeminen, tiedon palautus Mahdollisuus käyttää yhdistää eri palvelimia tiedosto Tietokone A versiohallintatietokanta Versio 3 Versio 2 Versio 1 palvelin versiohallintatietokanta Versio 3 Versio 2 Versio 1 Tietokone B versiohallintatietokanta tiedosto Versio 3 Versio 2 Versio 1 http://git-scm.com/book/en/v2/getting-started-about-version-control

Harkkatyön kanssa: Gitlab ja repot https://gitlab.rd.tut.fi/repolainen/docs/student_manual/intro.html

Git yleisesti Ei tallenna tiedostojen eroja, vaan aina snapshotin tiedostotoista, uudet versiot tai muuttumattomissa linkki edelliseen Lähes kaikki toiminnot ovat lokaaleja, historia jne. löytyy paikallisesti ilman verkkoyhteyttä Yleisin versiohallintaohjelmisto

Git ja peruskomennot Add, lisätään tiedosto Log, revisiohistoria Rm, poistetaan tiedosto Commit, muutosten vieminen eteenpäin Revert, undo muutoksille Checkout, tietyn haaran ottaminen työhaaraksi tai tietyn version hakeminen historiasta (git checkout revision_id) Branch, haaran luominen (työhaarasta) branch d, poistaa haaran Merge, yhdistetään nykyiseen haaraan annettu haara

Git ja peruskomennot Clone, kopioi olemassa olevan repon, tämän tekeminen kurssilla aivan alkuun saatte kopioitua itsellenne ryhmänne repositoryn (osoite Gitlabista) Push, työnnetään nykyisen työhaaran (commitoitu) tilanne palvelimelle (kurssilla gitlab.rd.tut.fi ) Fetch, haetaan toisesta repositoriosta tavaraa Pull, fetch + merge nykyiselle työhaaralle, clonen jälkeen tekee automaattisesti clone-osoitteesta pull rebase, hae uusimmat palvelimelta, tee rebase (lokaalisti) Remote, yhteistyön määrittelyä ja kyselyä origin, paikka mistä kloonattu remote v, lista osoitteista ja lyhenteistä remote a shortname url, lisätään uusi osoite (esim. git a test a.test.fi) git fetch shortname, saadaan haettua kyseinen repo (esim. tietyn käyttäjän)

Git ja haarat Haarat, päähaara master, muut haarat, branches Mihin voidaan käyttää? Bugikorjaukset Uusien ominaisuuksien toteuttaminen, yleinen tapa, uusi ominaisuus, uusi feature branch. Kun homma on toteutettu loppuun ja testattu, merge masterin kanssa (tai jonkun versiohaaran kanssa) Tietty versio ulos, tämän jälkeen tarvittavat päivitykset tämän haaran alle tai siitä lisähaarauttamalla

Esimerkki versiohallinan käytöstä teollisuudessa (feature-haara, jossa refaktorointeja) 2015-03-16 Created branch 'feature/lpk- 174_cookie-sessionstore Use encrypted cookie as the cookie store Refactored hashbang to use pure ring session Move session key from JSON to response level Moved session handling logic to sade.session Session ID must be generated manually 2015-03-17 Handle nil response correctly Refactored hashbang to use pure ring session Merge with develop Load current user data from db Read session id from session data web/sessionid was only logged redundantly Pass session to actions Renamed logging context key Moved user from noir session to pure ring session company info is needed in session fixed impersonation special case for oir-authority user Load current user attachment list from db architect flag is needed in a pre-check Merge with develop impersonator is also a virtual user Drop person id from public data No default key 2015-03-18 Check user data expiration at authorization middleware Merge with develop Set user data ttl to 5 minutes exclude virtual users Separated start function, added stop function Read session encryption key from file Added endpoint for restarting Jetty Set graceful shutdown timeout to 10 seconds Allow access only from localhost Merge with develop Added script for deploying keys 2015-03-19 Legend: Major refactoring Refactoring within feature dev reload api Reconnect to MongoDB Feture branch Creation / closing flow: Closed <feature> 'LPK- 174_cookie-sessionstore' Merge with dev. branch Review request flag flow: Merged <feature> 'LPK-174_cookie-sessionstore' to <develop> ('develop')

Esimerkki haarasta Alkutilanne: Issue tracker, issue 53 työn alle $ git checkout -b iss53 Switched to a new branch "iss53" Tai kahden komennon kera: $ git branch iss53 $ git checkout iss53 https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Jatkokehitystä Alkutilanne: Issue tracker, issue 53 työn alle git commit -a -m 'lisättiin puolustuskyky uudelle hahmotyypille' https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Kriittinen bugikorjauspyyntö Alkutilanne: Palataan takaisin master-haaran tilanteeseen, luodaan sen pohjalta uusi haara hotfix, muokkaillaan ja commit $ git checkout master Switched to branch 'master' $ git checkout -b hotfix Switched to a new branch 'hotfix' $ git commit -a -m 'fixed the broken email address' [hotfix 1fb7853] fixed the broken email address 1 file changed, 2 insertions(+) https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Bugikorjaus mukaan masteriin Alkutilanne: Hotfix toimii testien perusteella, hyvä homma, korjaus masteriin $ git checkout master $ git merge hotfix Hotfix-haara tehnyt tehtävänsä, voidaan poistaa $ git branch -d hotfix https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Palataan kehittämään issue 53:a $ git checkout iss53 Switched to branch "iss53" $ vim index.html $ git commit -a -m 'uusi taistelija valmis [issue 53]' https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Liitetään työn tulos päähaaraan $ git checkout master Switched to branch 'master' $ git merge iss53 Merge made by the 'recursive' strategy. https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Konflikteja? $ git merge iss53 Auto-merging kokopelisamassatiedostossa.cc CONFLICT (content): Merge conflict in kokopelisamassatiedostossa.cc $ git status On branch master You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add <file>..." to mark resolution) both modified: kokopelisamassatiedostossa.cc no changes added to commit (use "git add" and/or "git commit -a") $ git mergetool https://git-scm.com/book/en/v2/git-branching-basic-branching-and-merging

Rebase ja haarat Mergen avulla $ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command $ git checkout master $ git merge experiment https://git-scm.com/book/en/v2/git-branching-rebasing

Rebase ja update haluan, että omat muutokseni pistetään muiden tekemien muutosten päälle git pull --rebase origin master Origin/master Local master Local master (after rebase) https://git-scm.com/book/en/v2/git-branching-rebasing https://www.atlassian.com/git/tutorials/comparing-workflows/centralized-workflow

Gitlab? Git version control, versiohallinta Issue tracker, tikettien hallintaa Code snippets, jako versiohallinnan ulkopuolelle Yksinkertainen wiki Merge Requests, pyyntöjä, joilla voidaan pyytää henkilöä tekemään kahden haarojen yhditäminen (esim. Feature-haara päädevaushaaraan)

Pull & merge requests Pull request, yleinen tapa kommunikoida ja varmentaa ohjelman uusia osia, ominaisuuksia jne. Koodari saa homman valmiiksi, pull/merge request, työkaverit/intergraatiovastaava käy kurkaamassa koodin Tämän jälkeen masteriin merge Pull request, onko kunnossa Oon jämähtänyt, voiko joku jeesata Fork ja siellä puuhastelu Ei tarvi välttämättä Gitlabin työkalua, kevytversiona esim. Slack tai IRC ja siellä huutelu https://help.github.com/articles/using-pull-requests/

Työkaluja Perussetti: https://git-scm.com/downloads Git asiakasohjelmia, http://git-scm.com/downloads/guis Graafista tiedostojen hallintaan integroitua Windowsille: https://code.google.com/p/tortoisegit/ Linux, Windows, Mac ja graafinen: http://www.syntevo.com/smartgit/download Komentorivi (Linux, Lintulan git), Windowsille vastaava: https://git-forwindows.github.io/ SSH-avaimet ja niiden tuottaminen: https://gitlab.rd.tut.fi/help/ssh/readme

Erilaisia työskentelytapoja Kaikki masteriin Sopimukset, remoteen puskettava kama ei saa rikkoa mitään Vain testattua, toimivaa koodia Esim. Uudet commit masteriin, liittyy joko ominaisuuteen (feature) tai bugipäivitykseen Commitit ja tyypittäminen, bugikorjaus, feature, refaktorointi, jne. Pieniä inkrementtejä, työ ei voi olla auki pitkään (yhteistyö haastavaa) Masterin koodi usein rikki Feature branch workflow, ominaisuuspohjainen Kaikki tiettyyn ominaisuuteen liittyvä työ samassa haarassa, yhteistyö, samaan ominaisuuteen liittyvän työn jakaminen Master aina ehjänä Pull requestien käyttö kommunikaatiossa, oon saanut valmiiksi, tarkastakaa, oon jämähtänyt, jne. (pull request, review, merge to main)

Feature branch workflow Uusien ominaisuuksien/asioiden kehittämiseen liittyvä Kaikki tiettyyn ominaisuuteen liittyvä työ samassa haarassa, yhteistyö, samaan ominaisuuteen liittyvän työn jakaminen Master aina ehjänä Pull/merge requestien käyttö kommunikaatiossa, oon saanut valmiiksi, tarkastakaa, oon jämähtänyt, jne. (pull request, review, merge to main)

Gitflow Projektien julkaisut tärkeässä roolissa, isompiin projekteihin toimiva Featuret liittyvät devaushaaraan, masterissa vain julkaisuversiot Erilliset release-haarat (dedis tai tarpeeksi ominaisuuksia), valmistuessaan masteriin uutena version & dev-haaraan merge mahdollista tehdä samaan aikaan jatkokehitystä ja julkaisun valmistelua https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

GitLab Flow / Github flow Yksinkertaistusta GitFlowsta Masteriin menevät featuret valmiita tuotantoon, eli feature branch merge suoraan käyttöön Continuous deliveryt sun muut käytössä Oikealla, useita eri ympäristöjä, pre-productionin kautta productioniin https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

Forking workflow Yhden serveripuolen repon sijaan jokaisella oma serveripuolen repo Erillinen projektin hallinnoija hyväksyy ja tekee yhdistämiset viralliseen repositoryyn, joka sitten on muiden saatavilla (kloonattavissa ja synkronoitavissa) Erityisen toimiva nopeasti muuttuvien ryhmien kanssa, open source projektit ja enemmän tai vähemmän luotettavat devaajat Kaikki voivat työntää tuotoksiaan muiden saataville, pull request, tarkistaminen, hallinnoija vastaa hyväksynnästä https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow

Dictator and Lieutenants workflow Iiisoihin projekteihin, joissa hierarkiaa & paljon tekijöitä Yksi virallinen repo, josta uusin virallinen versio (blessed) Devaajat tekevät töitä tietyn alueen parissa, näillä oma luutnantti joka vastaa tästä vastuualueesta, tekevät omaan masteriinsa yhditelyn, integraatiomanagerina näille luutnanteille diktaattori, joka vastaa blessed reposta, tekee merget siihen suuntaan Blessed referenssinä kehittäjille, (kehittäjät rebase blessedistä aina kun päivittyy) Kevyempi yleinen versio, integration manager workflow https://git-scm.com/book/en/v2/distributed-git-distributed-workflows

Suosituksia Sopikaa yhtenäinen tapa käyttää gittiä, jonkinlainen workflow, jotain periaatteita jne. Rebase ennen pushia Pull requests ja niiden hyödyntäminen, kommunikointi ja varmistus

Aloittaminen Gitlabiin sisään, siellä repositoryn URL selville SSH-avaimen luominen ohjeiden avulla Sen jälkeen komentorivillä kloonaus Kokeile kaikenlaista paikallisesti, (add, commit, branch, merge ) Kokeile tunkea oma testihaara muiden saataville jne.

Asetuksia Editorin vaihtaminen toiseksi (Windows, jos on vim-allergia), esimerkkinä Notepad++ Notepad++ avautumaan gitbashissä, lisätään asennushakemisto pathiin Git ja editorin asettaminen (vaihda notepad++:n tilalle oma suosikkisi) git config --global core.editor \ "'C:/Program Files (x86)/notepad++/notepad++.exe' -multiinst -notabbar -nosession -noplugin Linux jne. Asenna mieliohjelma ja käytä, git configilla editorin vaihtaminen onnistuu

Yhteenveto Opittiin gitin peruskomentoja ja ideaa haarojen käytöstä jne. Opittiin hieman erilaisista versiohallinnan käyttötavoista (workflowt) Myöhemin kurssilla vähän lisää asiaa koodista ajoon tyyppisestä asiasta Osoiteita: https://gitlab.rd.tut.fi/ https://gitlab.rd.tut.fi/repolainen/ Materiaalia & ohjeistusta: http://git-scm.com/book/en/v2 https://gitlab.rd.tut.fi/repolainen/docs/student_manual https://www.atlassian.com/git/tutorials 36