4 comments

[ 3.2 ms ] story [ 21.0 ms ] thread
Serious misunderstanding of Pijul there, Jujutsu seems more similar to Gitless. If you don't have patch commutation, or if you can't explain why your merge algorithm is more than a heuristic (in your case, both), you can't include "the best of" Pijul.
I was referring to the "first-class conflicts" bit. I included the question mark at the end of the title because it's obviously very subjective what the best part of each VCS is.
One thing is somewhat subjective: liking a feature or not.

However, if you're claiming to make a system including "the best" of these three tools, any reader will expect the obvious property that Jujutsu can faithfully simulate all possible workflows from these tools.

Since it is essentially a layer on top of Git, I am fully convinced that it can simulate Git (for example by using Git directly if needed). But since you fail to explain your algorithms and core ideas in the docs, I'm also convinced that it can't simulate draft changesets from Mercurial.

Since I know what it takes to simulate patch commutation (from Pijul), especially together with the snapshot-based nature of Git, I also doubt that it can simulate that. Obviously, I'd be happy to be proven wrong, because I'd learn something really cool!

I've asked you this question before somewhere else: I still don't know whether Jujutsu satisfies the most basic property any user expects from merges: associativity. If not, it's ok, Git, Mercurial, SVN, Fossil also fail to guarantee it on all merges.

I'm also surprised you aren't claiming to do better than Darcs. Even though I've never used `darcs replace`, and I failed to implement that command in Pijul, I'm nevertheless a bit jealous, because I find that quite elegant.

> However, if you're claiming to make a system including "the best" of these three tools, any reader will expect the obvious property that Jujutsu can faithfully simulate all possible workflows from these tools.

I'm actually surprised you think that because that's not at all how I think of "the best of". The way I think of "the best of" is "some of the best things from". I think you're saying that you interpret it as "all of the good things from". I don't know if you or I have the unusual interpretation. I think the rest of your confusion stems from that disconnect between our interpretations of "the best of". Feel free to read the title as "A VCS with some things from Git, Mercurial, and VCS that the author likes best about them".

> But since you fail to explain your algorithms and core ideas in the docs, I'm also convinced that it can't simulate draft changesets from Mercurial.

Heh, "since you fail to explain... I'm convinced that it can't" sounds funny. I suppose you mean "... I'm not sure if it can". Also, what do you mean by "draft changesets"? "Draft phase" is the only thing it supports currently. Maybe you're wondering if it supports "public phase" (see https://www.mercurial-scm.org/wiki/Phases)? There's room in the data model for it, but it haven't made added commands for setting it yet.

> Since I know what it takes to simulate patch commutation (from Pijul), especially together with the snapshot-based nature of Git, I also doubt that it can simulate that.

Correct, it doesn't support that.

> I still don't know whether Jujutsu satisfies the most basic property any user expects from merges: associativity.

No, it doesn't guarantee associativity (like Git and Mercurial, it does 3-way merging from the common ancestor).

> I'm also surprised you aren't claiming to do better than Darcs.

I picked Pijul instead of Darcs in the title because Pijul seems more popular these days. I'm also not sure if Darcs supports first-class conflicts (I should update my readme if it doesn't.)