Fossil SCM - der Einstieg
Das Versionsverwaltungssystem Fossil hat eine Reihe von Vorteilen, die es zumindest für kleinere Projekte attraktiv machen.
Es ist ein verteiltes Versionsverwaltungssystem, wie monotone, git und einige andere, also ist kein zentraler Server notwendig um ein Projekt zu teilen und gemeinsam mit anderen zu bearbeiten.
Das Programm besteht aus einer einzigen ausführbaren Datei und das Repository für ein Projekt besteht nur aus einer einzigen SQLite-Datenbankdatei. Damit ist es möglich, sämtliche Projektdaten inklusive des Versionsverwaltungsprogramms auf einem USB-Stick mitzunehmen
Es enthält einen Bugtracker und ein Wiki, deren Daten ebenfalls im Repository abgelegt sind.
Das Programm stellt ein Webinterface bereit, um auf Bugtracker, Wiki und Quellcode zugreifen zu können (außerdem ist es möglich, Fossil SCM zusammen mit einem Webserver zu betreiben).
Es gibt ausführbare Programme für Linux, MacOS, OpenBSD und Windows, sowie die Möglichkeit, den Quellcode selbst zu übersetzen.
Der Netzbetrieb ist sehr einfach, da Fossil SCM als Protokoll HTTP verwendet und Proxies unterstützt.
Import von und Export zu git ist möglich.
In Gang kommen
Um Fossil SCM auszuprobieren, lade ich von der Download-Seite eine für meinen Rechner geeignete Binärversion auf eben diesen, entpacke das Archiv und verschiebe das ausführbare Programm in meinen Suchpfad. Dann überzeuge ich mich, dass ich es aufrufen kann:
$ fossil version
This is fossil version 1.23 [957b17af58] 2012-08-08 11:25:57 UTC
Ein Repository anlegen
Als erstes lege ich ein Repository an, in dem sämtliche Daten meines Projektes verwahrt werden.
Dazu könnte ich mit fossil clone
ein vorhandenes Repository, dessen
URL mir bekannt ist, klonen (z.B. das Repository mit den Quellen von
Fossil).
Für meine ersten Tests reicht mir aber ein neues, blitzblankes Repository:
$ fossil init ~/A/fossil/erstetests.fossil
Das Repository konfigurieren
Wenn ich ein neues Repository angelegt habe, möchte ich dieses zuerst konfigurieren. Das mache ich mit dem Befehl:
$ fossil ui ~/A/fossil/erstetests.fossil
Mit diesem Befehl startet fossil den eingebauten Webserver sowie meinen Webbrowser, wobei es letzteren mit der URL des Webinterface (http://localhost:8080/index) als Startseite aufruft.
Einen Arbeitsbereich anlegen
Um die Dateien meines Projekts bearbeiten zu können, brauche ich einen Arbeitsbereich. Diesen lege ich mit dem Befehl open an:
$ mkdir erstetests
$ cd erstetests
$ fossil open ~/A/fossil/erstetests.fossil
In diesem Arbeitsbereich kann ich nun die Dateien mit Fossil SCM verwalten.
Dateien hinzufügen, ändern, entfernen
Mit den Fossil-Befehl add kann ich Dateien aus dem Arbeitsbereich der Verwaltung durch Fossil unterstellen. Mit remove nehme ich sie aus der Verwaltung heraus.
Der Befehl addremove gleicht die Dateien im Arbeitsbereich mit dem Repository ab. Das heißt, er führt add für alle Dateien, die im Arbeitsbereich aber nicht im Repository vorhanden sind, aus und remove für alle Dateien, die im Repository verwaltet werden, aber nicht mehr im Arbeitsbereich zu finden sind.
Mit fossil status
kann ich mich über den momentanen Zustand des
Arbeitsbereiches in Bezug auf das Repository informieren.
Keiner dieser Befehle übernimmt Änderungen an den betreffenden Dateien in das Repository. Dafür ist der Befehl commit zuständig.
Verzweigen und zusammenführen
Verschiedene Zweige erzeuge ich in Fossil SCM, indem ich mehrere commit mit unterschiedlichen Änderungen mache, die auf der gleichen Basisversion beruhen. Beispielsweise in verschiedenen Arbeitsbereichen, die mit dem selben Repository verbunden sind.
Um diese Zweige wieder zusammenzuführen, aktualisiere ich (mit fossil
update
) auf einen Zweig und führe dann den Befehl merge mit dem
anderen Zweig aus.
$ fossil update $zweig1
$ fossil merge $zweig2
Mit undo kann ich die Änderungen zurücknehmen, falls merge nicht, wie erwartet, ausfiel.
Damit habe ich die Grundlagen um Projekte für mich selbst mit Fossil SCM zu verwalten.
Mit fossil help
kann ich mir jederzeit Details zu den verschiedenen
Befehlen ausgeben lassen. Weitere Hilfe finde ich unter
www.fossil-scm.org.
Netzbetrieb
Will ich mein Projekt mit anderen teilen, dann werde ich zum Datenaustausch einen Server aufsetzen wollen.
Prinzipiell ist das nicht
notwendig, da ich mit dem Befehl fossil server
jederzeit einen
Server auf meinem Rechner starten kann, mit dem sich ein anderer Rechner
synchronisieren kann. Um aber zu beliebigen Zeiten ohne vorherige
Absprache auf das Repository zuzugreifen, ist ein ständig laufender
Server doch bequemer.
Die einfachste Art, einen Server aufzusetzen, ist mit dem server Befehl.
Der wesentliche Unterschied zwischen fossil ui
und fossil server
ist,
dass ui lediglich an
das interne Netzwerk-Interface bindet und automatisch den Browser
startet, während Fossil mit dem Befehl server an allen
Netzwerkschnittstellen ansprechbar ist und keinen Browser startet. Bei
beiden Befehlen verwendet das Webinterface den Port 8080, wenn ich
nichts anderes vorgebe.
Für einen dauerhaften Serverbetrieb gibt es noch weitere Möglichkeiten, z.B. über den inet Dämon eines Unix-Systems oder als CGI-Skript hinter einem beliebigen Webserver. Auf diese einzugehen, würde jedoch den Rahmen dieses Artikels sprengen.
Posted 2012-09-07