Vortrag: Es muss nicht immer Git sein.

Es darf auch ein einfaches, aber feature-reiches Versionsverwaltungssystem mit Bugtracker und Wiki sein.

Fossil

Fossil – ein Versionsverwaltungssystem für Quellcode aller Art


Es enthält auch einen Bugtracker und ein Wiki-System und ist für kleine und mittlere Projekte eine tolle Alternative zu Git.

Unterlagen zum Vortrag


Sehr viele Projekte – auch kleine – setzen oft auf git, das Versionsverwaltungssystem für den Linux-Kernel. Für die Verwaltung eines Projekts braucht es aber mehr als nur eine Versionierung des Quellcodes. Mindestens ein Bugtracker und eine Dokumentation – oft in Form eines Wikis – sind notwendig. Da Git das nicht bietet, wird oft GitLab oder GitHub verwendet, welches Online-Plattformen um Git herum sind, die die fehlenden Komponenten ergänzen.


Tatsächlich machen sich die Projekte dabei von diesen Plattformen abhängig, denn während der Quellcode durch Git noch komplett bei allen Projektteilnehmern vorhanden ist, gilt das nicht für die ergänzenden Komponenten, denn Wiki und insbesondere die Tickets aus dem Bugtracker lassen sich nicht so einfach aus den Plattformen extrahieren und woanders wieder einspielen.


Außerdem geht ein großer Vorteil von Git verloren: Die Unabhängigkeit des eigenen Rechners, auf dem man eigentlich netzunabhängig auf alles zugreifen kann. Git bietet das, aber wiederum nur für den Quellcode. Tickets und Wiki stehen nur online zur Verfügung.


Beim Verkauf von GitHub an Microsoft im Frühjahr 2018 haben viele auch gesehen, wie schnell es gehen kann, dass die eigenen Projekte auf einmal unter den Fittichen von Unternehmen landen, mit denen man eigentlich nicht zusammen arbeiten möchte.


Im Vortrag möchte ich daher eine Alternative aufzeigen: Fossil. Fossil ist wie Git (und Mercurial und Bazaar) ein offenes, verteiltes Versionsverwaltungssystem für viele Betriebssysteme, aber es unterscheidet sich von den anderen durch folgende Punkte:



  • Es gibt keine Installation, weil es nur aus einem einzigen, wenige MB großen Executable besteht, das lediglich im Programm-Suchpfad ($PATH) abgelegt werden muss. Daher braucht es auch keinen Installer.

  • Die Versionen von Fossil für Linux, BSD, Windows etc. sind immer alle auf demselben Stand. Es braucht keine separaten Projekte, um bestimmte Betriebssysteme zu unterstützen.

  • Alle Repositories bestehen aus jeweils einer einzigen Datei, die üblicherweise auch nicht unterhalb des Verzeichnisses der ausgecheckten Dateien liegt.

  • Ein Repo kann auf einem System mehrfach, auch in verschiedenen Versionen gleichzeitig ausgecheckt sein.

  • Fossil enthält einen Bugtracker.

  • Fossil enthält ein Wiki.

  • Fossil enthält einen Webserver, weshalb sich andere GUI-Tools erübrigen.

  • Fossil synchronisiert auf Wunsch mit einem andere Repository vor und nach dem Commit.

  • Es gibt keine „staging area“, aber trotzdem können natürlich nur die Änderungen an manchen Dateien committet werden.

Aber Fossil hat auch viel gemeinsam mit Git:


  • Es ist ein verteiltes Versionsverwaltungssystem.

  • Alle früheren Versionen eines Projekts stehen auch immer offline zur Verfügung.

  • Branching und Merging gelingen problemlos.

  • Fossil ist extrem schnell, die Repos sind komprmiert.

  • Es können bestimmte Dateien ignoriert werden.

  • Alle Daten sind mit Prüfsummen versehen.

  • Es gibt eine eingebaute Hilfe auf der Kommandozeile, aber natürlich auch online.

  • Sehr viele Kommandos sind identisch: clone, checkout, commit

  • Kommunikation ist über SSH möglich.

Und für alle, die noch Zweifel haben, sei gesagt: Git-Projekte können vollständig nach Fossil exportiert oder von dort wieder importiert werden (natürlich nur die Quellcodes, Tickets und Wiki-Seiten kennt Git ja nicht).

Und ja, man kann auch Git ergänzen um eine Wiki-Engine (Auswahl gibt es genug) und einen Bugtracker, z. B. Bugzilla. Aber dann muss man alle diese Systeme ständig am Laufen halten und kann die Sachen nicht so schnell umziehen. Außerdem sind Wiki und Tickets im Bugtracker dann auch schon wieder nicht offline verfügbar. Wie oft ist es schon passiert, dass nach längerer Untätigkeit die einzelnen Komponenten einander nicht mehr gefunden haben, weil irgend ein Server umkonfiguriert oder abgeschaltet wurd? Bei Fossil ist das nicht möglich: Jedes Projekt besteht in seiner Gesamtheit aus einer einzigen Datei!

Man kann also Trunk Based Development nicht nur mit einem einzigen Versionsverwaltungssystem betreiben.

Fossil ist kein Allheilmittel, Wiki und Ticketsystem sind sicherlich nicht so leistungsfähig wie manch andere Systeme. Aber dafür ist es auch viel leichter beherrschbar als ein Sammelsurium aus verschiedenen Komponenten. Gerade bei kleinen und mittelgroßen Projekten hat es sich schon sehr bewährt. Und der Weg zu Git ist ja keineswegs verbaut – für den tatsächlich nicht sehr wahrscheinlichen Fall, dass dein Projekt mal so groß wird wie der Linux-Kernel.

Info

Tag: 03.11.2018
Anfang: 15:50
Dauer: 01:00
Raum: Vortragsraum 2
Track: Entwicklung
Sprache: de

Links:

Dateien

Feedback

Uns interessiert deine Meinung! Wie fandest du diese Veranstaltung?

Concurrent Events