Tutorial 4: Version Control, Code Review
ASE WS 2023/24
Rückschau
Version Control
Was Du können bzw. verstanden haben solltest:
- Grundlagen Versionskontrolle mit Git auf der Kommandozeile (Repo einrichten oder klonen, Commits, Push/Pull)
- Zugriff auf git.ur.de
Setup
Ihr könnt die Aufgaben auf Eurer lokalen Shell erledigen, wenn dort Git installiert ist.
Oder: als Nutzer root
auf einem 'disposable root server' via segfault.net.
ssh root@segfault.net # Password is 'segfault'
Achtung: Der Server ist nicht sicher - keine vertraulichen Infos/Passwörter dort eintippen
Erster Schritt auf dem Server: Informationen zu Netzwerk-Schnittstellen prophylaktisch in einen Text-Editor kopieren
Zweiter Schritt: tmate installieren und ausführen.
apt install tmate tmate
tmate
startet eine tmux
-Session und gibt Pfade/Befehle aus, mit denen man der Session remote beitreten kann. Diese Infos am Besten auch in einem Texteditor speichern und 'q' drücken.
Git-Basics
Finde heraus, was folgende Befehle machen:
- git init
- git clone
- git commit (–amend)
- git push / pull
- git reset (–hard)
- git checkout (-b)
- git tag
- git log
- git blame
- git rebase (see also jvns.ca: rebasing - what can go wrong?
- git bisect
- git cherry-pick
Bearbeitet zu zweit die Git-Übungen von Julia Evans
Aufgabe:
- Bearbeite die Git-Katas von https://github.com/eficode-academy/git-katas
- Bearbeite das Tutorial zu Git Branches: https://learngitbranching.js.org/
Git Workflows
Notwendige Vorkenntnisse: Git Basics
(Raphael demonstriert ein bisschen was zu GitLab und CI/CD)
Aufgabe (Zweiergruppe):
- lest https://www.atlassian.com/continuous-delivery/continuous-integration und die Unter-Kapitel
- lest die GitLab-Dokumentation zu CI/CD
- Lest jeweils den Code im Building-Manager-Projekt der anderen Person und schlagt Änderungen vor (z.B. Kommentare, Refactoring):
- erzeugt jeweils einen neuen Feature-Branch und checkt diesen aus
- nehmt Eure Änderungen vor
- verwendet sinnvolle Commit-Messages
- erzeugt einen Merge-Request
- reviewt die Merge-Requests der anderen Person und mergt die Feature-Branches in den Main-Branch
- führt diesen Prozess einmal über das UI und einmal über die Kommandozeile durch (Merge Request dann informell)
- Baut eine CI/CD-Pipeline, die automatisch die Dokumentation der Anwendung erzeugt und Tests laufen lässt. (Tipp: verwendet das Python-Template von GitLab)
Alternative Versionskontrollsysteme
Git ist inzwischen das meistverbreitete Werkzeug zur Versionskontrolle. Es gibt allerdings einige Alternativen, die eleganter, benutzerfreundlicher und/oder performanter sind.
Beispiele:
- Fossil von den Entwicklern von sqlite
- Mercurial (siehe auch: Diskussion zu Facebook's Sapling)
- Perforce / Helix Core (kommerziell, gut für Binärdateien)
- jujutsu /jj - spannender neuer Ansatz, kann transparent mit Git-Repos arbeiten
Aufgaben:
- Lies Hacker-News-Kommentare zu diesen Systemen und fasse die wichtigsten Aspekte in Stichpunkten zusammen
- Installiere Fossil und Mercurial, klone ein existierendes Repository und mache einen lokalen Commit in einer Datei. Vergleiche Laufzeit und Speicherbedarf informell.
Weiterführende Quellen:
- Repos mit Branches: