Git- og Composer-kursus

Relaterede dokumenter
Sådan kommer du nemt i gang med Joomla!

Moderne open source versionsstyring

Introduktion til versionsstyring

FairSSL Fair priser fair support

Thomas Vedel, Vedel Consult DAPUG erfamøde 10. november Installation af SubVersion (svn)

Installationsguide - Windows

Advanced Word Template Brugermanual

Kenn Römer-Bruhn. WordPress. - gør dig synlig på nettet

Installation af DATABOKS online backup manager

Intro Denne vejledning beskriver proceduren for at opdatere en kørende UMS version til seneste version.

Installation og opsætning af EjdExplorer 2.4

Sådan installeres og teste WordPress på en lokal server

Buildvejledning (Release, patch og testversion)

FairSSL Fair priser fair support

Intro Denne vejledning beskriver proceduren for at opdatere en kørende UMS version til seneste version.

HELLO INSTALLATIONS GUIDE - DANSK RACKPEOPLE

Installation af WeroShop 2.4 S

GRAFISK WORKFLOW REDESIGN AF HJEMMESIDE

Manual Serif Web & Tableau Public

01. feb, Indhold

FairSSL Fair priser fair support

BRUGERVEJLEDNING TYPO3 CMS Nyhedsbrev modul

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

Vejledning til Kilometer Registrering

Installationsvejledning til F-Secure Anti-Virus

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Ruko SmartAir. Updater installation

Umbraco installationsvejledning

PDFxChange. Skriv i, tegn i og udfyld dine PDF'er på skærmen. Version: August 2012

OS2faktor. Windows Credential Providers. Version: Date: Author: BSG

Indholdsfortegnelse. Hvorfor skal jeg tage backup af min blog? Side 3. Tag backup med UpDraft Side 4. Tag manuelt backup Side

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

GRAFISK WORKFLOW. 1 Grafisk workflow

Rapport generator til Microsoft C5

VIGTIG information til alle kunder som kører backup over Internet via SSL - Kræver kundeaktion inden 17. april 2009!

FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017)

Installation af waypoints og søkort i OpenCPN

Kan f.eks. være en stor hjælp for læsesvage elever, der kan skrive direkte ind i opgaver, udfylde kopiark og få hjælp af oplæsningssoftware undervejs!

UDP Server vejledning

Wii Software Modificering. Uber Guide

Guide - Sådan opretter du en backup

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Brugermanual. BroadLink RM2

Konfiguration af mail og kalender iphone/ipad

Vejledning. Opsætning af Trio Web Vers 2.0 feb. 2010

SSSystems.local. Netværk. Sikkerhed. Webserver

Dokumentering af umbraco artikeleksport:

Installation af Oracle 10g Release 2 database

FairSSL Fair priser fair support

NN Markedsdata. Til. Microsoft Dynamics CRM 2011 Installations guide

GUIDE TIL CLOUD DRIVE

Softwaremanual. HP SimpleSave. Backup-software Brugsanvisning. SimpleSave

SkoleInfo. - En kort introduktion. HappyHill v. Stefan Lykkehøj Lund ::: :::

IT på Social og Sundheds Skolen Fyn Juni 2019

Denne vejledning er optimeret til Windows XP, men kan også bruges til de andre Windows styresystemer.

ONSCREENKEYS 5. Windows XP / Windows Vista / Windows 7 / Windows 8

Automatiseret Test & Continuous Integration. Rikke Simonsen & Mads Danquah

Sådan logger du ind... 2 Hvilke mapper kan du tilgå... 3 Visning af eksempel af en fil... 5 Sådan deler du en fil... 7 Se hvad du deler med andre...

Grafisk produktionsforståelse

ViKoSys. Virksomheds Kontakt System

Opsætning af MobilePBX med Kalenderdatabase

ProjectWise Explorer Installations Guide

Danmarks Tekniske Universitet Campus Service - Lyngby

Det Danske Filminstitut byder velkommen til vores UDP Server. Pligtaflevering - Version 2.0

Offline besked. Det budskab, der vil blive vist på sitet, når webstedet er offline.

Denne installationsvejledning beskriver hvordan man installerer EFI webservices til kommunikation mellem Navision Stat og Skat.

ShipAdvisor VALGFRIHED I WEBSHOPPEN

Miniguide for redaktører. Miniguide for redaktører. Leveret af DFF-EDB.dk

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober Jonas Christiansen Voss

DRFLive - dynamisk visning af resultater fra DRF Stævnesystem

