Software Engineering
Sommersemester 2022

Workshop: Git und Social Coding (Blatt 02)

Nach der Bearbeitung dieses Arbeitsblattes haben Sie gelernt

Diese Aufgaben sollen Sie darauf vorbereiten in Ihrer Projektgruppe (mit ca. 6 TeilnehmerInnen) gemeinsam zu programmieren.

Bearbeiten Sie auch in diesem Workshop die Aufgaben in Ihrer Projektteam. Das heißt, sie arbeiten erneut in Kleingruppen von ca. 2 Personen, nutzen aber mit Ihrem Team ein gemeinsames GitHub-Repository.

Es ist nicht weiter schlimm, wenn Sie mit den Übungen in der Zeit nicht fertig werden.

Viel Erfolg!

Accounts anlegen (ca. 5min)

Voraussetzung für diese Übung ist, dass alle Teammitglieder ein GitHub (github.com) Nutzerkonto haben. Nehmen Sie sich kurz Zeit, um sich Nutzernamen auszudenken und tragen Sie nach Anmeldung alle Nutzernamen Ihres Teams zusammen.

Umgebung einrichten (ca. 5 min)

$ git clone [URL]

Richtet eine lokale Kopie eines Remote-Repositories ein.

$ git remote -v
Listet die Remote-Repositories auf, die mit dem lokalen Repository verknüpft sind.

Sie wollen gemeinsam mit Ihrem Team an einem Softwareprojekt arbeiten. Bevor alle mit dem Programmieren anfangen können, muss zunächst ein gemeinsames Remote-Repository auf GitHub angelegt werden:

  1. Bestimmen Sie eine Person aus dem Team, welche ein Übungsrepository auf https://github.com/ anlegt. Dieses Repository kann als private markiert werden. D.h. Inhalte und Änderungen sind nur für Teammitglieder sichtbar, denen Sie manuell Zugriff gewährt haben.
  2. Geben Sie über “Settings > Collaborators & teams > Manage Access > Add people” Ihrem Team Lese- und Schreibrechte auf dem Repository.

Fahren Sie nun in Kleingruppen fort.

  1. Klonen Sie das Repository, um an einer Kopie auf dem eigenen Rechner arbeiten zu können.
  2. Überprüfen Sie mit git remote -v, welche Remote-Repositories mit Ihrem lokalen Repository verknüpft sind.

Gemeinsam an Code arbeiten (ca. 15 min)

Bisher ist das Repository leer – Zeit etwas Code zu schreiben. Arbeiten Sie nun “isoliert” in den Kleingruppen, d.h. jede Kleingruppe bearbeitet die Aufgaben alleine, ohne mit den anderen über den Code oder das gemeinsame Repository zu sprechen. Sie können sich weiterhin austauschen, indem Sie die Kommunikationsmittel verwenden, die Ihnen GitHub zur Verfügung stellt.

$ git push -u [remote-name] [branch-name]

Aktualisiert den Branch branch-name im Remote-Repository remote-name. Die Option -u richtet außerdem remote-name/branch-name als upstream Branch für branch-name ein.

$ git fetch [remote-name]

Aktualisiert die lokale Kopie von remote-name.

$ git branch -vv
Die Option -vv zeigt zusätzliche Tracking-Information zu den Branches an.
  1. Erstellen Sie eine neue Datei in Ihrem Arbeitsverzeichnis (im Branch main) und committen Sie diese.
  2. Teilen Sie Ihre Änderung mit den Anderen, indem Sie diese “pushen”. (Dies wird zunächst fehlschlagen, wenn Ihre Kollegen schneller waren.)
  3. Ziehen Sie sich die neusten Änderungen mit git fetch. Sollten Sie noch lokale Commits haben (git branch -vv zeigt “ahead” an), dann mergen Sie die Änderungen Ihrer KollegInnen in Ihren main branch.
  4. Wiederholen Sie Teilaufgabe 2 und 3, bis jede Teilgruppe mindestens eine Änderung beigetragen hat.

Tipp: Ein einfacher Weg die ständige Passworteingabe zu vermeiden ist folgende Konfiguration:

git config --global credential.helper cache

Bitte warten Sie auf die anderen Mitglieder Ihrer Gruppe, bevor Sie mit der nächsten Aufgabe fortfahren.

Code Reviews mit Pull Requests (ca. 20 min)

Nach einiger Zeit ist Ihnen im Team aufgefallen, dass manchmal Code committed wird, der gar nicht funktioniert. Dies stört alle Anderen in ihrer Arbeit. Deshalb einigen Sie sich darauf, den GitHub Flow Workflow zu verwenden und Code nur noch in main zu mergen, wenn dieser mindestens von einer anderen Person kontrolliert wurde.

  1. Erstellen Sie einen neuen lokalen Branch
  2. Arbeiten Sie auf diesem Branch (d.h. machen Sie mindestens eine Änderung, die sie committen)
  3. Veröffentlichen Sie den Branch im Remote Repository (Tipp: Nutzen Sie git push)
  4. Verwenden Sie die GitHub Web-Oberfläche, um einen Pull Request für Ihren Branch zu erstellen.
  5. Laden Sie eine Teamkollegin, durch Erwähnung ihres Benutzernamens ein, Feedback zu dem Pull Request zu geben.
  6. Wenn ihre Kollegin einverstanden ist: Mergen sie den Branch und löschen Sie ihn danach.
  7. Wenn ihre Kollegin nicht einverstanden ist: Machen sie eine Änderung und wiederholen Sie ab Teilaufgabe 5.
  8. Klicken Sie auf X commits auf der Startseite ihres Projektes, um zu https://github.com/USERNAME/PROJECTNAME/commits/main zu wechseln. Versuchen Sie die Änderungen Ihres Teams anhand der Informationen nachzuvollziehen.