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.geber...
EinführungVorstellung        Steffen Gebert             TYPO3 Core Team Member              Admin Team Member             ...
EinführungÜberblick     Software-Reviews     Git & Gerrit     Worfklows & Konventionen     Weitere Informationen     Frage...
Software-ReviewsFoto: mario.rimannhttp://www.flickr.com/photos/mrimann/3534514430/                                         ...
EinführungSoftware-Reviews     Qualitätssicherung     Vier (oder sechs) Augen sehen mehr als zwei     Fehler werden immer ...
Software-ReviewsFunktionales Review     Eine Änderung...         behebt den Fehler / ermöglicht ein neues Feature         ...
Software-ReviewsCode-Review     Eine Änderung am Quellcode...         ist korrekt         (macht das, was sie tun soll und...
Software-Reviews    Review per Mailingliste (damals...)         “Requests for Comments” (RFCs) per core-team-MailinglisteF...
Software-ReviewsReview per Mailingliste     Voting    SVN Commit
Software-ReviewsMailingliste: Ordnung halten     man kämpfte sich so durch...                                       Inspir...
Git & GerritMigration zu Git & Gerrit       Präsentation auf Core-Team-Meeting im Juli 2010           Einigkeit über Einfü...
Foto: tnimalan                                                               Git & Gerrit im Einsatzhttp://www.sxc.hu/phot...
Git & GerritGit                                                 Lokale Kopie des       Verteiltes Versionskontrollsystem  ...
lokale Aktion     Veröffentlichung                                           Inspiring people toTYPO3-Entwicklung mit Git ...
Git & GerritGit: Wiederholung       “trunk” heißt jetzt “master”       Commits werden über SHA-1 identifiziert       Ein Co...
Git & GerritRepository klonen       git clone --recursive         git://git.typo3.org/TYPO3v4/Core.git       Meta-Informat...
Git & GerritGerrit       Web-basiertes Code-Review Tool       Für Android-Entwicklung von Google entwickelt       Baut auf...
GIT “standalone”GIT & Gerrit                                              Inspiring people to       TYPO3-Entwicklung mit ...
Git & GerritGerrit       Momentan genutzt für           TYPO3v4: Core, Workspaces, Extbase, Fluid           Extensions: co...
Git & Gerrit    Gerrit Übersicht           ´oo
Git & GerritGerrit Change-Id       Jeder Change-Request hat eindeutige Change-Id                                          ...
Patches reviewenFoto: 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 & GerritCode Review               Diff aufrufen
Git & GerritDiff-Ansicht                                       Inspiring people toTYPO3-Entwicklung mit Git und Gerrit   s...
Git & GerritDiff-Ansicht       Inline-Kommentare mit Doppelklick                                           Inspiring peopl...
Git & GerritFunktionaler Test               checkout wählen                                 kopieren
Git & GerritFunktionaler Test       Befehlszeile ausführen       Exakter Stand wird ausgecheckt, incl. Änderung       Test...
Git & GerritVoting abgeben
Git & Gerrit Voting abgeben                    Funktionaler Test                       -1/0/+1                      Code R...
Git & Gerrit Voting abgeben                    Members only.. Anmerkungen -  besonders beinegativem Review!
Foto: csremedy                                                               Eigene Patches sendenhttp://www.sxc.hu/photo/...
Git & GerritGit konfigurieren       git config --global user.name "Your Name"       git config --global user.email "foo@exa...
Git & GerritGit konfigurieren       git config --global user.name "Your Name"       git config --global user.email "foo@exa...
Git & GerritGit konfigurieren       git config --global user.name "Your Name"       git config --global user.email "foo@exa...
Git & GerritGit konfigurieren       git config --global user.name "Your Name"       git config --global user.email "foo@exa...
Git & GerritGerrit: SSH-Key festlegen
Git & GerritGerrit Change-Id       Jeder Change-Request hat eindeutige Change-Id                                          ...
Git & GerritGerrit Change-Id       Automatische Generierung über Git Commit Hook                                          ...
Git & GerritEigene Änderung senden
Git & GerritEigene Änderung senden       Aktuellen Stand bekommen       git checkout <release-branch>           z.B. maste...
Git & GerritCommit Message Format       CM vergleibt auf ewig in der History       Spezielle Konventionen für Commit Messa...
Git & GerritCommit Message Hook       git log -1       zeigt letzte Commit Message an       Change-Id-Zeile wurde automati...
Git & Gerrit  Änderung pushen         git push origin HEAD:refs/for/<release-branch> gewünschter Remotealternativ z.B. git...
Git & GerritÄnderung pushen       git push origin HEAD:refs/for/<release-branch>                                          ...
Workflows & Konventionen                                       Inspiring people toTYPO3-Entwicklung mit Git und Gerrit   sh...
Workflows & KonventionenReview-Workflow     Issue in Forge eröffnen     Commit machen, Pushen     Auf Reviews warten        ...
Workflows & KonventionenGrundsätzliches     Change Request bezieht sich jeweils auf einen Branch     Nur ein Eintrag für al...
Workflows & KonventionenAktive Branches     master (wird später TYPO3_4-6 abgespalten)     TYPO3_4-5 (current stable, LTS) ...
Workflows & KonventionenIn welchen Branch..?     Features, Änderungen des Verhaltens         master (keine Features in verö...
Workflows & KonventionenErforderliche Reviews     Change Request wird gemerged bei jeweils mindestens                      ...
Workflows & KonventionenMr. Hudson & Mr. Jenkins     Jenkins Continuous Integration Server (vormals Hudson)     Automatisie...
Weitere InformationenFoto: Egilshayhttp://www.sxc.hu/photo/1095604                                                        ...
Weitere InformationenGit-Probleme      Screenshot Google      Pro Git Buch      http://progit.org (kostenlos)             ...
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.typo...
Weitere InformationenNicht angesprochen...      Neue Patchversion erstellen      modifiziert vorherigen      git commit --...
?????                                    ??                                   ?                                   ??      ...
inspiring people to share.
Upcoming SlideShare
Loading in...5
×

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

1,321

Published on

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

No Downloads
Views
Total Views
1,321
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.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×