Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community

on

  • 1,516 views

 

Statistics

Views

Total Views
1,516
Views on SlideShare
1,487
Embed Views
29

Actions

Likes
3
Downloads
16
Comments
0

1 Embed 29

http://lanyrd.com 29

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community Presentation Transcript

  • 1. TYPO3-Camp Munich - 09.-11. September 2011 Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 2. 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
  • 3. 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
  • 4. EinführungÜberblick Software-Reviews Git & Gerrit Worfklows & Konventionen Weitere Informationen Fragen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 5. Software-ReviewsFoto: mario.rimannhttp://www.flickr.com/photos/mrimann/3534514430/ Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. Software-Reviews Review per Mailingliste (damals...) “Requests for Comments” (RFCs) per core-team-MailinglisteFormalitäten /Konventionen
  • 10. Software-ReviewsReview per Mailingliste Voting SVN Commit
  • 11. Software-ReviewsMailingliste: Ordnung halten man kämpfte sich so durch... Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 12. 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
  • 13. Foto: tnimalan Git & Gerrit im Einsatzhttp://www.sxc.hu/photo/1275444 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 14. 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
  • 15. lokale Aktion Veröffentlichung Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. GIT “standalone”GIT & Gerrit Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 20. 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
  • 21. Git & Gerrit Gerrit Übersicht ´oo
  • 22. Git & GerritGerrit Change-Id Jeder Change-Request hat eindeutige Change-Id Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 23. Patches reviewenFoto: stylesr1http://www.sxc.hu/photo/605324 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 24. Git & GerritÄnderung reviewen
  • 25. Git & GerritÄnderung reviewen Commit Message ➪ Konventionen
  • 26. Git & GerritÄnderung reviewen Reviews
  • 27. Git & GerritÄnderung reviewen Verschiedene Patch-Versionen
  • 28. Git & GerritCode Review Diff aufrufen
  • 29. Git & GerritDiff-Ansicht Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 30. Git & GerritDiff-Ansicht Inline-Kommentare mit Doppelklick Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 31. Git & GerritFunktionaler Test checkout wählen kopieren
  • 32. Git & GerritFunktionaler Test Befehlszeile ausführen Exakter Stand wird ausgecheckt, incl. Änderung Testen! Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 33. Git & GerritVoting abgeben
  • 34. Git & Gerrit Voting abgeben Funktionaler Test -1/0/+1 Code Review -1/0/+1 Anmerkungen - besonders beinegativem Review!
  • 35. Git & Gerrit Voting abgeben Members only.. Anmerkungen - besonders beinegativem Review!
  • 36. Foto: csremedy Eigene Patches sendenhttp://www.sxc.hu/photo/1267108 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 37. 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
  • 38. Git & GerritGit konfigurieren git 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 toTYPO3-Entwicklung mit Git und Gerrit share
  • 39. Git & GerritGit konfigurieren git 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 toTYPO3-Entwicklung mit Git und Gerrit share
  • 40. Git & GerritGit konfigurieren git config --global user.name "Your Name" git config --global user.email "foo@example.com" Push URL git config --global branch.autosetuprebase remote git config --global url."ssh://<username>@review.typo3.org:29418" .pushInsteadOf git://git.typo3.org Fetch/Pull URL Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 41. Git & GerritGerrit: SSH-Key festlegen
  • 42. Git & GerritGerrit Change-Id Jeder Change-Request hat eindeutige Change-Id Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 43. 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
  • 44. Git & GerritEigene Änderung senden
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. Workflows & Konventionen Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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
  • 57. Weitere InformationenFoto: Egilshayhttp://www.sxc.hu/photo/1095604 Inspiring people to TYPO3-Entwicklung mit Git und Gerrit share
  • 58. Weitere InformationenGit-Probleme Screenshot Google Pro Git Buch http://progit.org (kostenlos) Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 59. Weitere InformationenWiki: “Git” landing page Git Grundlagen
  • 60. Weitere InformationenWiki: “Git” landing page Quellcode über Git beziehen
  • 61. Weitere InformationenWiki: “Git” landing page Contributing (interessant ;-))
  • 62. Weitere InformationenWiki: “Git” landing page Workflow nochmals erklärt
  • 63. Weitere InformationenWiki: “Git” landing page Klappt was nicht?
  • 64. Weitere InformationenWiki: “Git” landing page nice to know...
  • 65. Weitere InformationenWiki: “Git” landing page Begrifflichkeiten erklärt
  • 66. Weitere InformationenWiki: Tutorials toll!!
  • 67. Weitere InformationenWiki: Tutorials doof...
  • 68. Weitere InformationenWiki: Ausfürliche CLI-Anleitung
  • 69. Weitere InformationenProbleme? Fragen! Mailinglisten / Newsgroups typo3.core typo3.dev lists.typo3.org Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 70. Weitere InformationenNicht angesprochen... Neue Patchversion erstellen modifiziert vorherigen git commit --amend Commit Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 71. ????? ?? ? ?? ?? ? Inspiring people toTYPO3-Entwicklung mit Git und Gerrit share
  • 72. inspiring people to share.