Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-CommunityPresentation Transcript
TYPO3-Camp Munich - 09.-11. September 2011 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Verteilte Softwareentwicklung und -reviews in der TYPO3-Community Steffen Gebert <steffen.gebert@typo3.org> Twitter: @StGebert TYPO3-Camp Munich - 09. - 11. September 2011 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
EinführungVorstellung Steffen Gebert TYPO3 Core Team Member Admin Team Member Diplom-Informatiker Doktorand / Wissenschaftl. Mitarbeiter an der Uni Würzburg Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
EinführungÜberblick Software-Reviews Git & Gerrit Worfklows & Konventionen Weitere Informationen Fragen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Software-ReviewsFoto: mario.rimannhttp://www.flickr.com/photos/mrimann/3534514430/ Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
EinführungSoftware-Reviews Qualitä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 toTYPO3-Entwicklung mit Git und Gerrit share
Software-ReviewsFunktionales Review Eine Änderung... behebt den Fehler / ermöglicht ein neues Feature stört keine andere Funktionalität Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Software-ReviewsCode-Review Eine Ä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 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Software-Reviews Review per Mailingliste (damals...) “Requests for Comments” (RFCs) per core-team-MailinglisteFormalitäten /Konventionen
Software-ReviewsReview per Mailingliste Voting SVN Commit
Software-ReviewsMailingliste: Ordnung halten man kämpfte sich so durch... Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritMigration zu Git & Gerrit Prä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 toTYPO3-Entwicklung mit Git und Gerrit share
Foto: tnimalan Git & Gerrit im Einsatzhttp://www.sxc.hu/photo/1275444 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGit Lokale Kopie des Verteiltes Versionskontrollsystem gesamten Repositories Entwickelt für die Linux-Kernelentwicklung von Linus Thorvalds Sehr mächtig Von Nerds für Nerds :-) Komplexer als Subversion Basiswissen wird im Folgenden vorausgesetzt Danke an Andreas Wolf für den Crashkurs Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
lokale Aktion Veröffentlichung Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGit: 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_mustang http://www.flickr.com/photos/astros/58932360/ Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritRepository klonen git 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 toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGerrit Web-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 toTYPO3-Entwicklung mit Git und Gerrit share
GIT “standalone”GIT & Gerrit Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGerrit Momentan genutzt für TYPO3v4: Core, Workspaces, Extbase, Fluid Extensions: community, extension_builder (ehem. extbase_kickstarter), dam FLOW3 TYPO3v5 http://review.typo3.org Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & Gerrit Gerrit Übersicht ´oo
Git & GerritGerrit Change-Id Jeder Change-Request hat eindeutige Change-Id Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Patches reviewenFoto: stylesr1http://www.sxc.hu/photo/605324 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Git & GerritÄnderung reviewen Verschiedene Patch-Versionen
Git & GerritCode Review Diff aufrufen
Git & GerritDiff-Ansicht Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritDiff-Ansicht Inline-Kommentare mit Doppelklick Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritFunktionaler Test checkout wählen kopieren
Git & GerritFunktionaler Test Befehlszeile ausführen Exakter Stand wird ausgecheckt, incl. Änderung Testen! Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritVoting abgeben
Git & Gerrit Voting abgeben Funktionaler Test -1/0/+1 Code Review -1/0/+1 Anmerkungen - besonders beinegativem Review!
Git & Gerrit Voting abgeben Members only.. Anmerkungen - besonders beinegativem Review!
Foto: csremedy Eigene Patches sendenhttp://www.sxc.hu/photo/1267108 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGit konfigurieren git config --global user.name "Your Name" git config --global user.email "foo@example.com" muss mit Adresse in Gerrit übereinstimmen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGerrit Change-Id Jeder Change-Request hat eindeutige Change-Id Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritGerrit Change-Id Automatische Generierung über Git Commit Hook submodule ≅ cd typo3_src-git scp -p -P 29418 svn:externals <username>@review.typo3.org:hooks/commit-msg .git/hooks/ git submodule update --init git submodule foreach scp -p -P 29418 <username>@review.typo3.org:hooks/commit-msg .git/hooks/ Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritEigene Änderung senden
Git & GerritEigene Änderung senden Aktuellen Stand bekommen git checkout <release-branch> z.B. master git pull TYPO3_4-5 Änderung am Code durchführen TYPO3_4-4 Änderung reviewen git diff Committen git commit -a Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritCommit Message Format CM vergleibt auf ewig in der History Spezielle Konventionen für Commit Message [BUGFIX] Recursion error when including TypoScript files Text 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: #25374 Releases: 4.6, 4.5 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & GerritCommit Message Hook git log -1 zeigt 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: 69fb8866b94c75b3b73395cfa4bd0a900e6ab53c Resolves: #25374 Releases: 4.6, 4.5 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Git & Gerrit Änderung pushen git push origin HEAD:refs/for/<release-branch> gewünschter Remotealternativ z.B. github Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Git & GerritÄnderung pushen git push origin HEAD:refs/for/<release-branch> z.B. master TYPO3_4-5Stand des eigenen Pseudo-Branch TYPO3_4-4 Working-Tree in Gerrit Gerrit antwortet mit Erfolgsmeldung “New Changes” und Review-URL Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & Konventionen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenReview-Workflow Issue in Forge eröffnen Commit machen, Pushen Auf Reviews warten Nachbessern mit neuer Patch-Version oder freuen :-) Ggf. weitere Branches pushen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenGrundsätzliches Change 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 toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenAktive Branches master (wird später TYPO3_4-6 abgespalten) TYPO3_4-5 (current stable, LTS) TYPO3_4-4 (oldstable) TYPO3_4-3 (oldoldstable) Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenIn welchen Branch..? Features, Änderungen des Verhaltens master (keine Features in veröffentlichten Versionen) Bugfixes master (4.6) master nicht current stable (4.5) vergessen! LTS (4.5) ältere Branches nach Belieben (4.4, 4.3) Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenErforderliche Reviews Change Request wird gemerged bei jeweils mindestens Verified Code Review Team-Mitglied ✓ (+2) ✓ (+2) Beliebiger +1 +1 Reviewer Weitere Reviews sind willkommen! Übernahme (“Submit”) durch Team-Mitglied in Gerrit Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Workflows & KonventionenMr. Hudson & Mr. Jenkins Jenkins Continuous Integration Server (vormals Hudson) Automatisiertes Review Momentane Tests Coding Guide Lines PHP lint TODO Unit Tests http://ci.typo3.org Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Weitere InformationenFoto: Egilshayhttp://www.sxc.hu/photo/1095604 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
Weitere InformationenGit-Probleme Screenshot Google Pro Git Buch http://progit.org (kostenlos) Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Weitere InformationenWiki: “Git” landing page Git Grundlagen
Weitere InformationenWiki: “Git” landing page Quellcode über Git beziehen
Weitere InformationenWiki: “Git” landing page Contributing (interessant ;-))
Weitere InformationenWiki: “Git” landing page Workflow nochmals erklärt
Weitere InformationenWiki: “Git” landing page Klappt was nicht?
Weitere InformationenWiki: “Git” landing page nice to know...
Weitere InformationenWiki: “Git” landing page Begrifflichkeiten erklärt
Weitere InformationenWiki: Tutorials toll!!
Weitere InformationenWiki: Tutorials doof...
Weitere InformationenWiki: Ausfürliche CLI-Anleitung
Weitere InformationenProbleme? Fragen! Mailinglisten / Newsgroups typo3.core typo3.dev lists.typo3.org Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
Weitere InformationenNicht angesprochen... Neue Patchversion erstellen modifiziert vorherigen git commit --amend Commit Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
????? ?? ? ?? ?? ? Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
inspiring people to share.
Let LinkedIn power your SlideShare experience
+
Let LinkedIn power your SlideShare experience
Customize SlideShare content based on your interests
We will import your LinkedIn profile and you will be visible on SlideShare.
Keep up to date when your LinkedIn contacts post on SlideShare