Fossil (Software)
# Fossil (Software)

Fossil ist ein freies verteiltes System zur Versionsverwaltung (SCM) von Software ähnlich Bazaar, BitKeeper, Git, Mercurial und Monotone.

## Eigenschaften

Der Name Fossil deutet auf ein Hauptmerkmal des Systems hin: Alle gemachten Änderungen sollen für immer zurückverfolgbar sein. Fossil nutzt keine fortlaufende Nummerierung von Versionen (wie CVS und Subversion), um Versionen zu verfolgen, sondern berechnet für jeden Commit einen eindeutigen Hashwert (wie die anderen verteilten Systeme). Dies ist notwendig, da es nicht notwendigerweise ein zentrales Repository für die Versionsverwaltung gibt, sondern jeder Benutzer sein eigenes lokales Repository anlegt. Änderungen werden durch den Hashwert eindeutig erkenn- und versionierbar. Allerdings ist – genauso wie bei den anderen verteilten Versionsverwaltungen – ein zentraler Server möglich, um über diesen die einzelnen Versionen zu synchronisieren. Auch Branches, Tags und Mergen beherrscht Fossil.

### Aufbau

Ein Fossilrepository besteht aus einer einzigen Datei, die mithilfe des Programms fossil auch als Webserver genutzt werden kann. Dadurch geht es über ein reines SCM hinaus, es enthält zusätzlich Funktionen, die sonst aus integrierten Plattformen wie GitHub und Bitbucket bekannt sind:

* Integriertes Wiki
* Integriertes Forum
* Integrierter Bugtracker

Besondere Vorteile ergeben sich aus der Integration dieser drei Funktionen und dem Zusammenfassen der Daten zu einem Projekt in einer einzigen Datei.

* Es müssen nicht mehrere verschiedene System aufeinander abgestimmt und miteinander verbunden werden.
* Ein „Umziehen“ auf einen anderen Rechner bedeutet lediglich das Verschieben einer einzigen Datei.
* Nicht nur auf den Quellcode des Projekts (wie bei den anderen verteilten Versionsverwaltungen), sondern auch auf Wiki, Bugtracker und Forum kann offline (also ohne Verbindung zu einem zentralen Server) zugegriffen und Änderungen später wieder synchronisiert werden.

Darüber hinaus bringt die Verwendung von SQLite für die Datenspeicherung den Vorteil eines komplett dokumentierten Speicherformats sowie der vollständigen Erfüllung der ACID-Kriterien.

### Kompatibilität mit Git

Ein vollständiger Im- und Export eines Repositorys mitsamt seinem Verlauf von und nach Git ist vorhanden und – ab Fossil 2.9 – auch automatisierbar. Dies gilt allerdings nicht für Wiki und Bugtracking; hier wäre ein Export durch Zugriff auf die SQLite-Datenbank möglich.

## Verbreitung

Folgende große Projekte verwenden Fossil:

* Fossil selbst
* Tcl/Tk
* SQLite
