Hört sich ähnlich an wie das Konzept von SubVersion, dass also nicht mehr eine Version an eine Datei geknüpft ist, sondern an eine Änderung. --bs |
===SubVersion=== |
:Nein, das ist völlig orthogonal. SubVersion verwaltet (genau wie CVS) einen Baum von Revisionen; zwischen je zwei Revisionen vermittelt ein Patch. Darcs verwaltet die Patches und Abhängigkeiten zwischen diesen. Aus der gleichen Menge 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. -- UdoStenzel |
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. |
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:
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 | ![]() |
SubVersion | ![]() |
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 | ![]() |