Date post: | 19-May-2015 |
Category: |
Technology |
Upload: | steffen-gebert |
View: | 1,289 times |
Download: | 3 times |
Inspiring people toshare
TYPO3-Camp Munich - 09.-11. September 2011
TYPO3-Entwicklung mit Git und Gerrit
Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit
Verteilte Softwareentwicklung und -reviewsin der TYPO3-Community
Steffen Gebert <[email protected]>
Twitter: @StGebert
TYPO3-Camp Munich - 09. - 11. September 2011
Inspiring people toshareTYPO3-Entwicklung mit Git und Gerrit
Einführung
Vorstellung
Steffen GebertTYPO3 Core Team Member
Admin 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
Worfklows & 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 Andreas Wolf 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), dam
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 "[email protected]"
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 "[email protected]"
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 "[email protected]"
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 "[email protected]"
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 vergleibt 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.