I tried it after using Emacs Magit for about six or seven years, and jujutsu is really easier to use than git and useful if one wants a tidy public history of changes (Linus Torvalds recommendations on that linked here). Plus it is fully compatible to git as backend - other contributors will not even note you are using it.
Noped out after having to click through to different pages while wading through gobs of text.
Edit: if anyone has a concise overview, I’d be interested.
There are video overviews on jujutsu but I admit that I am not motivated to look it up for you.
just use mercurial
The git compatibility is necessary for adoption and connected use.
jj does significantly reduce the work interface, but the git compatibility increases complexity again.
I tried it out a little bit a few days ago, and found it interesting. But given my git knowledge and tooling, I can’t reasonably switch. First, I would miss my TortoiseGit Log view (entrypoint to everything). But also, the connection between jj and git seems complex and potentially error prone.
As a fresh and independent tool I can definitely see how it’s much easier and better, especially for people not familiar with Git.
I would be curious to know in which specific cases people which have experience with using both think plain git is still better.
In my experience, when using jujutsu it can be necessary to use git commands to access repos via ssh, vpn and such. Also, jujutsu ignores git submodules, so one has to do submodule operations with git (but I think that culturally, using submodules most often is not such a good idea).
I use plain git when a project wants to use some tool that itself calls git commands that modify the repo state. You can use a colocated repo in this case (where jj and git commands both work) and nothing will break, but it can mess up your graph, creating duplicate commits which you then have to fix. I’ve seen this with Gentoo’s pkgdev for example.
Git blame and some other graph operations are also just faster right now which is why I sometimes use them in large repos over jj’s equivalent.
Well, the thing that this seeks to improve on is the crazy complexity of advanced git commands, which gave rise to seversl humorous mentions on XKCD and even satire msn pages like this:
https://git-man-page-generator.lokaltog.net/
… and if you think that you know most of git well, then, quick, what happens when you merge two branches of a repo which has several changed submodules in each branch? Is this deterministically resolved, and if so, how?
Oh my god this is amazing. Thanks for this.
what happens when you merge two branches of a repo which has several changed submodules in each branch?
I would assume a merge conflict if the submodules were changed in both branches from the base… but it’s probably not that simple, is it? I’ve never tested it.
For most operations it’s just quicker to get done for a simple commit. I’m already on the CLI/IDE and don’t need to find another window.
For anything remotely complex then I’ll open a tool.
I don’t have experience with Jujutsu, but I always have the same problem with these alternative frontends, which is that I’d still want to be proficient with the original. If you need to look up how to fix something or you want to help others in your team or you want to script something, then the language to speak is simply the Git CLI.
And I don’t feel like I even use the Git CLI enough where a different tool could be so much better that it’s worth learning both.
Obviously, your priorities may differ, but yeah, that’s just always the reason for me why I prefer the Git CLI, even if it were objectively more difficult to use.