Anhang A. Systeme zur Versionsverwaulung

Diese sind alle mir mitte 2007 bekannten Open Source Versionsverwaltungssysteme. Das einzige welches ich regelmäßig benutze ist Subversion. Ich habe wenig oder keine Erfahrung mit den meisten anderen Systemen, außer Subversion und CVS; die Information hier stammt von anderen Webseiten. Siehe auch http://en.wikipedia.org/wiki/List_of_revision_control_software.

CVS gibt es schon seit langem, und viele Entwickler sind bereits damit vertraut. Zu seiner Zeit war es revolutionär: Es war das erste Open Source Versionsverwaltungssystem welches Entwicklern Zugang über weite Netze anbot (so weit ich weiß), und das erste welches anonyme, rein lesende Checkouts zu machen, was neuen Entwicklern einen einfachen Weg gab, sich an Projekte zu beteiligen. CVS verwaltet lediglich Dateien, keine Verzeichnisse; es biete Verzweigung an, Tags, und gute Geschwindigkeit auf der Client Seite, kann aber nicht so gut mit großen oder binären Dateien umgehen. Es unterstützt auch keine atomaren Commits.[Haftungsauschluss: Ich war ca. fünf Jahre lang aktiver Entwickler bei CVS, vor ich dabei half, das Subversion Projekt anzufangen, um es zu ersetzen.]

Subversion wurde vor allem als Ersatz für CVS geschrieben—d.h. seine Herangehensweise an die Versionsverwaltung ist ungefähr die gleiche wie bei CVS, aber ohne die Probleme und fehlende Funktionen, welche die meisten Nutzer von CVS verärgern. Eine der Ziele von Subversion ist, dass der Übergang nach Subversion für Leute die bereits mit CVS vertraut sind, als relativ glatt empfinden. Es ist hier nicht genug Platz um detalliert die Funktionen von Subversion zu behandeln; gehen Sie zu der Webseite des Projekts für weitere Informationen. [Hauftungsauschluss: Ich bin an der Entwicklung von Subversion beteiligt, und es ist das einzige System welches ich regelmäßig benutze.]

Auch wenn es auf Subversion aufbaut, ähnelt SVK wahrscheinlich eher einige der dezentralisierten Systeme weiter unten als Subversion. SVK unterstützt verteilte Entwicklung, lokale Commits, ausgeklügelte Zusammenführung von Änderungen, und die Fähigkeit Bäume aus Versionsverwaltungssystemen außer SVK zu spiegeln. Siehe seine Webseite für weitere Details.

Mercurial ist ein verteiltes Versionsverwaltungssystem, welches unter anderem "vollständige kreuzindexierung von Dateien sowie den Änderungen an mehereren Dateien; Bandbreite und Prozessor sparende HTTP und SSH Protokolle für die Synchronisierung; beliebige Merges zwischen den Zweigen von Entwicklern; integrierte autonome Web basierte Benutzeroberfläche; [unterstützung für] UNIX, MacOS X, und Windows" und mehr (die vorangehende Liste von Funktionen stammt von der Webseite von Mercurial).

GIT ist ein Projekt welches von Linus Torvalds gestartet wurde, um den Quellcode von dem Linux Kernel zu verwalten. GIT war zunächst relativ auf die Bedürfnisse der Kernel Entwicklung konzentriert, ist aber darüber hinaus gewachsen und wird mittlerweile von anderen Projekten als dem Linux Kernel benutzt. Auf der Webseite steht "...entwickelt um sehr große Projekte schnell und effizient zu verwalten; es wird hauptsächlich von verschiedenen Open Source Projekten benutzt, insbesondere von dem Linux Kernel. Git gehört zu der Kategorie der verteilten Verwaltungssysteme für Quellcode, ähnlich wie z.B. GNU Arch oder Monotone (oder BitKeeper aus der proprietären Welt). Jedes Arbeitsverzeichnis von GIT ist eine vollwertige Repository mit der Möglichkeit Revisionen zu verfolgen, unabhängig von der Verfügbarkeit des Netzwerks oder einem Server."

Bazaar befindet sich noch in der Entwicklung. Es wird eine Implementierung des GNU Arch Protokolls sein, währen es sich entwickelt, wird es die Kompatibilität mit GNU Arch bewahren, und mit der GNU Arch Gemeinschaft bei Änderungen zusammen arbeiten, die aufgrund der Benutzerfreundlichkeit erforderlich werden könnten.

Bazaar-NG — http://bazaar-ng.org/

