git & gerrit: verteilte softwareentwicklung und -reviews in der typo3-community

Post on 19-May-2015

2.849 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Git und das Review-System Gerrit in der TYPO3 Community. Vortrag auf dem TYPO3camp Stuttgart am 21.05.2011

TRANSCRIPT

Inspiring people toshare

TYPO3-Camp Stuttgart - 20.-22. Mai 2011

TYPO3-Entwicklung mit Git und Gerrit

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Verteilte Softwareentwicklung und -reviewsin der TYPO3-Community

Steffen Gebert <steffen.gebert@typo3.org>

Twitter: @StGebert

TYPO3-Camp Stuttgart - 20./22. Mai 2011

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Einführung

Vorstellung

Steffen Gebert

TYPO3 Core Team Member

Diplom-Informatiker

Doktorand / Wissenschaftl. Mitarbeiteran der Uni Würzburg

Inspiring people toshare

Einführung

TYPO3-Entwicklung mit Git und Gerrit

ÜberblickSoftware-Reviews

Git & Gerrit

Workflows & Konventionen

Weitere Informationen

Fragen

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Software-Reviews

Foto: mario.rimannhttp://www.flickr.com/photos/mrimann/3534514430/

Inspiring people toshare

Einführung

TYPO3-Entwicklung mit Git und Gerrit

Software-ReviewsQualitätssicherung

Vier (oder sechs) Augen sehen mehr als zwei

Fehler werden immer gemacht - man muss sie nur finden!

Aufnahme in offiziellen Quellcode erst nach erfolgtem Review

Verschiedene Arten des Reviews, u.a.

Funktionalität

Code

Inspiring people toshare

Software-Reviews

TYPO3-Entwicklung mit Git und Gerrit

Funktionales ReviewEine Änderung...

behebt den Fehler / ermöglicht ein neues Feature

stört keine andere Funktionalität

Inspiring people toshare

Software-Reviews

TYPO3-Entwicklung mit Git und Gerrit

Code-ReviewEine Änderung am Quellcode...

ist korrekt(macht das, was sie tun soll und nichts anderes)

ist sinnvoll programmiert(Robustheit, Performance, etc.)

entspricht gewünschten Programmierstandards(z.B. TYPO3 Coding Guide Lines)

Testmethoden

Automatische Analyse (v.a. CGL)

Durchlesen

Software-Reviews

Review per Mailingliste (damals...)“Requests for Comments” (RFCs) per core-team-Mailingliste

Formalitäten /Konventionen

Software-Reviews

Review per Mailingliste

Voting

SVN Commit

Inspiring people toshare

Software-Reviews

TYPO3-Entwicklung mit Git und Gerrit

Mailingliste: Ordnung haltenman kämpfte sich so durch...

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Migration zu Git & GerritPräsentation auf Core-Team-Meeting im Juli 2010

Einigkeit über Einführung

Testkaninchen FLOW3 ab Aug. 2010

Migration für v4 während Code-Sprint am 1. März 2011

Erwartete Vorteile

Mehr Übersicht für Reviewer

Einfachere Entwicklung/Integration großer Features

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Git & Gerrit im EinsatzFoto: tnimalanhttp://www.sxc.hu/photo/1275444

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

GitVerteiltes Versionskontrollsystem

Entwickelt für die Linux-Kernelentwicklung von Linus Thorvalds

Sehr mächtig

Komplexer als Subversion

Basiswissen wird im Folgenden vorausgesetzt

Danke an Tobias Günther für den Crashkurs

Lokale Kopie desgesamten Repositories

Von Nerds für Nerds :-)

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

lokale Aktion Veröffentlichung

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Git: Wiederholung“trunk” heißt jetzt “master”

Commits werden über SHA-1 identifiziert

Ein Commit ist lokal - jeder darf committen

Committs lassen sich nachträglich ändern

Branching ist alltäglich

Foto: texas_mustanghttp://www.flickr.com/photos/astros/58932360/

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Repository klonengit clone --recursive git://git.typo3.org/TYPO3v4/Core.git

Meta-Informationen landen im Verzeichnis .git/

