$30 off During Our Annual Pro Sale. View Details »

Mitmachen bei Git(Hub)-Projekten!

Mitmachen bei Git(Hub)-Projekten!

Sehr viele Open-Source-Projekte hosten ihre Projekte auf GitHub. Einige Projekte wie Debian und GNOME unterhalten wiederum ihre eigenen GitLab-Server. Dieser Vortrag richtet sich an Einsteiger, die bei solchen Projekten mitmachen wollen, aber noch nicht durch die Begriffe wie Fork, Pull-Requests und Code-Review durchblicken. Der Fokus liegt dabei auf GitHub und GitLab mit einem vergleichbaren Workflow. Der Vortrag ist dabei gespickt mit Tipps und Tricks über den GitHub-Workflow sowie Kommunikations- und Organisationshinweisen bei Projekten.

Sujeevan Vijayakumaran

March 09, 2018
Tweet

More Decks by Sujeevan Vijayakumaran

Other Decks in Technology

Transcript

  1. Mitmachen bei Git(Hub)-Projekten!
    Sujeevan Vijayakumaran
    @svijee || @credativDE
    svij.org || credativ.de
    10. März 2018
    Sujeevan Vijayakumaran credativ GmbH 1 / 35

    View Slide

  2. Wer hat bei fremden GitHub-Projekten bislang mitgemacht?
    Sujeevan Vijayakumaran credativ GmbH 1 / 35

    View Slide

  3. Wer wollte bei Projekten mitmachen, wusste aber nicht wie?
    Sujeevan Vijayakumaran credativ GmbH 1 / 35

    View Slide

  4. Was erzähle ich heute?
    Warum sollte ich mitmachen?
    Struktur und Organisation von Open Source Projekten
    Was ist überhaupt Git und was ist GitHub und GitLab?
    Fork, Pull-Request, hää?
    Der GitHub-Workflow
    Verlosung
    Sujeevan Vijayakumaran credativ GmbH 2 / 35

    View Slide

  5. Warum sollte ich überhaupt mitmachen?
    Für sich selbst:
    Kenntnisse erweitern
    neue Leute kennenlernen
    von den neuen Kontakten lernen
    macht sich auch gut auf dem Lebenslauf ;)
    Sujeevan Vijayakumaran credativ GmbH 3 / 35

    View Slide

  6. Warum sollte ich überhaupt mitmachen?
    Für sich selbst:
    Kenntnisse erweitern
    neue Leute kennenlernen
    von den neuen Kontakten lernen
    macht sich auch gut auf dem Lebenslauf ;)
    Für die Community:
    unnötige (private) Forks vermeiden
    Verbesserungen der Allgemeinheit zur Verfügung stellen
    Projekte am Leben halten
    Sujeevan Vijayakumaran credativ GmbH 3 / 35

    View Slide

  7. Welche Optionen habe ich zum mitmachen?
    Nicht nur Programmieren!
    Sujeevan Vijayakumaran credativ GmbH 4 / 35

    View Slide

  8. Welche Optionen habe ich zum mitmachen?
    Nicht nur Programmieren!
    Dokumentation
    Design
    Ideen
    Organisation
    Support
    Testen
    Sujeevan Vijayakumaran credativ GmbH 4 / 35

    View Slide

  9. Struktur und Organisation von Open Source Projekten
    Ausschau halten nach folgenden Dateien:
    LICENSE
    README
    CONTRIBUTING
    CODE_OF_CONDUCT
    Sujeevan Vijayakumaran credativ GmbH 5 / 35

    View Slide

  10. Struktur und Organisation von Open Source Projekten
    Issue Tracker
    Pull Requests
    Foren oder Mailing Listen
    Chat
    Sujeevan Vijayakumaran credativ GmbH 6 / 35

    View Slide

  11. Alles klar, ich will loslegen! Welche Kenntnisse brauche ich?
    Sujeevan Vijayakumaran credativ GmbH 6 / 35

    View Slide

  12. Oh . . .
    Sujeevan Vijayakumaran credativ GmbH 6 / 35

    View Slide

  13. Abbildung: »If that doesn’t fix it, git.txt contains the phone number of a friend of mine who
    understands git. Just wait through a few minutes of ’It’s really pretty simple, just think of branches
    as...’ and eventually you’ll learn the commands that will fix everything.«
    »xkcd: Git«, © Randall Munroe (xkcd.com/1597) ist lizenziert unter der Creative Commons Lizenz CC BY-NC 2.5
    Sujeevan Vijayakumaran credativ GmbH 7 / 35

    View Slide

  14. Was ist eine Versionsverwaltung?
    Verwaltung von Versionen
    vortrag_v1, vortrag_v2, vortrag_v3,...
    vortrag_final
    votrag_final_new
    Sujeevan Vijayakumaran credativ GmbH 8 / 35

    View Slide

  15. Warum eine Versionsverwaltung?
    Nachvollziehbarkeit
    „Springen“ zwischen Versionen
    Teamwork
    Angereichert mit weiteren Informationen:
    Wer? (Autor)
    Wann? (Datum mit Uhrzeit)
    Was? (Änderungsnotiz)
    Sujeevan Vijayakumaran credativ GmbH 9 / 35

    View Slide

  16. Verteilte Versionsverwaltung
    Git, Bazaar (bzr), Mercurial (hg)
    kompletter Klon liegt auf Clients + Server
    kein unnötiger Netzwerk-Traffic
    höhere Datensicherheit
    Sujeevan Vijayakumaran credativ GmbH 10 / 35

    View Slide

  17. Was ist GitHub?
    Git-Server mit Web-UI
    Kollaboratives Zusammenarbeiten
    Issue-Tracker und Project-Management
    GitHub selbst ist Closed Source
    Hosting zahlreicher Open Source Projekte
    Sujeevan Vijayakumaran credativ GmbH 11 / 35

    View Slide

  18. Und was ist mit GitLab?
    Git-Server mit Web-UI
    Kollaboratives Zusammenarbeiten
    Issue-Tracker und Project-Management
    GitLab selbst ist zum Teil Open Source (Open Core)
    Selbst-Hosting möglich
    Projekte wie Debian und GNOME nutzen eigene
    GitLab-Instanz
    Sujeevan Vijayakumaran credativ GmbH 12 / 35

    View Slide

  19. Wie bringe ich nun Änderungen an einem Repository ein?
    1. Forken
    2. Klonen
    3. Branch erstellen
    4. Änderungen hinzufügen
    5. Pushen
    6. Pull-Request anlegen
    Sujeevan Vijayakumaran credativ GmbH 13 / 35

    View Slide

  20. Fork – Was ist das eigentlich?
    Sujeevan Vijayakumaran credativ GmbH 14 / 35

    View Slide

  21. Fork – Was ist das eigentlich?
    Eine Gabel!
    Sujeevan Vijayakumaran credativ GmbH 14 / 35

    View Slide

  22. Fork – Was ist das eigentlich?
    Eine Gabel!
    Klon des Repositorys auf dem GitHub-Server
    Volle Schreibrechte im Fork
    Sujeevan Vijayakumaran credativ GmbH 14 / 35

    View Slide

  23. GitHub-Repository
    Sujeevan Vijayakumaran credativ GmbH 15 / 35

    View Slide

  24. Fork – Was ist das eigentlich?
    credativ/elephant-shed
    ↓ Fork ↓
    svijee/elephant-shed
    Sujeevan Vijayakumaran credativ GmbH 16 / 35

    View Slide

  25. Klon → Branch → Push
    git clone [email protected]:svijee/elephant-shed.git
    Sujeevan Vijayakumaran credativ GmbH 17 / 35

    View Slide

  26. Klon → Branch → Push
    git clone [email protected]:svijee/elephant-shed.git
    cd elephant-shed
    git checkout -b fix-typo
    // Änderungen durchführen
    git add ...
    git commit ...
    Sujeevan Vijayakumaran credativ GmbH 17 / 35

    View Slide

  27. Klon → Branch → Push
    git clone [email protected]:svijee/elephant-shed.git
    cd elephant-shed
    git checkout -b fix-typo
    // Änderungen durchführen
    git add ...
    git commit ...
    git push origin fix-typo
    Sujeevan Vijayakumaran credativ GmbH 17 / 35

    View Slide

  28. Pull-Request
    „Nimm bitte meine Änderung an!“
    Quell-Branch und Ziel-Branch mergen wollen
    Code-Review
    Sujeevan Vijayakumaran credativ GmbH 18 / 35

    View Slide

  29. Pull-Request
    Sujeevan Vijayakumaran credativ GmbH 19 / 35

    View Slide

  30. Pull-Request
    Sujeevan Vijayakumaran credativ GmbH 20 / 35

    View Slide

  31. Pull-Request: Hinweise
    Nur, weil ihr eine Änderung gemacht hat, muss der Maintainer es nicht annehmen
    Sujeevan Vijayakumaran credativ GmbH 21 / 35

    View Slide

  32. Pull-Request: Hinweise
    Nur, weil ihr eine Änderung gemacht hat, muss der Maintainer es nicht annehmen
    Issues, Qualität und Dokumentation beachten!
    Sujeevan Vijayakumaran credativ GmbH 21 / 35

    View Slide

  33. Pull-Request: Hinweise
    Nur, weil ihr eine Änderung gemacht hat, muss der Maintainer es nicht annehmen
    Issues, Qualität und Dokumentation beachten!
    Kommunikation ist wichtig! (Vorher, währenddessen und danach)
    Sujeevan Vijayakumaran credativ GmbH 21 / 35

    View Slide

  34. Pull-Request: Hinweise
    Nur, weil ihr eine Änderung gemacht hat, muss der Maintainer es nicht annehmen
    Issues, Qualität und Dokumentation beachten!
    Kommunikation ist wichtig! (Vorher, währenddessen und danach)
    „12 Gründe, warum dein Patch immer abgelehnt wird“ um 16 Uhr (Ralf Lang)
    Sujeevan Vijayakumaran credativ GmbH 21 / 35

    View Slide

  35. Pull-Request: Rebase oder Merge?
    Was ist ein Merge?
    Was ist ein Rebase?
    Sujeevan Vijayakumaran credativ GmbH 22 / 35

    View Slide

  36. Pull-Request: Rebase oder Merge?
    Was ist ein Merge?
    Was ist ein Rebase?
    Beides sind Methoden, um Branches zusammen zu führen.
    Sujeevan Vijayakumaran credativ GmbH 22 / 35

    View Slide

  37. Mergen
    Zusammenführung (mindestens) zweier Branches mit Merge-Commit.
    Sujeevan Vijayakumaran credativ GmbH 23 / 35

    View Slide

  38. Rebase I
    Zusammenführung von Branches ohne Merge-Commit.
    Ausgangssituation
    Sujeevan Vijayakumaran credativ GmbH 24 / 35

    View Slide

  39. Rebase II
    Ein
    Merge-Commit soll verhindert werden.
    Sujeevan Vijayakumaran credativ GmbH 25 / 35

    View Slide

  40. Rebase III
    Ein
    Merge-Commit soll verhindert werden.
    Sujeevan Vijayakumaran credativ GmbH 26 / 35

    View Slide

  41. Rebase IV
    Zielsituation
    Sujeevan Vijayakumaran credativ GmbH 27 / 35

    View Slide

  42. Rebase V
    Feature-Branches rebasen
    In Development-Branches mergen
    Sujeevan Vijayakumaran credativ GmbH 28 / 35

    View Slide

  43. Noch ein paar Hinweise
    Eine Änderung = Ein Pull-Request
    Eine Teil-Änderung = Ein Commit
    Commits so klein wie möglich und so groß wie nötig machen!
    Ordentliche und nachvollziehbare Commit-Nachrichten wählen!
    Sujeevan Vijayakumaran credativ GmbH 29 / 35

    View Slide

  44. GitHub-Flow
    Sujeevan Vijayakumaran credativ GmbH 30 / 35

    View Slide

  45. GitHub-Flow
    Sujeevan Vijayakumaran credativ GmbH 31 / 35

    View Slide

  46. GitHub-Flow
    Sujeevan Vijayakumaran credativ GmbH 32 / 35

    View Slide

  47. Damit sind wir fast am Ende. . .
    Sujeevan Vijayakumaran credativ GmbH 32 / 35

    View Slide

  48. Verlosung: Git-Buch
    „Mein“ Git-Buch
    Verlag: mitp, 2016
    Preis: 29,99€ (Buch), 25,99€ (Ebook)
    Buch basiert auf Tutorial auf meinem
    Blog svij.org
    Sujeevan Vijayakumaran credativ GmbH 33 / 35

    View Slide

  49. credativ is hiring!
    Linux- und Open Source-Einsteiger
    Linux- und Open Source-Spezialist
    Linux- und Open Source-Spezialist (Home-Office)
    Linux- und Open Source-Spezialist (Configuration-Management)
    Linux- und Open Source-Spezialist (Datenbanken)
    Auszubildende/-r zur/-m Fachinformatiker/-in
    Student/-in für Bachelor- oder Masterarbeit
    Werksstudent/-in / Praktikant-/in
    Mehr Informationen unter https://credativ.de/ueber-credativ/stellenangebote
    Sujeevan Vijayakumaran credativ GmbH 34 / 35

    View Slide

  50. Fragen?
    Sujeevan Vijayakumaran credativ GmbH 34 / 35

    View Slide

  51. Vielen Dank für die Aufmerksamkeit!
    Sujeevan Vijayakumaran credativ GmbH 35 / 35

    View Slide