GNU arch
# GNU arch

GNU arch ist eine Software zur verteilten Versionsverwaltung. Versionsverwaltungssysteme werden u. a. eingesetzt, um die Veränderungen am Quellcode eines Programmes zu speichern und Entwicklern die Möglichkeit zu geben, gleichzeitig daran zu arbeiten.

Das letzte Release wurde am 20. Juli 2006 veröffentlicht; die letzte Änderung im Code-Repository fand am 15. Februar 2008 statt.

GNU arch wurde vollständig durch Bazaar, einen Fork ersetzt.

## Merkmale

GNU arch verfolgt einen etwas anderen Ansatz als die meisten anderen Versionskontrollen. Jede Revision, d. h. Änderung am Quelltext, ist eindeutig identifizierbar. Dadurch sind Zusammenführungen von an sich komplett ungleichartigen Quellcodebäumen möglich.

GNU arch operiert dezentral, das bedeutet, dass es keine Notwendigkeit für einen zentralen Server mit getrennter Benutzerverwaltung gibt. Stattdessen stellt ein sogenannter Head-Developer, also ein Entwickler an zentraler Position im Projekt, einfach eine Kopie des Projektes via HTTP, FTP, SFTP oder jedem anderen Protokoll, das sich für Dateitransfer eignet, zur Verfügung. Entwickler, die an dem Projekt mitarbeiten möchten, holen sich diese Kopien und erstellen ihre Änderungen, welche an den Head-Developer zurückgesandt werden und von ihm in den offiziellen Quellcodebaum eingepflegt werden.

Um das Verhalten eines zentralisierten Versionskontrollsystems nachzuahmen, könnte der Head-Developer den Mitentwicklern z. B. Shellzugang via SSH bereitstellen. Diese können dann, nach erfolgter Authentifizierung, über Schreibzugriff im Dateisystem den Quellcode direkt ändern.

Andere Features von GNU arch:

* Atomare Commits: Ein Commit findet nur als Transaktion statt, schlägt ein Teil des Commits fehl werden alle Änderungen zurückgenommen. Dies garantiert konsistente Commits.
* Orientierung an changesets: GNU arch verwaltet sogenannte changesets, also Änderungen an mehreren Dateien, anstelle von einzelnen Dateien
* Leichtes und fortschrittliches branching, also das Abspalten und späterem Zusammenfügen von Quellcodebaum-Teilen zwecks gleichzeitiger Bearbeitung
* Fortgeschrittenes Zusammenführen von Changesets
* Kryptographische Signaturen zwecks Authentifizierung
* Datei- und Verzeichnisumbenennung (eine Schwachstelle von CVS)
* Verwaltung von symbolischen Verknüpfungen

## Autor

Der Hauptentwickler und Verwalter von GNU arch ist Tom Lord. GNU arch wird auch manchmal tla genannt, einem Akronym für Tom Lord's Arch. Lord begann mit der Entwicklung von GNU arch als einer Ansammlung von Shellskripten als Alternative zu CVS. 2003 wurde arch ein Teil des GNU-Projekts.

## Kritik

Die häufigste Kritik an arch ist seine steile Lernkurve, sogar für Benutzer, die bereits Erfahrung mit anderen Versionskontrollsystemen haben. Archs große Anzahl von Befehlen kann auf neue Benutzer abschreckend wirken.

Auch die etwas ungewöhnliche Dateinamenskonvention FunkyFileNames stieß auf Kritik. Durch sie wird die Verarbeitung von arch-Dateien in Shellskripten sowie die Portierung von arch auf andere Betriebssysteme erschwert. Auch hat arch den Ruf, nicht sehr gut auf großen Quellcodebäumen zu skalieren.