Ausgecheckter Branch: master

Gesamte History seit TYPO3 3.6 enthalten

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

GerritWeb-basiertes Code-Review Tool

Für Android-Entwicklung von Google entwickelt

Baut auf Git als VCS auf

Wacht über das offizielle Git-Repository

Hauptgrund für die Migration des TYPO3-Codes nach Git

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

GIT “standalone”

GIT & Gerrit

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

GerritMomentan genutzt für

TYPO3v4: Core, Workspaces, Extbase, Fluid

Extensions: community, extension_builder (ehem. extbase_kickstarter)

FLOW3

TYPO3v5

http://review.typo3.org

Git & Gerrit

Gerrit Übersicht´

o o

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Gerrit Change-IdJeder Change-Request hat eindeutige Change-Id

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Patches reviewen

Foto: stylesr1http://www.sxc.hu/photo/605324

Git & Gerrit

Änderung reviewen

Git & Gerrit

Änderung reviewen

Commit Message➪ Konventionen

Git & Gerrit

Änderung reviewen

Reviews

Git & Gerrit

Änderung reviewen

Verschiedene Patch-Versionen

Git & Gerrit

Code Review

Diff aufrufen

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Diff-Ansicht

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Diff-AnsichtInline-Kommentare mit Doppelklick

Git & Gerrit

Funktionaler Test

kopieren

checkout wählen

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Funktionaler TestBefehlszeile ausführen

Exakter Stand wird ausgecheckt, incl. Änderung

Testen!

Git & Gerrit

Voting abgeben

Git & Gerrit

Voting abgeben

Funktionaler Test-1/0/+1

Anmerkungen - besonders bei

negativem Review!

Code Review-1/0/+1

Git & Gerrit

Voting abgeben

Members only..

Anmerkungen - besonders bei

negativem Review!

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Eigene Patches sendenFoto: csremedyhttp://www.sxc.hu/photo/1267108

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Git konfigurierengit config --global user.name "Your Name"git config --global user.email "foo@example.com"

muss mit Adresse in Gerrit übereinstimmen

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Git konfigurierengit config --global user.name "Your Name"git config --global user.email "foo@example.com"

git config --global branch.autosetuprebase remote git config --global url."ssh://<username>@review.typo3.org:29418" .pushInsteadOf git://git.typo3.org

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Git konfigurierengit config --global user.name "Your Name"git config --global user.email "foo@example.com"

git config --global branch.autosetuprebase remote git config --global url."ssh://<username>@review.typo3.org:29418" .pushInsteadOf git://git.typo3.org

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Git konfigurierengit config --global user.name "Your Name"git config --global user.email "foo@example.com"

git config --global branch.autosetuprebase remote git config --global url."ssh://<username>@review.typo3.org:29418" .pushInsteadOf git://git.typo3.org

Push URL

Fetch/Pull URL

Git & Gerrit

Gerrit: SSH-Key festlegen

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Gerrit Change-IdJeder Change-Request hat eindeutige Change-Id

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Gerrit Change-IdAutomatische Generierung über Git Commit Hook

cd typo3_src-gitscp -p -P 29418 <username>@review.typo3.org:hooks/commit-msg .git/hooks/

git submodule update --initgit submodule foreach 'scp -p -P 29418 <username>@review.typo3.org:hooks/commit-msg .git/hooks/'

submodule ≅ svn:externals

Git & Gerrit

Eigene Änderung senden

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Eigene Änderung sendenAktuellen Stand bekommengit checkout <release-branch>git pull

Änderung am Code durchführen

Änderung reviewengit diff

Committengit commit -a

z.B. masterTYPO3_4-5TYPO3_4-4

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Commit Message FormatCM verbleibt auf ewig in der History

Spezielle Konventionen für Commit Message

Text[BUGFIX] Recursion error when including TypoScript files

When editing TypoScript in the template module and using the "Include TypoScript file content" option with more than 9 files, then the 10th and all later files gets screwed up.

Resolves: #25374Releases: 4.6, 4.5

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Commit Message Hookgit log -1zeigt letzte Commit Message an

