In der heutigen Zeit hat sich immer mehr durchgesetzt, Softwareprojekte mithilfe einer Versionierungssoftware zu entwickeln. Vorteile gibt es dabei tatsächlich nicht nur für Teams. Auch „Soloprojekte“ können von einer solchen Versionierung profitieren. Am Markt gibt es sehr verschiedene Systeme und dann stellt sich noch die Frage: Selbst hosten oder lieber einen Account bei einem größeren Anbieter nutzen? Ein Komplettüberblick für alle Varianten mit allen Vor- und Nachteilen kann es nicht geben. Wir wollen aber an dieser Stelle unseren Weg aufzeigen und vielleicht auch dokumentieren, warum der Anfang zwar gut war, bald aber nicht mehr so praktikabel.

Die Ausgangssituation

Aktuell gibt es bei uns nur „Soloprojekte“ also Projekte, bei denen ein Entwickler sich um die Programmierung innerhalb des Projektes kümmert. Perspektivisch könnte es aber auch passieren, dass so ein Projekt mit anderen zusammen bearbeitet wird – sei es Externen oder aber auch interne Mitarbeiter. Deswegen wurde zwischendurch beschlossen, für alle Projekte bereits eine Versionierung aufzusetzen. Auch mit dem Hintergrund, dass es immer mal wieder vorkommt, dass eine gewünschte Änderung dann doch nicht das passende für den Kunden ist. Das ist mit der Versionierung kein Problem: Richtig aufgesetzt kann man eine Änderung rasch zurücknehmen und bekommt einen sauberen Stand – ohne sich Gedanken machen zu müssen, ob man jetzt noch eine Codezeile vergessen haben könnte.

Der Anfang: selbst gehostet oder bei einem Anbieter?

Ok, der Wunsch war also da: Es sollte eine Versionierung eingeführt werden. Doch damit kamen erst mal die Fragen. Welches System passt überhaupt? Und danach: Wird ein großer Anbieter genutzt oder wird das auf einem eigenen Server selbst gehostet? Gleich vorweg: Wir haben uns fürs selbstgehostete Modell entschieden. Warum? Auch weil es ein bisschen mehr Kontrolle darüber liefert, wo die Daten liegen… Stichwort DSGVO und Co. Aber der Reihe nach.

Schnell war hier klar es sollte etwas wie „git“ sein. Weithin bekannt und auch schon aus anderen Projekten und der Beschäftigung als Angestellter vertraut. Damit waren die Variationen schon mal eingeschränkt. Nach kurzer Recherche war dann auch klar, dass mit Gitea eine „Git-Version“ bereitsteht, die einfach zu installieren ist und damit perfekt geeignet für eine selbstgehostete Variante. Da auf dem passenden Server sonst nichts weiter laufen sollte an zusätzlichen Services haben wir also einen „nackten“ Server aufgesetzt, mit den notwendigen Dingen wie Apache, Datenbank und Co ausgestattet und Gitea darauf eingerichtet. Anschließend konnte nach Einrichtung der SSH Keys und eines Tortoise Git Systems auf dem eigenen Windowsrechner sofort mit dem Anlegen und Versionieren unserer Projekte begonnen werden.

Was bietet Gitea?

Kurz zusammengefasst: Gitea fußt auf der git-Software auf, ist aber bewusst etwas schlanker gehalten. Einige Randfunktionen bietet Gitea nicht, das war aber zu dem Zeitpunkt kein Problem. Es ging ja nur erst mal darum, etwas zu Versionieren. Und das kann Gitea genauso wie Gitlab oder andere Softwares dieser Art. Selbst mit Branches und Merges hat Gitea kein Problem. Wirklich? Naja nicht ganz. Bei den Branches gibt es schon die erste Einschränkung.

Erste „Probleme“ mit Gitea…

Branches kann Gitea aber bei den Merge-Requests geht nur Sekt oder Selters. Heißt konkret: Ein Branch kann mittels Merge-Requests nur in seiner Gesamtheit abgelehnt oder angenommen werden. Es ist nicht möglich, einige Änderungen in den Hauptpfad zu committen und andere zurückzuweisen. Wir haben das auch festgestellt, als auf einmal in einem Projekt vollkommen unvermittelt noch ein weiterer Externer Programmierer vom Auftraggeber zugelassen wurde und es auf einmal darum ging, die eigenen Änderungen mit den Änderungen des Kollegen so zusammen zu bekommen, dass am Ende alles erhalten blieb, was notwendig war. Wir haben das hier versucht über eben einen Branch, in dem erst mal die Änderungen des Anderen eingespielt wurden und dann sollte über einen Merge-Request das ganze vereinigt werden. Gitea zeigte auch brav alle Änderungen an. Aber eine Funktion, die die Übernahme bestimmter Änderungen zuließ während anderes nicht übernommen würde gab es nicht. Eben Sekt oder Selters. ;)

Das war dann jedenfalls für uns der Moment, nochmal zu überdenken, ob ein Gitea wirklich weiterhelfen kann. Aber was gibt es für Optionen?

Ein Seitenblick: Gitlab vs. Gitea

Wie bereits erwähnt fußen mehrere Angebote auf git auf. Am bekanntesten neben Gitea dürfte Gitlab sein. Etwas mächtiger in den Funktionalitäten und etwas schwieriger aufzusetzen. Wir haben uns daran gewagt und werden in einem weiteren Post nochmal versuchen zusammenzufassen, auf was besonders geachtet werden sollte.