Jujutsu is starting to grow on me in ways I can't fully articulate yet.
Essentially my workflow now is: create an empty commit describing some change. Do all my immediate work in a second empty commit on top of that. If the work fits within the larger change I described in the previous commit, squash the changes, then I'm back to an empty commit again and the change just accumulates below. If I realize "Oh crap, this thing I just did has nothing to do with the larger change but it's still good to have," no problem. Just describe it, commit, then I can easily rebase the previous squash on top of the change I just made. So then I have main -> unrelated nice-to-have change -> squashed commit with larger change -> empty commit for new work. It sounds confusing, and it still kind of is, but it feels like peeling back a level of burocracy I didn't quite realize existed until it was gone. I can even jj prev a couple times, rewind the worktree past the squash commit, and keep working on the new problem there if I want. Sure it's all possible in git, but how much magic do you need to know to actually want to use that on a daily basis? Willingly?
Speaking of Git, when it's time to not break Git users' brains (and my own brain still, if I'm being completely honest) I update my bookmarks (named commits, as far as I can tell) and push them to Git as branches. Then I just keep on working however I like or need to, and filter it out to upstream as needed. The fact that my working directory is tracked automatically unless I explicitly gitignore a thing worried me at first, but the key is making that squash commit what I want to filter out upstream. So all those design notes, sketches, test scripts and such that were useful to have and automatically version but probably aren't great to upstream? Just rm them in the squash commit and they're taken care of. I still technically have them on that branch if I need them again later.
No LFS support, no submodules, and no meaningful hooks are kind of rough, though. Hooks I can deal without except for at the Git boundary, but those other two...

Hubert Figuière
in reply to somecanuckchick • • •