Change-Id-Zeile wurde automatisch hinzugefügt(ansonsten weigert Gerrit später die Annahme)

[BUGFIX] Recursion error when including TypoScript files

When editing TypoScript ...

Change-Id: 69fb8866b94c75b3b73395cfa4bd0a900e6ab53cResolves: #25374Releases: 4.6, 4.5

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Änderung pushengit push origin HEAD:refs/for/<release-branch>

gewünschter Remotealternativ z.B. github

Inspiring people toshare

Git & Gerrit

TYPO3-Entwicklung mit Git und Gerrit

Änderung pushengit push origin HEAD:refs/for/<release-branch>

Gerrit antwortet mit Erfolgsmeldung “New Changes” und Review-URL

Pseudo-Branchin Gerrit

z.B. masterTYPO3_4-5TYPO3_4-4Stand des eigenen

Working-Tree

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Workflows & Konventionen

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

Review-WorkflowIssue in Forge eröffnen

Commit machen, Pushen

Auf Reviews warten

Nachbessern mit neuer Patch-Version oder

freuen :-)

Ggf. weitere Branches pushen

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

GrundsätzlichesChange Request bezieht sich jeweils auf einen Branch

Nur ein Eintrag für alle Branches in Forge erforderlich

Nach erfolgreichem Review automatisch im nächsten Release

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

Aktive Branchesmaster (wird später TYPO3_4-6 abgespalten)

TYPO3_4-5 (current stable, LTS)

TYPO3_4-4 (oldstable)

TYPO3_4-3 (oldoldstable)

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

In welchen Branch..?Features, Änderungen des Verhaltens

master (keine Features in veröffentlichten Versionen)

Bugfixes

master (4.6)

current stable (4.5)

LTS (4.5)

ältere Branches nach Belieben (4.4, 4.3)

master nicht vergessen!

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

Erforderliche ReviewsChange Request wird gemerged bei jeweils mindestens

Weitere Reviews sind willkommen!

Übernahme (“Submit”) durch Team-Mitglied in Gerrit

Verified Code Review

Team-Mitglied ✓ (+2) ✓ (+2)

Beliebiger Reviewer

+1 +1

Inspiring people toshare

Workflows & Konventionen

TYPO3-Entwicklung mit Git und Gerrit

Mr. Hudson & Mr. JenkinsJenkins Continuous Integration Server (vormals Hudson)

Automatisiertes Review

Momentane Tests

Coding Guide Lines

PHP lint

TODO

Unit Tests

http://ci.typo3.org

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

Weitere InformationenFoto: Egilshayhttp://www.sxc.hu/photo/1095604

Inspiring people toshare

Weitere Informationen

TYPO3-Entwicklung mit Git und Gerrit

Git-ProblemeScreenshot Google

Pro Git Buchhttp://progit.org (kostenlos)

Weitere Informationen

Wiki: “Git” landing page

Git Grundlagen

Weitere Informationen

Wiki: “Git” landing page

Quellcode überGit beziehen

Weitere Informationen

Wiki: “Git” landing page

Contributing(interessant ;-))

Weitere Informationen

Wiki: “Git” landing page

Workflownochmals erklärt

Weitere Informationen

Wiki: “Git” landing page

Klappt was nicht?

Weitere Informationen

Wiki: “Git” landing page

nice to know...

Weitere Informationen

Wiki: “Git” landing page

Begrifflichkeiten erklärt

Weitere Informationen

Wiki: Tutorials

toll!!

Weitere Informationen

Wiki: Tutorials

doof...

Weitere Informationen

Wiki: Ausfürliche CLI-Anleitung

Inspiring people toshare

Weitere Informationen

TYPO3-Entwicklung mit Git und Gerrit

Probleme?Fragen!

Mailinglisten / Newsgroupstypo3.coretypo3.dev

lists.typo3.org

Inspiring people toshare

Weitere Informationen

TYPO3-Entwicklung mit Git und Gerrit

Nicht angesprochen...Neue Patchversion erstellengit commit --amend

modifiziert vorherigen Commit

Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit

?????????????

inspiring people to share.

top related