Enough people recommended this git compatible VCS that I had to check it out. Now it's been a few weeks I can report it's pretty good, and I will continue to use it despite the fact I had no problems with the git mental model.
If you want to get started, read these:
jujutsu is compatible with git and unless you have a huge repo, it makes sense to colocate; use both version control systems in your project.
I use the git squash method mentioned in the tutorial and only needed to learn a few subcommands. I really like how it logs every command allowing you to undo and how it automatically rewrites descendant nodes. I also like how conflicts are not blocking and that you only have to create a branch when you're about to push to a remote git repo.
The project is still going through a lot of changes but is safe to use now. I have version 0.24.0.
Here's how I start and work on a project (after setting up a username and email):
In an existing git repo run:
jj git init --colocate
Create a change and optionally give it a description indicating your intended work then create another unnamed change on top of this.
jj new -m "create skynet"
jj new
View the current status and log with:
jj st
jj
Work on your code. These changes will be going into the undescribed change and are not saved. When you have something good, you can squash these changes into the described change to commit them.
jj squash
When I'm ready to add another change I just describe my empty, previously unnamed change, and create a new unnamed change on top of this to continue the squash process.
jj desc -m "Oh wait, we should put in some safeguards"
jj new
Change your working-copy revision with:
jj edit <revision>
Any time you are tracking a described change, and you make a change to the code, it will commit those changes and rewrite descendants (if necessary).
Before pushing to a remote repo you have to set up a bookmark:
jj git remote add origin na@github:/satellite_software
jj bookmark set skynet
jj git push
Rebase with:
jj rebase -r <source revision> -d <dest revision>
Or merge a bunch of changes into a single change with:
jj new <revision1> <revision2> <revision3> <...
This model is faster than using git and takes less mental effort. The git process wasn't difficult, but you have to follow a deliberate series of steps to save your work and rebasing and merging are something to consider carefully. With jujutsu it's so fast to just type 'jj squash' (I've aliased it to 'jsq') you don't really need to think about it at all. I spend more time thinking about code than fussing with the source control.
Update 241225:
Go read about the 'jj absorb' command in 0.24 it's crazy!