-
Basiert auf der Patch-Theorie und ist dabei schnell und skalierbar
-
Commutation
→ Einzelne Änderungen können unabhängig von ihrer Reihenfolge angewendet werden, ohne dass sich die Versions-ID ändert
→ Ein deutlich einfacherer Workflow als bei git rebase oder hg transplant
→ Es gibt zwar die channels-Funktion, die Branches ähnelt, sie ist aber nicht so wichtig wie in anderen Systemen. Ein Feature-Branch ist in Pijul zum Beispiel einfach nur eine Änderung
→ Das saubere Halten der Historie ist die Standardeinstellung
- Merge correctness
→ Pijul garantiert beim Mergen mehrere Dinge
→ Am wichtigsten ist, dass die Reihenfolge der Zeilen immer erhalten bleibt. Anders als bei 3-Wege-Merges, bei denen Zeilen gelegentlich durcheinandergeraten
→ Wenn die Reihenfolge nicht bestimmt werden kann, etwa bei gleichzeitigen Bearbeitungen, entsteht ein Konflikt. Das unterscheidet sich von Systemen, die dies als "automatisch" oder "kein Konflikt" behandeln
- First-class conflicts
→ In Pijul sind Konflikte nicht als "Merge-Fehler", sondern als Standardfall modelliert
→ Insbesondere wird ein Konflikt zwischen zwei Änderungen durch eine einzige Änderung aufgelöst
- Partial Clones
→ Mit Commutation lässt sich nur ein kleiner Teilbereich eines Repositorys klonen. Tatsächlich ist es auch möglich, nur Änderungen auf diesen Teilbereich anzuwenden
→ Arbeiten mit Partial Clones erzeugen Changes, die sich leicht an große Repositorys senden lassen
3 Kommentare
Git ist zwar ehrlich gesagt im Arbeitsalltag der Standard, aber ziemlich unbequem -- Es ist Zeit, nach und nach auf das Rust-basierte Pijul umzusteigen
Der größte Unterschied zwischen svn und git ist – wenn man einmal davon absieht, dass es sich um ein verteiltes Repository handelt –, dass svn Diffs verwaltet, während git Snapshots verwaltet. Da hier von Patch-Theorie die Rede ist, habe ich irgendwie den Eindruck, dass es eher in Richtung der Verwaltung von Diffs geht.
Die Patch-Theorie (Theory of Patches) können Sie sich im verteilten Versionsverwaltungssystem Darcs ansehen.
Beim Vergleich von Darcs und Git wird das so erklärt.
A set of changes that you record in Git is called a “commit”, while in Darcs it is called a “patch”.