Bazaar-NG (oder bzr) wird derzeit von Canonical entwickelt (http://canonical.com/). Es bietet die Entscheidung zwischen zentralisierter und dezentralisierter Arbeit innerhalb von einem einzigen Projekt an. Wenn Sie zum Beispiel im Büro sind, können Sie auf einem zentralen Ast arbeiten; bei experimentellen Änderungen oder offline Arbeit, können Sie ihren Ast auf dem Laptop mitnehmen und es später wieder zusammenführen.

"David's Advanced Revision Control System ist noch ein weiterer Ersatz für CVS. Es wurde in Haskell geschrieben, und wurde schon auf Linux, MacOS X, FreeBSD, OpenBSD und Microsoft Windows benutzt. Darcs beinhaltet auch ein cgi script, mit dem man sich den Ihnhalt Ihrer Repository anschauen kann."

GNU Arch unterstützt sowohl verteilte als auch die zentralisierte Entwicklung. Entwickler committen ihre Änderungen zu einem "Archiv", welches lokal sein kann, und die Änderungen können zu anderen Archiven geschoben oder gezogen werden, wie es die Verwalter der Archive für richtig halten. Wie solch eine Methodik impliziert, hat Arch feinere Unterstützung für Merges als CVS. Arch erlaubt es auch einfach Zweige von Archiven zu erstellen auf denen man keinen commit Zugriff hat; siehe die Webseiten von Arch für weitere Details.

"monotone ist ein freies verteiltes Versionsverwaltungssystem. Es bietet einen einfachen, aus einer Datei bestehenden auf Transaktionen basierenden Speicher, mit vollständig entkoppeltem Betrieb und eine effizientes peer-to-peer synchronizationsprotokoll. Es versteht historisch abhängige Merges, leichtgewichtige Zweige, integrierte Überprüfung und Tests durch dritte. Es benutzt kryptographische Benennung von Versionen sowie Client Seitige RSA Zertifikate. Es hat gute Unterstützung für Internationalisierung, hat keine externen Abhängigkeiten, läuft unter Linux solaris, OSX, und windows, und ist under der GNU GPL lizensiert."

Codeville — http://codeville.org/

"Warum noch ein weiteres Versionsverwaltungssystem? Alle anderen Versionsverwaltungssysteme erfordern, dass Sie genau auf die Beziehungen zwischen Zweigen acht halten, um nicht wiederholt die selben Konflikte zusammenführen zu müssen. Codeville ist sehr viel zügelloser. Es erlaubt Ihnen ein Commit von oder zu einer Repository zu machen, jederzeit und ohne unnötige wiederholte Merges."

"Codeville arbeitet, indem es einen für jede Änderung die gemacht wird eine Kennung erstellt, und sich eine Liste aller Änderungen die je auf einer Datei angewandt wurden behällt, sowie die Letzte Änderung die jede Zeile in jeder Datei geändert hat. Wenn es einen Konflikt gibt, überprüft es ob einer der beiden Seiten bereits auf die andere angewandt wurde, und wenn das der Fall ist, gewinnt die andere Seite automatisch. Wenn es einen Konflikt gibt, der wirklich nicht automatisch zusammengeführt werden kann, verhällt sich fast genau wie CVS."

"Vesta ist ein portables SCM [Software Configuration Management] System dessen Ziel es ist die Entwicklung von fast jeder Größe unterstützen soll, von ziemlich klein (unter 10.000 Code Zeilen) bis sehr groß (10.000.000 Code Zeilen)."

"Vesta ist ein ausgereiftes System. Es ist das Ergebnis von über 10 Jahren Forschungs und Entwicklungsarbeit an dem Compaq/Digital Systems Forschungszentrum, und wurde von der Compaq Gruppe für den Alpha Processor über zwei ein halb Jahre lang produktiv genutzt. Die Alpha Gruppe hatte über 150 aktive Entwickler an zwei Standorten die thausende Meilen auseinaner lagen, an den Ost- und Westküsten der USA. Die Gruppe hat Vesta benutzt, um Quellcode Daten von einer Größe bis zu 130MB zu kompilieren, die je 1.5 abgeleitete Daten produzierten. Die Kompilierungen die an der Ostküste gemacht wurden, haben an einem durchschnittlichen Tag 10-15 GB an Daten produziert, die alle von Vesta verwaltet wurden. Obwohl Vesta mit Software Entwicklung im Sinn entworfen wurde, hat die Alpha Gruppe die Flexibilität des System demonstriert, indem sie es für die Hardware Entwicklung benutzte, Commits mit den Dateien der Beschreibungssprache für die Hardware machten, sowie ihre Simulationen und andere abgeleitete Objekte Builds mit dem System von Vesta gemacht haben. Die Mitglieder der ehemaligen Alpha Gruppe, jetzt ein Teil von Intel, benutzen heute weiterhin Vesta bei einem neuen Mikroprozessor Projekt."

"Aegis ist ein software configuration management system, basierend auf Transaktionen. Es bietet einen Rahmen in dem ein Team von Enticklern an vielen Änderungen unabhängig von einander arbeiten können, und Aegis koordiniert die Integration dieser Änderungen zurück in den Zentralen Quellcode Dateien der Anwendung, mit so wenig Störungen wie möglich."

CVSNT — http://cvsnt.org/

"CVSNT ist ein fortgeschrittenes Versionsverwaltungssystem welches auf mehreren Platforment läuft. Es ist mit der Industrienorm des CVS Protokolls kompatibel und unterstützt viele weitere Funktionen. ... CVSNT ist Open Source, freie Software und unter der GNU GPL lizensiert." Seine Funktionen sind unter anderem die Authentifikation mit allen üblichen CVS Protokollen, sowie das Windows eigene SSPI und Active Directory; unterstützung für secure transport, mittels sserver oder verschlüsseltem SSPI; es ist Platform Übergreifend (läuft in Windows oder Unix Umgebungen); NT version ist vollständig mit dem Win32 System integriert; MergePoint verarbeitung bedeutet, dass Sie keien Tags mehr brauchen, um einen Merge zu machen; wird aktiv entwickelt.

"Meta-CVS ist ein Versionsverwaltungssystem welches um CVS gebaut wurde CVS. Obwohl es die meisten Funktionen von CVS behällt, inklusive aller Netzwerk Unterstützung, ist es mächtiger als CVS, und einfacher zu benutzen". META-CVS listet auf seiner Webseite unter anderem folgende Funktionen: Versionierung von Verzeichnisstrukturen, verbesserte Handhabung verschiedener Dateitypen, einfachere und benutzerfreunlichere Erzeugung von und Zusammenführung von Zweigen, Unterstützung für symbolische Verweise, Listen von Attributen für versionierte Daten, verbesserte Importierung von Daten dritter Parteien, sowei einfache Aufrüstung bereits bestehender CVS Archive.

"OpenCM wurde als ein sicherer, hoch integrierter Ersatz für CVS gedacht. Eine Liste der wesentlichen Funktionen, kann auf seiner Webseite gefunden werden. Auch wenn es nicht so viele Funktionen wie CVS hat, unterstützt es einige nützliche Sachen, die CVS fehlen. In kürze, bietet OpenCM erstklassige Unterstützung für die Umbenennung und konfiguration, kryptographische Authentifizierung, Kontrolle der Zugriffsberechtigung, und erstklassige Verzweigung."

"Stellation ist ein fortgeschrittenes, erweitertess software configuration management system, welches ursprünglich bei IBM Research entwickelt wurde. Auch wenn es all die üblichen Funktionen von jedem SCM System bietet, zeichnet es sich durch ein paar erweiterter Funktionen heraus, wie die Aufgaben orientierte Verwaltung von Änderungen, einheitliche Versionierung eines Projekts und leichtgewichtige Verzweigung, mit der Absicht die Entwicklung von Software Systemen innerhalb von großen Gruppen mit lose koordinierten Entwicklern zu vereinfachen."

"PRCS, das Project Revision Control System, ist das Frontend für ein Satz von Anwendungen, die (wie CVS) es ermöglichen mit Gruppen von Dateien und Verzeichnessen als eine Entität umzugehen, und dabei koherente Versionen der gesamten Gruppe zu bewahren. ... Sein Sinn ist ähnlich dem von SCCS, RCS, und CVS, ist aber (zumindest laut seinen Entwicklern), sehr viel einfacher als irgend eines dieser Systeme."

ArX ist ein verteiltes Versionsverwaltungssystem, welches Funktionen für die Verzweigung und Zusammenführung anbietet, kryptographische Prüfung der Integrität von Daten, sowie die Fähigkeit Archive einfach auf jeden HTTP Server zu veröffentlichen.

SourceJammer — http://sourcejammer.org/

"SourceJammer ist ein Verwaltungssystem für Versionen und Quellcode welches in Java geschrieben ist. Es besteht aus einer Server Seitigen Komponente welches die Dateien und die Historie der Versionen, commits und checkouts usw. und andere Befehle verarbeitet; und eine Client Seitige Komponente die Anfragen an den Server sendet und die Dateien auf dem Dateisystem des Clients verwalverwaltet."

"Ein 'modernes' System welches Gruppen von Änderungen über Revisionen von Dateiein benutzt und verteilt arbeitet anstatt zentralisiert. So lange Sie eine Email Adresse haben, können Sie FastCST benutzen. Für breitere Verteilung, brauchen Sie lediglich einen FTP und/oder HTTP Server oder Sie können den 'server' Befehl benutzen um direkt Ihre Sachen zu verteilen. Alle Änderungen sind universell einzigartig, und haben einen Haufen Metadaten, also können Sie alles ablehnen, was Sie nicht [wollen] vor Sie es ausprobieren. Merges werden eher gemacht, indem man den zusammengeführten Satz von Änderungen mit dem derzeitigen Inhalt des Verzeichnisses vergleicht, als dass man versucht es mit einem anderen Satz von Änderungen versucht zusammen zu führen."

Superversion — http://www.superversion.org/

"Superversion ist ein verteiltes Versionsverwaltungssystem für mehrere Benutzer welches auf changesets basiert. Sein Ziel ist es für den industriellen brauchbares, Open Source Alternative zu kommerziellen Lösungen, welches genau so einfach (oder noch einfacher) zu benutzen ist, und ähnlich leistungsstark. Intuitive und effiziente Bedienbarkeit ist sogar, schon sein dem Anfang seiner Entwicklung, einer der obersten Prioritäten von Superversion."