Darcs
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Darcs ist ein in der SpracheHaskell geschriebenes Programm zur VersionsKontrolle. Im Gegensatz zu CVS verwaltet es keine Dateiversionen sondern Projektänderungen (Patches). Alle Aktionen werden als Operationen auf diesen Projektänderungen verstanden, zum Beispiel wie ein Patch über einen anderen hinweg getauscht wird. Diese Projektänderungen können beliebig zwischen Projektteilnehmern oder einem zentralen Archiv ausgetauscht werden. Eine Projektänderung besteht aus Einzeländerungen. Diese können (derzeit) sein:
- willkürliche Änderung eines Abschnitts in einer Datei
- Ersetzung eines Schlüsselwortes in einer Datei
- Datei oder Verzeichnis anlegen
- Datei oder Verzeichnis löschen
- Datei oder Verzeichnis umbenennen oder verschieben
Vor dem Aufnehmen einer Projektänderung wird der Benutzer gefragt,
aus welchen Einzeländerungen die Projektänderung zusammengesetzt werden soll.
Danach werden benutzerdefinierte Tests für das derart aktualisierte Projekt gestartet.
Zumindest sollte dieser Test die Programmtexte übersetzen,
um zu überprüfen, ob die zusammengestellten Änderungen konsistent sind.
Die Trennung zwischen Archiv und Arbeitskopie ist aufgehoben,
mit jeder Arbeitskopie bekommt man das gesamte Archiv aller Versionen.
Abzweige gibt es nur in Form weiterer Arbeitskopien.
Zwei Arbeitskopien auf dem gleichen Dateisystem können sich aber die gleichen Patches über Verweise im Dateisystem teilen.
Teile |  |
Vorteile:
- Man kommt ohne zentralen Server aus (wenn man einen hat, umso besser)
- Man kann vieles vom Netz getrennt erledigen
- Es lassen sich sehr leicht Abzweige erstellen (praktisch genau wie beim Abholen eines Projektes von einem zentralen Server)
- Es lassen sich sehr leicht Abzweige zusammenführen (praktisch genau wie beim Abgleich von Daten zwischen lokalem Rechner und Server)
- Man kann bereits aufgenommene Projektänderungen rückgängig machen
- Es lassen sich rückwirkend Fehler beheben (Das geht leicht, so lange an der fehlerhaften Stelle nicht weiter gearbeitet wurde. Ansonsten wird es schwierig, aber nicht unmöglich.)
Nachteile:
- Der Speicherbedarf für eine Arbeitskopie ist deutlich höher als bei CVS
- Es gibt keine Verwaltung der existierenden Abzweige (eben weil jeder Abzweig eine eigenständige Arbeitskopie ist)
- Löscht man Projektänderungen mitten aus der Projektgeschichte heraus, ist es durchaus möglich, dass die nachfolgenden Änderungen nicht funktionierende Projektversionen erzeugen.
Theorie |  |
Der Darcs-Autor DavidRoundy? hat eine "Theorie der Änderungen" entwickelt, welche beschreibt,
wann man zwei aufeinanderfolgende Projektänderungen vertauschen kann und was zu tun ist,
wenn zwei Änderungen nicht vertauschbar sind.
Was aus mathematischer Sicht etwas befremdlich klingt, ist,
dass der Autor schreibt, dass das verwendete Prinzip aus der Quantenmechanik abgeleitet ist.
Was er meint, ist, dass Quantenphysiker mit komplexen unitären Matrizen rechnen,
strenggenommen sogar nur multiplizieren und dass diese natürlich immer invertierbar sind.
Manchmal sind Faktoren auch vertauschbar, das aber nicht immer.
Die Matrix, oder genauer der durch die Multiplikation mit der Matrix beschriebene Operator,
ist für ihn das Analogon für eine Projektänderung.
Eine Projektänderung kann man ebenfalls immer rückgängig machen (Invertierbarkeit),
aber zwei aufeinanderfolgende Änderungen kann man nicht immer vertauschen (Kommutierbarkeit).
Es geht also eigentlich nicht um Quantenmechanik und auch nicht um lineare Algebra und Matrizen,
sondern um endliche Gruppen (nicht-abelsch, also nicht kommutativ).
Mit dem gleichen Recht könnte man behaupten,
dass Darcs seinen Ursprung im Rubikwürfel hat oder in der Betrachtung von Wurzeln algebraischer Gleichungen.
Beides lässt sich ebenfalls mit endlichen Gruppen beschreiben.
Vergleich mit anderen Systemen |  |
Genau wie bei SubVersion ist eine Revision nicht an eine Datei, sondern an den Zustand des gesamten Repositories geknüpft. Dennoch ist Darcs völlig anders. SubVersion verwaltet (genau wie CVS) einen Baum von Revisionen; zwischen je zwei Revisionen vermittelt ein Patch. Darcs verwaltet dagegen die Patches und Abhängigkeiten zwischen diesen. Aus der gleichen Menge Patches lassen sich so viel mehr denkbare Revisionen generieren, etwa indem Patches weggelassen werden. Das geht bei Darcs im Prinzip überall, bei SubVersion kann immer nur der letzte Patch weggelassen werden.
Resourcen |  |
KategorieVersionskontrolle
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 16. November 2005 22:57 (diff))