My Experience with Jujutsu: A Pragmatic Review
Jujutsu is a version control system that pairs Git's proven storage backend with a rethought approach to code management workflows. I currently use it across all of my repositories—with the sole exception of freebsd-src, which relies on a prepare-commit-msg hook that Jujutsu does not yet support. There is no shortage of introductory material on Jujutsu elsewhere, so rather than rehashing the basics, I want to share what I have found to be its strengths, its rough edges, and how it holds up in real-world, day-to-day use.
The Good
Jujutsu's workflow is meaningfully more efficient than Git's. Operations that tend to be friction-heavy in Git—moving commits between branches, rewriting commit messages, and resolving merge conflicts—are noticeably smoother in Jujutsu. Compatibility with existing Git repositories is solid; in most cases I disable Git colocation entirely and work with a fully native Jujutsu repository.
For production use, I rely on Jujutsu for both LLVM development and my weekly reports at the FreeBSD Foundation. Across both of these workflows, it has been completely reliable.
The Bad
Jujutsu is in good shape overall, but a few pain points remain.
No hook support. While it is true that most Git hooks are unnecessary in Jujutsu's model, prepare-commit-msg is the exception I miss daily. The FreeBSD Project uses this hook to inject metadata into commit messages, and its absence is the sole reason freebsd-src is the one repository where I still fall back to Git. I am hopeful that hook support will land soon.
No --fixup equivalent. Git's git commit --fixup has no direct counterpart in Jujutsu. My current workaround is to manually prepend fixup! to the change description, but this means re-typing the target commit message each time. When working on a series of LLVM patches, this gets tedious quickly.
Manual bookmark management. Jujutsu does not advance bookmarks automatically, which makes pushing changes more verbose than it needs to be. Where Git requires a single git push, Jujutsu requires two commands: jj bookmark set -r <revset> foo followed by jj git push --bookmark foo. It is a small friction, but it adds up.
Immature ecosystem. Third-party tooling is still catching up. As a concrete example, Spaceship only gained Jujutsu prompt support last week, and only through a community-maintained plugin. There are other integration gaps as well, though the Jujutsu team is actively working toward full Git compatibility, and progress has been rapid.
Final Thoughts
Despite its rough edges, Jujutsu has become my default version control tool. The workflow improvements over Git are substantial enough that the remaining gaps feel like temporary inconveniences rather than fundamental limitations. If you spend any meaningful amount of time in Git, it is worth giving Jujutsu a serious look.