Beagle: Git, URIs and all the dirty words
Posted by gritzko 5 days ago
Comments
Comment by PufPufPuf 3 days ago
Comment by gritzko 3 days ago
So the idea here is to define actual operations that happen to the tree, formally. Those are a bit more complicated than the vanilla blob/tree/commit model, but still manageable. Six verbs is enough.
Overall, it all decomposes cleanly and uniformly. Workflow-based vocabulary becomes unnecessary (and a bit confusing) once you grasp that basic underlying model of orthogonal operations/concerns. Some parts still need work though, e.g. conveying the precise state of the tree (can't steal from git here).
Comment by Contortion 3 days ago
Even then I don't think the abstraction to HTTP verbs is necessarily a useful one as web requests and version control are two different mental models.
Comment by quantummagic 3 days ago
Comment by LoganDark 3 days ago
Jujutsu VCS! https://www.jj-vcs.dev
It doesn't use Git primitives directly, but it has Git interoperability using semantically more powerful primitives. (e.g., there is not only one index -- you can perform rebases, amends, squashes etc. remotely (without checking out first) -- conflicts are non-blocking and support n-way merges -- and so much more)
I've embraced it to the point of porting complex agentic frameworks to support jj (https://github.com/LoganDark/get-shit-done) and I do not regret it at all. Jujutsu is my absolute favorite VCS now.
Comment by gritzko 3 days ago
So, the actual question is how to make this machinery un-screw-up-able. (Author)
Comment by oakinnagbe 2 days ago
Comment by OJFord 3 days ago