upvote
Seconding Jujutsu! I've been working to add Jujutsu support to basically every open-source tool and framework I use, including the agentic ones [0]. While it doesn't work for everyone, I've found it can really work for some people. (like myself)

It's absolutely great for keeping a bunch of exploratory changes alive, quick prototyping, etc. as I tend to do with basically every source I have on my machine. I don't have to think at all about the stuff I hate about git (babying the index, being careful to amend and etc. right the first time because undos are annoying, etc.)

Does not support LFS or submodules though.

[0]: https://github.com/LoganDark/get-shit-done/tree/jj-vcs

reply
submodules are cursed. LFS support looks to be coming soon in the form of jj ignoring LFS files and just allowing you to use git-lfs to manage them.
reply
Submodules are already that way as well.
reply
Mostly true, but the weird edge case I run into is workspaces. Since they seem to be independent of and not backward compatible with git worktrees, there is no fall back to git for submodules within a workspace.

We still use submodules in a number of places at work so it’s a bit of friction for me. Other than that, I’m rapidly becoming a jj convert.

reply
Try just copying the .git directory into the other workspaces. It's worked great for me when working in repos that have tooling that is coupled to git.
reply
Ahh, so workspaces don't currently support colocation, aka "put a .git directory in there". So that's what's up there. Interesting corner case! I know upstream is working on it.
reply
The repos i work in are hard-coupled to being in a git repo. So in order to make jj workspaces work for me, I've had to do the very hacky thing of literally copying the .git directory into the other workspaces.

It actually works quite well and has never caused me any issues. I tried symlinking but that does not work, git doesn't like the .git being a symlink.

reply
Submodules are cursed, but I like to clone my repos without colocation, but then sometimes find that I need to re-colocate in order to `git submodule update`.

Relatedly, when I use filesystem paths as remotes they need to be colocated or else it doesn't work, which is a little annoying!

reply