3 ms·
> Pijul is the only version control system based on a complete mathematical theory of patches. [1] Can someone please provide a link to that theory? [1] https
by lixtra 8y ago
> Pijul is the only version control system based on a complete mathematical theory of patches. [1]
Can someone please provide a link to that theory?
[1] https://nest.pijul.com/ https://nest.pijul.com/
EDIT: This? https://arxiv.org/abs/1311.3903 https://arxiv.org/abs/1311.3903
- cmiles74 8y agoI believe Pijul branched from the Darcs codebase. https://en.m.wikipedia.org/wiki/Darcs https://en.m.wikipedia.org/wiki/Darcs
- Sean1708 8y ago> Contrarily to what we hear sometimes, Pijul is not a rewrite of darcs in Rust. The theory is different, and the algorithms have a different complexity. Then of course, Rust was chosen to gain an extra performance factor, but rewriting darcs in Rust would be a lot of work for really minor improvements (darcs is already really good, and Haskell is a great language). From [0]. It's possible that they did branch from darcs, but it seems unlikely given that quote. [0]: https://pijul.org/model/ https://pijul.org/model/
- cmiles74 8y agoFair enough, after looking around the big quote seems to be this one: "Pijul started as an attempt to fix the performance of darcs, and ended up among the fastest distributed version control systems." https://pijul.org/ https://pijul.org/ It sounds more like they wanted a better Darcs and started from there, rather than actually using any of the Darcs code.
- pmeunier 8y agoThe theory is actually quite different, even though Pijul and Darcs behave in a similar way on many examples.
- japanuspus 8y agoI found this [0] to be a very readable presentation of the theory behind Pijul. Key point is that by representing state as an "DAG of lines" instead of as an "ordered list of lines" (i.e. a file), you are always able to do perfect merges. You then need a "flattening" step to get to a normal file, but that is handled same as any other patch. All in all, I am a tempted to give this a try -- even though the mental model will require some mental rewiring. [0]: https://jneem.github.io/merging/ https://jneem.github.io/merging/
- pmeunier 8y ago> the mental model will require some mental rewiring One must be pretty brave to admit that. Even though I'm a big user of Git (and a co-author of Pijul), I agree that you'll probably need to unlearn a number of things. But you won't need to relearn so much, the patch model is really more intuitive in many cases.