Systeme zur Versionsverwaltung
Dies sind alle Open-Source-Versionsverwaltungssysteme, die mir
Mitte 2007 bekannt waren sowie einige, die ich Ende 2011 hinzugefügt habe.
Diejenigen, die ich regelmäßig nutze, sind Subversion und Git; aber auch
Bazaar und CVS nutzte ich in großem Maße. Mit den anderen habe ich kaum
oder keine Erfahrung, und die hier aufgeführten Informationen habe ich
von ihren Websites übernommen. Siehe auch
.
Subversion –
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. Eines
der Ziele von Subversion ist, dass der Übergang nach Subversion von
Leuten, die bereits mit CVS vertraut sind, als relativ glatt empfunden
wird. Es ist hier nicht genug Platz, um detalliert die Funktionen von
Subversion zu behandeln; besuchen Sie die Webseite des Projekts für
weitere Informationen. [Disclaimer: Ich bin an der
Entwicklung von Subversion beteiligt, und es ist das einzige System
welches ich regelmäßig benutze.]
GIT –
GIT ist ein Projekt, welches von Linus Torvalds gestartet wurde, um
den Quellcode des Linux-Kernels 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 vom 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 ein vollwertiges Repository mit der
Möglichkeit Revisionen zu verfolgen, unabhängig von der Verfügbarkeit
des Netzwerks oder einem Server."
Mercurial –
Mercurial ist ein verteiltes Versionsverwaltungssystem, welches
unter anderem "vollständige Kreuzindexierung von Dateien sowie
Änderungen an mehreren Dateien; Bandbreite und Prozessor sparende HTTP-
und SSH-Protokolle für die Synchronisierung; beliebige Merges zwischen
den Zweigen von Entwicklern; integrierte autonome webbasierte
Benutzeroberfläche; [unterstützung für] UNIX, MacOS X, und Windows" und
mehr (die vorangehende Liste von Funktionen stammt von der Webseite von
Mercurial).
Bazaar –
Bazaar (oder bzr) ist ein verteiltes Versionsverwaltungssystem mit
Schwerpunkt auf einfacher Benutzbarkeit und flexiblem Datenmodel. Es ist
ein offizielles GNU-Projekt und das ursprüngliche Versionsverwaltungssystem
der freien Software-Projekt-Hosting-Site Launchpad.net. Bazaar unterstützt
verteilte Versionsverwaltung vollständig: sämtliche Arbeit findet in
Zweigen statt, und jedem Entwickler steht üblicherweise die vollständige
Änderungsgeschichte des Zweiges zur Verfügung. Zweige können auf
dezentralisierte Weise miteinander gemergt werden, aber Bazaar kann auch
so konfiguriert werden, dass es zentralisiert arbeitet. Bazaar nahm seinen
Anfang aus einem Fork von GNU Arch, wurde dann jedoch von Grund auf neu
geschrieben und hat nun zu GNU Arch keine direkte Beziehung mehr.
SVK –
Auch wenn es auf Subversion aufbaut, ähnelt SVK wahrscheinlich
eher einigen 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.
Veracity –
Veracity ist ein verteiltes Versionsverwaltungssystem; Genau wie bei
Git, Mercurial, Bazaar usw. arbeitet jeder Entwickler auf einem
vollständigen lokalen Projektarchiv und Änderungen werden auf Bedarf
zwischen den Projektarchiven per Push und Pull übertragen. Von den Befehlen
her ist es diesen System sehr ähnlich, aber Veracity beinhaltet zusätzlich
zum Versionieren von Dateien eine verteilte Fehlerdatenbank, die
gemeinsam mit den Dateien versioniert wird. In anderen Worten: Veracity
versucht, alle Artefakte aufzunehmen, die tatsächlich zur Entwicklung
benötigt werden — nicht allein den Quelltext-Baum, sondern
auch die Fehlerberichte — und sie durch das
Versionsverwaltungssystem verfügbar zu machen. Das ist ein ehrgeiziges
Ziel, und solange ich noch nicht die Gelegeneit hatte, es zu benutzen,
bin ich an Erfahrungsberichten sehr interessiert. Es wird hauptsächlich
von SourceGear, Inc. entwickelt, einem Unternehmen mit einer langen
Geschichte im Hinblick auf Versionsverwaltung und
Softwarekonfigurationsmanagement.
Siehe auch für ein ähnliches System.
Fossil –
Fossil ähnelt dahin gehend,
dass es ein verteiltes Versionsverwaltungssystem ist, das mehr als nur
Quelltextdateien versioniert: es versioniert die Fehlerdatenbank, aber
auch ein verteiltes Wiki, und ein verteiltes Blog. Die weiteren Features
umfassen einen standardmäßigen "autosync"-Modus, um nicht-konfligierende
Änderungen automatisch zusammenzuführen (d.h. Fossil kann sowohl auf
zentralisierte als auch auf dezentralisierte Weise arbeiten, was
theoretisch auch für andere dezentralisierte Systeme gilt, aber es scheint
so, als ob Fossil den zentralisierten Arbeitsablauf besser unterstützt).
Auch wird es mit einem Web-Interface ausgeliefert, mit dem die Benutzer
durch das Projektarchiv navigieren können.
Fossil wird hauptsächlich durch Dr. Richard Hipp entwickelt, der
möglicherweise besser bekannt ist als Autor der SQLite Datenbank-Engine.
Genau wie Veracity, habe ich Fossil bislang nicht benutzt; sollten Sie
es benutzen, dann lassen Sie mich bitte wissen, wie es läuft.
CVS –
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, das Entwicklern Zugang über
weite Netze anbot (so weit ich weiß), und es erlaubte erstmals anonyme,
rein lesende Checkouts, was neuen Entwicklern einen einfachen
Weg bot, sich an Projekten zu beteiligen. CVS verwaltet lediglich
Dateien, keine Verzeichnisse; es bietet Verzweigung an, Tags und gute
Geschwindigkeit auf Client-Seite, kann aber nicht so gut mit großen
oder binären Dateien umgehen. Es unterstützt auch keine atomaren
Commits.[Disclaimer: Ich war ca. fünf Jahre lang
aktiver Entwickler bei CVS, bevor ich dabei half, das Subversion-Projekt
zu starten, um es zu ersetzen.]
Darcs –
"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 des
Repositorys anschauen kann."
Arch –
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 –
"monotone ist ein freies verteiltes Versionsverwaltungssystem. Es
bietet einen einfachen, aus einer Datei bestehenden auf Transaktionen
basierenden Speicher, mit vollständig entkoppeltem Betrieb und einem
effizienten Peer-to-Peer-Synchronisationsprotokoll. 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 bietet
gute Unterstützung für Internationalisierung, hat keine externen
Abhängigkeiten, läuft unter Linux, Solaris, OSX, und Windows, und ist
unter der GNU GPL lizenziert."
Codeville –
"Warum noch ein weiteres Versionsverwaltungssystem? Alle anderen
Versionsverwaltungssysteme erfordern, dass Sie genau auf die Beziehungen
zwischen Zweigen achthaben, um nicht wiederholt die selben Konflikte
zusammenführen zu müssen. Codeville ist sehr viel freizügiger. Es erlaubt
Ihnen ein Commit von oder zu einem Repository zu machen, jederzeit und
ohne unnötige wiederholte Merges."
"Codeville arbeitet, indem es für jede Änderung, die gemacht
wird, eine Kennung erstellt, und sich eine Liste aller Änderungen die je
auf einer Datei angewandt wurden behält, sowie die letzte Änderung die
jede Zeile in jeder Datei geändert hat. Wenn es einen Konflikt gibt,
überprüft es, ob eine 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ält sich fast genau wie CVS."
Vesta –
"Vesta ist ein portables SCM [Software Configuration Management]
System dessen Ziel es ist, die Entwicklung fast jeder Größe zu
unterstützen, von ziemlich klein (unter 10.000 Codezeilen) bis
sehr groß (10.000.000 Codezeilen)."
"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 zweieinhalb Jahre lang produktiv genutzt.
Die Alpha-Gruppe hatte über 150 aktive Entwickler an zwei Standorten die
tausende Meilen auseinaner lagen, an den Ost- und Westküsten der USA.
Die Gruppe hat Vesta genutzt, 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 Softwareentwicklung im Sinn
entworfen wurde, hat die Alpha-Gruppe die Flexibilität des System
demonstriert, indem sie es für die Hardwareentwicklung 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 –
"Aegis ist ein Software-Configuration-Management-System,
basierend auf Transaktionen. Es bietet einen Rahmen, in dem ein Team von
Entwicklern an vielen Änderungen unabhängig voneinander arbeiten können,
und Aegis koordiniert die Integration dieser Änderungen zurück in die
zentralen Quellcode-Dateien der Anwendung, mit so wenig Störungen wie
möglich."
CVSNT –
"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 lizenziert."
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 plattformübergreifend (läuft in Windows-
oder Unix-Umgebungen); NT version ist vollständig mit dem Win32 System
integriert; MergePoint-Verarbeitung bedeutet, dass Sie keine Tags mehr
brauchen, um einen Merge zu machen; es wird aktiv entwickelt.
META-CVS –
"Meta-CVS ist ein Versionsverwaltungssystem, welches um CVS gebaut
wurde. Obwohl es die meisten Funktionen von CVS behält, 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 benutzerfreundlichere
Erzeugung von und Zusammenführung von Zweigen, Unterstützung für
symbolische Verweise, Listen von Attributen für versionierte Daten,
verbesserter Import von Daten dritter Parteien, sowei einfache
Aufrüstung bereits bestehender CVS-Archive.
OpenCM –
"OpenCM wurde als ein sicherer, hoch integrierter Ersatz für CVS
entworfen. 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 Dinge, 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."
PRCS –
"PRCS, das Project Revision Control System, ist das Frontend für
einen Satz von Programmen, die es (wie CVS) ermöglichen mit Gruppen von
Dateien und Verzeichnessen als Entitäten umzugehen, und dabei
kohärente 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 –
ArX ist ein verteiltes Versionsverwaltungssystem, welches
Funktionen für Verzweigung und Zusammenführung anbietet,
kryptographische Prüfung der Integrität von Daten, sowie die Fähigkeit,
Archive einfach auf jedem HTTP-Server zu veröffentlichen.
SourceJammer –
"SourceJammer ist ein Verwaltungssystem für Versionen und
Quellcode welches in Java geschrieben ist. Es besteht aus einer
Server-seitigen
Komponente, welche die Dateien und die Historie der Versionen,
Commits und Checkouts usw. und andere Befehle verarbeitet sowie einer
Client-seitigen Komponente die Anfragen an den Server sendet und die
Dateien auf dem Dateisystem des Clients verwaltet."
FastCST –
"Ein 'modernes' System welches Gruppen von Änderungen über
Revisionen von Dateiein benutzt und verteilt arbeitet anstatt
zentralisiert. Sobald Sie eine E-Mail-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 Inhalte zu verteilen. Alle Änderungen sind universell
eindeutig, und haben eine Menge Metadaten, also können Sie alles
ablehnen, was Sie nicht wollen, bevor Sie es ausprobieren. Merges werden
realisiert, indem die Zusammenführung eines Satzes von Änderungen mit
dem derzeitigen Inhalt des entsprechenden Verzeichnisses verglichen wird,
nicht, indem der Versuch unternommen wird, es mit einem anderen Satz
von Änderungen zusammen zu führen."
Superversion –
"Superversion ist ein verteiltes Versionsverwaltungssystem für
mehrere Benutzer welches auf Changesets basiert. Sein Ziel ist eine
professionelle Open-Source-Alternative zu kommerziellen Lösungen an die
Seite zu stellen, die gleich einfach bedienbar ist (oder sogar einfacher)
und gleich leistungsfähig. Tatsächlich ist intuitive und effiziente
Bedienbarkeit bereits seit dem Anfang seiner Entwicklung eines der
vorrangigen Ziele von Superversion."