weidner/archives/2012/09/

Fossil SCM - der Einstieg

Das Versionsverwaltungssystem Fossil hat eine Reihe von Vorteilen, die es zumindest für kleinere Projekte attraktiv machen.

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
Tags: