Editing changes in patch format with Jujutsu
knifepoint.netEvery time I see examples of people getting JJ to do something it doesn't do natively, it turns out JJ has a good, well thought out interface for extension. It's a huge credit to the JJ devs that it's so naturally extensible.
jj looks very interesting and the hipster in me wants to adopt it, but my muscle memory is wired to Magit, I am not even an Emacs user, but I reach to it just for doing git stuff. So far none of the frontends for jj comes close.
I had that exact problem, but I've been working on a fork of another tool to try to improve the situation. It isn't a clone of magit, but it has a basic form of the same type of command interface, with a lot of the same benefits (easily seeing the tree of nested available commands and activating them with single letters, seeing what's going on with your repo live, WYSIWYG, and editing it with those commands). It's single-handedly allowed me to switch from git to jj without feeling lost
As someone that constantly reached for some sort of GUI/TUI tool to work with git repos, I can understand the hesitation. The normal git CLI is sufficiently opaque and my interest in it is sufficiently low that those tools were really the only way I could work done efficiently since they made the arcane ways of git a bit more evident.
The curious thing for me is that with jj I find that I don't ever really reach for a GUI/TUI anymore. At first I did try a GUI, but then I realized that the vast majority of what I want to get done conceptually didn't require it. So most of what I do now is just using the jj command line and very rarely do I reach for any sort of other tool.
The exceptions to the GUI/TUI use are resolving conflicts. For me being able to see the conflicts side by side and much more interactively choosing which I want is still more comfortable than simply hand-editing the file. And I also find I'm searching or chatting with an LLM anything I want to do something a little more advanced and less common, like rebasing all my feature branches on the most current mainline branch in one command... jj has a rich set of functions and pattern matching which I haven't (and may never) take the time to learn. But the majority of day to day interactions... just me and the command line. I would never say such a think using git by itself.
JJ works on top of git, so you can still use magit for hunk selection. I tried this approach and once I grokked JJ, I stopped needing to fuss over hunks and parts of hunks. Magit is good because git is clunky. As someone who said exactly the same thing as you for a year, I encourage you to try JJ with jj-mode.el.
As a heavy magit user prior to jj, I can attest that I've just felt much less need for it in the wake of jj. Things like JJ's split being interactive and a lot of the commands having really neat short forms has meant that for me, as attached as I was, I still found myself benefiting so much that I switched.
jjui is comparable, you should give it a good chance
Iirc there’s a Magit-like tool for jj that released somewhat recently, though I don’t know its name
Probably Majutsu, https://github.com/0WD0/majutsu
Fun name: seems like a reference to “Magit” both syntactically (being a portmanteau of “Magit” and “jujutsu”) and semantically (majutsu meaning “magic” in Japanese).
You can use git frontends for Jujutsu just fine, I use lazygit a few times a month out of habit, it all works well. I use jjui for the rest of the operations.