Warum solltet ihr ein Versionskontrollsystem benutzen?
Das hier links: So sah meine Versionskontrolle 2016 aus. Villeicht habt ihr so etwas schon mal gesehen oder verwendet.
Ich war mehrfach in einem Zustand gewesen, wo nichts mehr funktionierte und ich mich nicht mehr erinnern konnte,
was ich jetzt alles verändert hatte seit das Programm das letze Mal funktionierte.
Ich hatte also gemerkt, dass es keine gute Idee war immer alles zu überschreiben ohne die funktionierenden Zwischenstände zu speichern,
deshalb war das hier meine Versionskontrolle.
Jedes Mal wenn ich eine neues Feature implementiert hatte, habe ich den Ordner kopiert und eine neue Versionsnummer vergeben.
Und von da an habe ich dann im neuen Ordner weitergearbeitet.
Das ist ein sehr schlechtes System, aber es zeigt was wir eigentlich beim Entwickeln brauchen und welche Anforderung wir an ein Versionskontrollsystem haben.
1. Es sollte möglich sein alte Zustände wiederherzustellen.
Ich will mir nicht merken was ich gerade geändert habe und was ich da vorher hatte, als es noch funktionierte.
ich will frei experimentieren können, ohne die zuvor funktionierende Version zu verlieren.
2. Es sollte leicht sichtbar sein, was sich verändert hat. Im Idealfall sollte ich auch sehen warum ich es geändert habe. Dazu kommen wir später, wie eine gute Commit-Message aussieht.
3. Es sollte nicht das ganze Projekt bei jeder Änderung kopiert werden, sodass ich die genau gleiche Datei zigmal in jedem Ordner habe.
Nur was ich geändert habe sollte auch zusätzlichen Platz einnehmen.
4. Und was bei größeren Projekten wichtig wird. Mehrer Personen sollten zeitgleich zusammenarbeiten können ohne sich in die Quere zu kommen. Das kriegen manche Unternehmen auch trotz Git nicht hin, aber ich versuche hier auch ein bisschen die Worst-Practices zu erwähnen, wie ihr Git nicht verwenden solltet.
]
// Worst-Practices:
// - Split one project into multiple repository despite the components being tightly coupled (see point 1 snd 2 of worst practice document)
// - Commit autogenerated files (see point 3)
// - Pollute your main branch with dysfunctional debug commits (point 6)
#grid(
columns: (60%, 40%),
image("images/Manual Versions.png"),
[
#pause
- Es sollte einfach sein beliebige alte Zustände anzusehen und wiederherzustellen
#pause
- Es sollte leicht sichtbar sein, was sich verändert hat