LUDUS Web Bestilling og installation af SSL-servercertifikat Introduktion Bestilling af certifikat fra andre udbydere...

Hurtig Start Guide 1

Opgave: Digitalisering af et dokument

Transkript:

Git- og Composer-kursus Daniel Schledermann 4. oktober 2016 Indhold 1 Git 2 1.1 Hvad gør Git?........................... 2 1.1.1 Git er snapshot-baseret.................. 2 1.1.2 Lege lokalt........................ 2 1.2 Hvordan bruger man git..................... 2 1.2.1 Starte et nyt repo.................... 2 1.2.2 Tilføje nogle filer..................... 3 1.2.3 Oversigt over arbejde................... 3 1.2.4 Remotes.......................... 3 1.2.5 Branching......................... 4 1.2.6 Fortryde.......................... 4 1.2.7 Samle ændringerne igen................. 4 1.2.8 Merge........................... 5 1.2.9 Rebase........................... 5 1.2.10 Ignore-filer........................ 6 2 Composer 6 2.1 Struktur.............................. 6 2.2 Kommandoer........................... 8 2.2.1 Install........................... 9 2.2.2 Update.......................... 9 2.2.3 Require.......................... 9 3 AU anvendelsen 9 3.1 Site-repoet............................. 9 3.1.1 At bygge et site:..................... 10 3.1.2 Grundbestandele..................... 10 3.1.3 Installation og afinstallation af extensions....... 11 1

3.2 Extension repoer......................... 11 3.3 Fremtiden?............................ 11 Versionsstyring, afhængighedskontrol og teknisk workflow for TYPO3- sites med fokus på AU s miljø. 1 Git Startet af Linus Torvalds for med formål at tjene som versionsstyring for selve Linux-kernen. Det er fra starten designet til at styre store projekter. 1.1 Hvad gør Git? Git er et lokal versionsstyring hvor hele datastrukturen; commits, tags, branches ligger lokalt. Det er ikke muligt skærme specifikke grene. 1.1.1 Git er snapshot-baseret. Det vil vil sige at et commit ikke består at forrigge commit + nogle patches som i eksempelvis Subversion eller CVS. I stedet er et commit en erklæring af at sådan ser filerne ud lige nu, uanset hvad der ellers findes af commits. Det vil sige at hvis man beskærer et git-træ, så vil et givet commit stadig indehold de samme filer. Det vil også sige at diff s beregnes on-the-fly. Det har vist sig at være meget effektivt på pladskravet til git. Et stort repo fylder gerne 1/20 af det tilsvarende i Subversion. 1.1.2 Lege lokalt Fordi alt ligger lokalt kan man også rode frit rundt med sine branches og commits så længe man ikke har delt dem med nogen. 1.2 Hvordan bruger man git 1.2.1 Starte et nyt repo Det er simpelt. Man behøver ikke nogen server eller andet for at komme i gang. git init 2

Det så sådan set det. Der ligger nu en tom git-datastruktur i.git - mappen. 1.2.2 Tilføje nogle filer Et repo er selvsagt ikke meget værd hvis det ikke indeholder nogle filer. Tekstfiler af en eller anden art håndterer git bedst, men det tager gladelige alle typer af filer. git add enfil.txt Se hvad der er ændret: git status Når man er klar skal man commit e sit arbejde. git commit -m [TASK] Did an awesome change I TYPO3-sammenhæng bruger vi specifikke formater til at angive typen af ændring: https://wiki.typo3.org/commitmessage_format_(git) Dette kan bruges til at danne oversigter over typer af ændringer. 1.2.3 Oversigt over arbejde Der findes forskellige værktøjer, nogle få: git log - giver en shell baseret oversigt gitk - giver et X11-vindue tig - giver shell baseret interaktivt træ 1.2.4 Remotes En remote er en forbindelse til et server. Oprettes automatisk hvis man kloner et repo. git clone ssh://gitolite3@au.lnk.lfac.dk/typo3cms/extensions/aufluidpages Ellers kan man sætte det hvis man har oprettet repoet lokalt: git remote add origin ssh://gitolite3@au.lnk.lfac.dk/typo3cms/extensions/ausomeext git push --set-upstream origin master 3

Man taler med en remote med kommandoerne: fetch - henter datastrukturer fra remoten pull - henter datastrukturer fra remoten og merger ændringer til lokal push - sender datastrukturer til remoten 1.2.5 Branching Dette er nærmest noget af det vigtigste ved git. Det er muligheden for at skrive en helt ny variation af repoet # Hvor står jeg? git branch -la # Lav en ny branch herfra git branch feature/jahd-666 # Arbejde på den git checkout feature/jahd-666 Historikken for master og feature/jahd-666 kan nu udvikle sig frit. 1.2.6 Fortryde Git kan også nulstille aktuelle ændringer. Smid det hele væk: git reset [--hard] Eller nulstil enkelte filer med: git checkout -- sti/til/fil.txt Hvis man har en smart editor kan den gøre det endnu mere finmasket. 1.2.7 Samle ændringerne igen Git har forskellige måde at samle ændringer på igen. Blot det mest anvendte måder her. 4

1.2.8 Merge Det mest oplagte er at bruge en merge. Dette sker enten eksplicit ved en: git checkout master git merget feature/jahd-666 Eller det kan ske implicit fra en upstream. git pull Merge beholder den fulde historik over hvad der er sket og viser med et merge-commit hvor sammenfletningen er sket. Dette er normalt enkelt, simpelt og nemt at overskue. 1.2.9 Rebase PAS PÅ. Med rebase kan man omskrive historikken for at få den simplere. Hvis man har arbejdet rodet med mange lokale branches, kode der har ligget og flydt i lang tid, eller bare fragmenterede commits, så kan man overveje rebase. Rebase må kun udføres på egne lokale commit der ikke er skubbet til en upstream. Hvornår er det så rimeligt at bruge rebase? Har man en triviel ændring, men upstream har ændret sig? git pull --rebase Er en lokal feature branch blevet gammel, måske fordi ændringen ikke er godkendt. git pull git checkout feature/jahd-666 git rebase master Nu vil feature/jahd-666 blive omplantet til de commits der er sket i mellemtiden på master. Man har keglet rundt med en masse commits og gerne vil smelte nogle af dem sammen, så det hele fremstår lidt mere læsbart. git rebase -i HEAD~2 Og igen: KUN på ting der ikke er push et til nogen remote. 5

1.2.10 Ignore-filer De fleste repoer indeholder.gitignore-filer. Disse filer beskriver hvad der specifikt ikke skal versionsstyres. Dette er nok så vigtigt. Normalt så ligger afhængigheder, midlertidige filer og brugerindhold i dette filter. 2 Composer Composer er grundlæggende en dependency manager til PHP. Det har udviklet sig til defacto-standard for PHP. https://getcomposer.org. Derfor har man ved TYPO3 også besluttet sig for at bruge den. Den erstatter eller supplerer en stor del af det arbejde der normalt sker i extension manageren. Vi bruger Composer til at vedligeholde installationerne, både TYPO3-core og extensions. 2.1 Struktur Et composer-projekt indeholder altid en composer.json-fil. Composer.json identificerer projektet. Et eksempel fra aufluidpages: } "name": "aarhus-universitet/aufluidpages", "description": "AU templates and backend layouts", "type": "typo3-cms-extension", "version": "1.7.2" Der er et vendor-name, et projektnavn og en version. For et simpelt projekt vil det ofte være det. Det er det for alle vores extensions. For sites, der har en masse afhængigheder, ser det lidt anderledes ud. Her er dependencies defineret med mønster, der kan være defineret composer-repo er og eventuelt parametre for hentning. Dette udtræk fra i29 s composer.json: "minimum-stability": "dev", "prefer-stable": true, "name": "aarhus-universitet/typo3-i29", "description": "Aarhus Universitet TYPO3 i29", "repositories": [ "type": "composer", 6

"url": "https://composer:vah1ea5ji0op1pee1xoo@composer-repo.au.dk/" "type": "composer", "url": "https://composer.typo3.org/" } ], "config": "vendor-dir": "Packages/Libraries", "bin-dir": "bin", "secure-http": false "require": "typo3/cms": "6.2.25", "aarhus-universitet/au": "dev-master",..., "aarhus-universitet/validateurls": "dev-master", "dschledermann/linkservice": "dev-master",..., "typo3-ter/datafilter": "*",..., "typo3-ter/powermail": "2.17.*",..., "typo3-ter/seo-basics": "^0.9.2" } } Ovenstående mønstre vil dog skifte fra tid til anden. Derfor skal man altid beregne konkrete pakker med composer update. Mere om det lidt senere. Disse ændringer skrives ned i composer.lock-filen. Eksempelvis er Powermail beregnet til denne version: "name": "typo3-ter/powermail", "version": "2.17.2", "dist": "type": "t3x", "url": "https://typo3.org/extensions/repository/download/powermail/2.17.2/t3x/" "reference": null, "shasum": null 7

