Comment by PufPufPuf

11 hours ago

That seems unnecessarily cryptic -- the whole HTTP analogy doesn't really work well, or the article doesn't do a good job of explaining it. I know, I come from a place of knowing git and beginners are often confused by it... but surely "checkout a branch, make a commit" has a clearer mental model than "post ?branch!", whatever that is supposed to mean.

Git vocabulary is workflow-based, i.e. "what we usually do". Unfortunately, the language grew complex and easy to mess up. The problem of NxN interactions: what happens if we do C between A and B?

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).

Agreed. I think the code examples in the article could do with showing before and after states of the branch or repo and maybe compare with standard git commands.

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.