5 ms·
> You can't use CRDTs for version control You misunderstand what is being proposed. Using CRDTs to calculate the results of a merge does not require being all
by tbrownaw 7mo ago
> You can't use CRDTs for version control
You misunderstand what is being proposed.
Using CRDTs to calculate the results of a merge does not require being allowed to commit the results of that calculation, and doesn't even require that you be able to physically realize the results in the files in your working copy.
.
Consider for example if you want to track and merge scalar values. Maybe file names if you track renames, maybe file properties if you're not just using a text listing (ie .gitattributes) for that, maybe file content hash to decide whether to actually bother running a line-based merge.
One approach is to use what Wikipedia says is called an OR-set[1], with the restriction that a commit can only have a single unique value; if it was previously in the set then it keeps all the same tags, if it wasn't then it gets a new tag.
That restriction is where the necessity of conflict resolution comes in. It doesn't have to be part of the underlying algorithms, just the interface with the outside world.
[1] https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type#OR-Set_(Observed-Remove_Set) https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...
- Retr0id 7mo agoIf semantics-layer conflicts still have to be detected somehow, and resolved by hand, what value is the underlying CRDT providing?
- furyofantares 7mo ago> the result is always the same no matter what order branches are merged in — including many branches mashed together by multiple people working independently.
- Retr0id 7mo agoWhy is that valuable?
- zephen 7mo agoYeah, symmetry is overrated. Git's merge is already symmetrical for two branches being merged, and that, in and of itself, often leads to problems. It's completely unclear that extending this to multiple branches would provide any goodness.
- drfloyd51 7mo agoIt means anyone can fix the conflict. Including a server side AI.
- Retr0id 7mo agonon sequitur
- SpaceNoodled 7mo agoI was wondering when someone would try to cram The Slop Machine into this.
- mememememememo 7mo agoSyntax-only manual merges are just time consuming waste of human time. I'm a small PR-er so 99% of the time it is Syntax. If if it is semnatic at all often then try trunk based development.
- Retr0id 7mo agoThe CRDT isn't syntax-aware either
- mememememememo 7mo agoIf it is doing what I think CRDT does, and tracking where the user clicked and what they typed, it sort of carries a bit more syntax info. It has a chance to get it right. And often since it does something it turns a figure this shit out with review this.
- vlovich123 7mo agoMuch better is AST merging (which itself is also more amenable to crdts). But doing this at the text level is doing to be a failed experiment - the value isn’t there.
- sigbottle 7mo agoThis was my immediate thought when seeing this post too lol.
- febusravenga 7mo agoOch, hello fellow monotone user.