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

1,434
-1

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,434
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

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

×