"require": "php": ">= 5.3.0", "typo3/cms-core": ">= 6.2.7, <= 7.99.99" "replace": "powermail": "self.version" "type": "typo3-cms-extension", "autoload": "classmap": [ "" ], "exclude-from-classmap": [ "Tests", "tests", "class.ext_update.php" ] "authors": [ "name": "Powermail Development Team", "email": "alexander.kellner@in2code.de", "company": "in2code.de", "username": "wunschtacho" } ], "description": "Powermail is a well-known, editor-friendly, powerful\n "time": "2015-12-16 14:40:57" and e Både composer.json og composer.lock skal versionsstyres for at være sikker på at reproducere nøjagtig samme resultat alle steder filerne er til rådighed. 2.2 Kommandoer Når vi bruger Composer i det daglige arbejde er der normalt tre kommandoer vi bruger 8

2.2.1 Install Med composer install bruger man til at bygge projektet præcist som det er beskrevet i composer.lock filen. For en systemadministor vil det normalt være eneste composer-kommando man under daglige omstændigheder kan forvente at skulle bruge. composer install 2.2.2 Update Med composer update kan man ændre på de beregnede pakker. Dette vil normalt være en udvikleropgave. Man kan vælge at fremrykke alle pakker composer update Eller bare nogle specifikke composer update typo3-ter/powermail aarhus-universitet/aufluidpages Dette vil introducere ændringer i composer.lock, som skal commit es til git for at reproducere ændringen andre steder med composer install. 2.2.3 Require Dette kan man bruge til at tilføje nye afhængigheder til projektet. Det kan være at man vil tilføje en ny extension composer require typo3-ter/tcdirectmail 3.1.* Dette vil opdatere både composer.json og composer.lock. 3 AU anvendelsen 3.1 Site-repoet Alle installationer versionsstyres for tiden i det såkaldte site-repo. Det har adressen: ssh://gitolite3@au.lnk.lfac.dk/config/site.git 9

3.1.1 At bygge et site: Hvis man skal have fat i en installation, i29 til eksempel, vil rækkefølgen være: git clone ssh://gitolite3@au.lnk.lfac.dk/config/site.git http cd http git checkout i29 composer install 3.1.2 Grundbestandele Alle installationer består af overraskende få komponenter:.gitignore.htaccess composer.json composer.lock robots.txt typo3conf/additionalconfiguration.example.php typo3conf/basedomain.example.php typo3conf/localconfiguration.php typo3conf/packagestates.php typo3conf/realurl_config.php Første gang et site opsættes skal typo3conf/additionalconfiguration.example.php kopieres over til typo3conf/additionalconfiguration.php og værdierne tilpasses den aktuelle installation. Tilsvarende skal typo3conf/basedomain.example.php også kopieres over til typo3conf/basedomain.php og tilpasses. Database og brugerfiler skal indhentes typisk fra backup en. Thomas&Ole hjælper :-). 10

3.1.3 Installation og afinstallation af extensions Skal man tilføje eller fjerne en extension skal man både bruge composer og TYPO3-backenden. Rækkefølgen vil være at man først bruger composer til at require extension. Dernæst går man i TYPO3 extension manager og installerer på normal vis. Når man er færdig vil man skulle commit e følgende git add composer.lock composer.json git add typo3conf/packagestates.php typo3conf/localconfiguration.php git commit -m [FEATURE] Installed crazyext git push På demo eller live vil man så kunne køre: git pull composer install cd typo3temp rm -rf Cache/ Nu vil extension så både være installeret og konfigureret. 3.2 Extension repoer Vi har en git-server på: ssh://gitolite3@au.lnk.lfac.dk/typo3cms/extensions/<ext name> Det tager desværre temmelig lang tid at scanne en masse git-repoer. Derfor er der opsat et såkaldt Satis -site, der scanner git-repoerne og samler informationerne til et composer-repo. Dette site kan ses her: https://composer:vah1ea5ji0op1pee1xoo@composer-repo.au.dk/ Hvis der tilføjes helt nye git-repoer, så skal de sættes op på Satis -sitet. 3.3 Fremtiden? Med alt under Git- og Composer-kontrol er vejen banet for mere automatiserede processer. Hvilke ønsker er der? Vi tænker naturligvis på continuous integration, eksempelvis med Jenkins. https://jenkins.io/ 11