
Wer Projekte per git auf dem aktuellen Stand halten will, aber sonst nicht viel mit git macht, braucht immer mal wieder dieselben Befehle, um die notwendigen Aktualisierungen durchzuführen. Da sind dann immer wieder diese Leute, die dann ein paar Befehle rüberwerfen, aber nicht wirklich zwei klärende Worte zum Zusammenhang hinzufügen. Das Problem ist zwar damit vielleicht aus der Welt, aber es ist nichts damit gewonnen.
Gib einem Mensch einen Fisch und du ernährst ihn für einen Tag. Lehre einen Menschen zu fischen und du ernährst ihn für sein Leben.
Konfuzius
Wenn die Mehrzahl der Empfehlenden nach dieser Maxime handeln würden, wäre das Frustrationspotenzial auf Myriaden von Webseiten und Foren nicht so hoch. Das musste ich mal loswerden.
Ich gehe am praktischen Beispiel des Fediverse-Servers Friendica vor. Den geübten Umgang mit Linux und der Konsole beziehungsweise der Shell Bash setze ich voraus. Ebenso ein installiertes git.
Git und das Repo
Das Software-Repository, oft auch nur Repository oder Repo genannt, von Friendica liegt zum Beispiel auf GitHub. Das ist der Speicherort, auf dem die Software liegt und von Entwicklern gepflegt, programmiert und aktualisiert wird.
Git ist eine Software, die gleichzeitig verschiedene Versionen von Dateien verwalten kann und für die Softwareentwicklung entwickelt wurde. Kurz gesagt ermöglicht sie es, sehr einfach recht komplexe Versions-Upgrades oder Downgrades absolut korrekt durchzuführen, so dass als Ergebnis immer eine saubere und lauffähige Version der Software beziehungsweise des Quellcodes herauskommt.
Schritt 1 Die Software installieren - Das Repo klonen
Ich nehme mal an, du willst Friendica auf deinem Server installieren und hast das Webverzeichnis für deine Domain eingerichtet, das sich zum Beispiel unter /var/web/MeineDomain/htdocs befindet. Und genau hier willst du Friendica installieren, daher wechselst du in dieses Verzeichnis. Das Verzeichnis muss komplett leer sein, sonst weigert sich git, die Dateien hier abzulegen.
Der Befehl, der dafür vorgeschlagen wird, ist oft
git clone https://github.com/friendica/friendica
Aber. Dieser würde dir in deinem /var/web/MeineDomain/htdocs/-Verzeichnis ein Unterverzeichnis friendica anlegen und dort alle Dateien und Verzeichnisse ablegen. Und dein Server wäre dann nur unter www.MeineDomain.de/friendica/ erreichbar. Aber du möchtest, dass der Friendica-Server unter www.MeineDomain.de erreichbar ist.
Daher musst du dem vorgeschlagenen Befehl noch ein Leerzeichen und einen Punkt mitgeben, mit dem du angibst, dass die Dateien im aktuellen Verzeichnis abgelegt werden. Und dann sieht das so aus.
git clone https://github.com/friendica/friendica .
Damit liegt nun die Software, genauer gesagt die stable-Version, auf deinem Server und du kannst mit der Konfiguration und Einrichtung beginnen. Die Dokumentation dazu findest du im Friendica-Wiki.
Da die Addons für Friendica in einem extra Repo liegen, müssen diese natürlich mit den gleichen Schritten eingerichtet und später dann auch aktualisiert werden.
Schritt 2 Aktualisierungen
In so einem Software-Repo wird in den meisten Fällen nicht nur eine Software-Version gepflegt, sondern meist mehrere. Eigentlich sind immer stable und develop beziehungsweise origin/stable und origin/develop verfügbar. Wie oben schon erwähnt hiess stable früher standardmässig master, aber in modernen Repos gibt es nur noch den Namen stable oder öfter main. Bei Friendica heisst die aktuelle stabile Version stable.
Ganz allgemein. Um deine Software zu aktualisieren, wechselst du zukünftig in dein Verzeichnis /var/web/MeineDomain/htdocs/ und gibst den Befehl ein
git pull
und dein Friendica wird auf den neuesten Stand gebracht. Addons nicht vergessen.
Schritt 3 Versionen und Branches
Nun gibt es wie oben schon geschrieben meist mindestens zwei Versionen. Die stable und die development Version. Die Versionen in git werden Branches genannt. Welche Branches du hast, kannst du ganz einfach herausfinden mit den Befehlen.
Welche Branches liegen remote auf dem Software-Repo.
git branch -r
ergibt zum Beispiel so eine Ausgabe.
origin/2022.09-rc
origin/2022.12-rc
origin/2023.03-rc
origin/2023.05-rc
origin/2023.09-rc
origin/2024.03-rc
origin/HEAD -> origin/develop
origin/develop
origin/stable
Welche Branches liegen lokal auf deinem Server.
git branch -a
Um zu einem anderen Branch beziehungsweise Version zu wechseln, gibst du einfach zum Beispiel ein.
git checkout develop um auf die Entwicklerversion zu wechseln
git checkout stable um auf die stabile Hauptversion zu wechseln
Allerdings sollte so ein Wechsel immer gut durchdacht sein, denn oftmals kann das weitere Abhängigkeiten haben, wie zum Beispiel bei Friendica irgendwelche Updates von Datenstrukturen in der Datenbank. Ältere Versionen kennen neuere Datenbankstrukturen nicht und das wird dann vermutlich zu Fehlern führen. Prüfe stets.
Schritt 4 Updates und Versionen - development, stable und RC
Es gibt also die development Version, die immer die neuesten Funktionen und Features hat, die aktiv entwickelt werden und daher mit einer hohen Wahrscheinlichkeit Fehler enthalten, die noch korrigiert werden müssen. Und die stabile stable Version, die zum produktiven Einsatz freigegeben wurde.
Dann gibt es oft noch RC-Versionen, also Release Candidates. Zum Beispiel eine 2024.04-RC. Das ist eine aktuelle development Version, zu der keine neuen Features dazukommen (Feature Freeze) und die zur nächsten stabilen Version werden soll. Diese Version ist mit einer öffentlichen Beta-Version vergleichbar, die zur Verfügung gestellt wird, damit sie von vielen getestet und eventuelle Fehler behoben werden können. Wenn dann alle Fehler behoben sind, dann wird diese 2024.04-RC-Version in die stable Version überführt.
Das heisst, wenn die Aktualisierung des eigenen Friendica-Servers immer auf das Branch stable eingestellt ist, dann wird beim nächsten git pull der Server automatisch auf die neueste Version aktualisiert. Wurde zuvor auf zum Beispiel das RC 2024.04-RC-Branch gewechselt, muss natürlich dann aktiv auf das stable-Branch wieder zurückgewechselt werden. git checkout stable und git pull.
Friendica per Git aktualisieren
Bei Friendica gibt es wie beschrieben noch das Addon-Verzeichnis und zusätzlich noch den Composer, der Abhängigkeiten von bestimmten Softwarebibliotheken verwaltet und sicherstellt, dass die richtigen Versionen auf deinem Server liegen. Daher müssen bei einer Aktualisierung mindestens folgende Befehle eingegeben werden.
Ausgehend davon, dass du dich in deinem Verzeichnis /var/web/MeineDomain/htdocs befindest.
git pull https://github.com/friendica/friendica.git
bin/composer.phar install --no-dev
cd addon
git pull https://github.com/friendica/friendica-addons.git
Weitere nützliche Git-Befehle
git fetchholt die Liste der Branches vom Repogit checkout <branch name>wechselt den Branchgit stashverwirft lokale Commitsgit checkout -b <NAME>erstellt lokal einen neuen Branchgit branch -D <NAME>löscht den lokalen Branchgit push origin --delete <NAME>löscht den remote Branchgit branch -rzeigt remote Branches angit branch -azeigt lokale Branches angit remote prune originlöscht alle lokalen Branches, die auch nicht mehr auf dem Remote-Repo sindgit gc --autoführt Aufräumarbeiten durch, komprimiert Revisionen, entfernt lose und unzugängliche Objekte
Falls es zu Fehlermeldungen und grösseren Problemen kommt, dann sind folgende Befehle hilfreich. Aber bitte vorher das Handbuch dazu lesen. Nicht einfach per Copy und Paste von hier benutzen. Sonst selber schuld.
git reset --hardgit clean -df -x
Quellen
Git und Friendica sind als Open-Source-Software verfügbar.
- Git: https://git-scm.com/
- Git Wikipedia: https://de.wikipedia.org/wiki/Git
- Git Installation Ubuntu: https://wiki.ubuntuusers.de/Git/
- Friendica: https://friendi.ca/
- Friendica GitHub: https://github.com/friendica/friendica
- Friendica Addons: https://github.com/friendica/friendica-addons
- Friendica Wiki: https://wiki.friendi.ca/