News for hackers. Stuff that matters.
Re:Jujutsu for Busy Devs by stouset on Monday July 21, 2025 @10:03PM (#44642555)
For anyone who's debating whether or not jj is worth learning, I just want to highlight something. Whenever it comes up on Hacker News, there are generally two camps of people: those who haven't given it a shot yet and those who evangelize it.

You will be hard-pressed to find someone who stuck with it for a week and decided to go back to git. You will not find a lot of people who say they switched but just stayed out of inertia. Of course both of these do happen—nothing is perfect—but they are by far the exception. From my own personal anecadata, I have seen a 100% conversion rate from everyone who gave it a serious try.

I encourage you to let today be the day that you decide to try it out. It is far less effort to make the switch than you probably think it is: I was productive the same day I switched and within a week I had no remaining situations where I needed to fall back to git commands. You will quickly be more productive and you will find yourself amazed at how you ever got by without it.

Re:Jujutsu for Busy Devs by bjackman on Monday July 21, 2025 @10:44PM (#44642755)
Counter point: I adopted it internally at Google (there's a backend for Piper, Google's monorepo Perforce thingy). I don't do my day-to-day work in the monorepo but I still jump in there once or twice a week. I adopted JJ because the existing frontend (Mercurial-based) is slow while JJ is fast.

It's nice, I really like it! I'll probably switch to it as my main VCS eventually. But it doesn't feel that important to me. Even though my main work involves quite a lot of annoying rebases which is where JJ really seems to shine.

I dunno I guess it's just that a) I've really mastered git and have a deeply-rooted workflow in it and b) despite my project involving annoying rebases, version control still isn't very high on the list of problems I have.

So yeah I'm basically bullish on JJ as a technology but I think movement from Git is inevitably gonna be slow and steady.

Re:Jujutsu for Busy Devs by stouset on Monday July 21, 2025 @11:24PM (#44642940)
I'm not entirely sure that "after using it I really like it and I'll switch eventually" is that much of a counterpoint :)

What really kept you from staying with it? It does seem like if your workflow involves a lot of nasty rebases you'd reap dividends from something like jj. I was also someone who'd mastered git (hell, I've written a git implementation) so I get having its patterns deeply ingrained.

Re:Jujutsu for Busy Devs by bjackman on Tuesday July 22, 2025 @12:22AM (#44643215)
Yeah I guess it confirms your point in a way too.

There's nothing keeping me from switching except the activation energy cost. Almost every aspect of working in my area (Linux kernel) is painful so I'm constantly investing in tooling and workflow stuff. So usually I just don't feel like investing EVEN MORE in the area of tooling that's probably least painful of all.

So yeah this is still basically a recommendation for people to try JJ!

Re:Jujutsu for Busy Devs by sethammons on Tuesday July 22, 2025 @05:05AM (#44644750)
Curious, I was under the impression that Google was all a monorepo, but your phrasing suggests that there are others. As my company is pushing for a monorepo, I'd love to know what causes someone at big G to not be in the monorepo. Thanks for any insights you can help me with!
Re:Jujutsu for Busy Devs by rfoo on Tuesday July 22, 2025 @05:42AM (#44644927)
Mainly open source stuff. Chromium, Android, etc.
Re:Jujutsu for Busy Devs by tex0 on Tuesday July 22, 2025 @02:06PM (#44650894)
https://opensource.google/projects

I think all of those are using git and many Gerrit as well.

Re:Jujutsu for Busy Devs by bjackman on Friday July 25, 2025 @02:02AM (#44680027)
Yeah as others mentioned it's really all about open source.

If your project is open source but still interacts with the main body of Google code in a significant way, you can still be in the monorepo and then mirror it to Git via Copybara (or you can work primarily in Git and then mirror to the monorepo via Copybara).

The most common case of that is libraries that get imported into server binaries. There's a whole section of the monorepo for open source code, with special rules and processes around it.

But a that has setup and friction costs so it's only worth it if you see a pretty significant upside.

For stuff that's pretty standalone there's no point. Classic cases are Chromium and Go. Then of course there's Google's various operating systems...

Re:Jujutsu for Busy Devs by shaftway on Tuesday July 22, 2025 @12:11PM (#44649119)
> I don't do my day-to-day work in the monorepo

Is this one of the repos that uses Gerrit? Does JJ play well with Gerrit?

IIRC Gerrit was super picky about amending commits and I was worried JJ's laissez faire attitude about creating git commits on demand wouldn't jive well.

Re:Jujutsu for Busy Devs by steveklabnik on Tuesday July 22, 2025 @12:37PM (#44649585)
> Does JJ play well with Gerrit?

There was a PR for a `jj gerrit` command, but at this point, it's not super needed. Here's the main bug tracking this https://github.com/jj-vcs/jj/issues/4387

Beyond that, the jj, gerrit, and git butler folks are working together on standardizing the change ID concept so they all work well together without extra tooling. That's going to take a long time though. Think "store the change ID in the commit rather than as a trailer", that kind of thing.

Re:Jujutsu for Busy Devs by bjackman on Friday July 25, 2025 @01:47AM (#44679945)
I haven't used JJ with the git backend so there may be something I'm missing here, but I don't see any reason they wouldn't play nicely. (I use Gerrit daily with pain git).

JJ does create commits without you explicitly asking but you do still have direct and fine grained control over it. It's not magic it's just that it's occasionally implicit. And squashing and splitting is nice and easy.

Re:Jujutsu for Busy Devs by 0x457 on Monday July 21, 2025 @10:44PM (#44642753)
Reason I like git is because I use like 2% of its features. I don't fall for propaganda that I need to use bisect and co. 99% of git commands I call are aliased to 3 characters, so it's dense terminology doesn't bother me.
Re:Jujutsu for Busy Devs by Valodim on Tuesday July 22, 2025 @01:19AM (#44643474)
There were (are?) people who say the same thing about svn
Re:Jujutsu for Busy Devs by 0x457 on Tuesday July 22, 2025 @12:57PM (#44649959)
Sure, but in this case, git being distributed is what sold it for me. I've switched off svn as soon as I've learned of git.
Re:Jujutsu for Busy Devs by globular-toast on Tuesday July 22, 2025 @02:45AM (#44643868)
I relish the day I get to use bisect. It's like, finally I get to use all this version data I've been collecting.

I don't understand why anyone would say you have to use it. It does a very specific thing, namely finding the source of a regression between two commits. If you need it you'll know.

Re:Jujutsu for Busy Devs by tcoff91 on Tuesday July 22, 2025 @02:53AM (#44643933)
It’s really nice to use the —-first-parent flag with bisect.
Re:Jujutsu for Busy Devs by globular-toast on Tuesday July 22, 2025 @04:11AM (#44644423)
Yeah this is good if you, for some reason, rebase then merge without fast forwarding. I never understood doing this. If I'm going to be ignoring those commits when bisecting then they are useless commits just using up disk space IMO.

Does it work well with a classic merge workflow? I haven't worked that way (without rebasing) for a long time.

Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @06:15AM (#44645141)
For me a merge is about grouping commits, when you have just a list of commits, the list can be very long.

That's also useful for bisecting, as you can first find the feature that is buggy and then find the commit that introduced it.

Re:Jujutsu for Busy Devs by globular-toast on Tuesday July 22, 2025 @06:42AM (#44645304)
The whole point of bisect is to make it quicker to find a point in a potentially long list of commits. Finding the feature first then bisecting within the branch is only going to make it slower, and requires you to manually restart the bisect.

I use the commit message to add ticket numbers to things to group commits.

Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @07:17AM (#44645500)
The commits surrounding them (logically) are probably also relevant, which you will find easier when you have grouped commits by features.

I prefer to have everything in a single source of truth (git), so everything is in commits. Your tickets are my merge commits.

Re:Jujutsu for Busy Devs by ykonstant on Tuesday July 22, 2025 @02:59AM (#44643975)
Bisect is a wonderful feature. Git is full of tedium and frustration, bisect is not part of that.
Re:Jujutsu for Busy Devs by falconertc on Tuesday July 22, 2025 @03:30AM (#44644165)
Bisect is a very cool feature that I used once over 5 years ago. The collection of git tools that I sue often is very small. I've found that the more experienced I got with git, the less I found myself in scenarios where I needed git's more complex tools.
Re:Jujutsu for Busy Devs by theLiminator on Tuesday July 22, 2025 @05:09AM (#44644772)
Hmm, bisect is definitely not one of those.
Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @06:13AM (#44645127)
Yes not using bisect, seams like you do all the work to record information, but then never use that information to save work?
Re:Jujutsu for Busy Devs by 0x457 on Tuesday July 22, 2025 @12:54PM (#44649913)
May I use how often and why you use bisect? I don't remember the last time I needed bisect. Well, I also don't work in linux kernel sized repos, so there is that.
Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @01:08PM (#44650143)
> May I use

Was that 'may I ask'?

Not that often, but not seldom. Its useful if you have a bug, that isn't obvious where it comes from, but easily testable. Then you just write a test and let git figure out where it comes from. The test doesn't need to be automatable. I also used it for firmware that needs to be flashed and the bug effected in an LED blinking incorrectly. I still saved a lot of time.

Re:Jujutsu for Busy Devs by 0x457 on Tuesday July 22, 2025 @04:44PM (#44652765)
> Was that 'may I ask'?

Yes, can't type sometimes.

I see. Maybe it's just what kinda of code and/or how I write it, usually pretty clear which abstraction isn't doing its thing. From there, it's either clear what is the bug, or git blame will reveal what changed.

This has a much higher chance of succeeding if you maintain strict boundaries and isolation which isn't always possible.

Re:Jujutsu for Busy Devs by 1718627440 on Wednesday July 23, 2025 @09:58AM (#44659303)
In addition to bugs this is also useful to pinpoint behaviour change.
Re:Jujutsu for Busy Devs by 0x457 on Tuesday July 22, 2025 @12:47PM (#44649758)
Sorry, that meant to be a joke. Bisect is cool and easy to use, I just never use it.
Re:Jujutsu for Busy Devs by anticodon on Tuesday July 22, 2025 @03:16AM (#44644069)
I used bisect once in my life but it was extremely helpful. Without it I'd spend weeks trying to find regression. With bisect I found and fixed it in under 1 hour.

It's a command that is needed rarely but there's no replacement for it in some situations.

Re:Jujutsu for Busy Devs by pclowes on Tuesday July 22, 2025 @02:41PM (#44651321)
I am confused by this, isn't Bisect just some git ergonomics with respect to flagging a checked out commit as a success failure and then checking out the next midway commit depending of if it was a success/failure to enable classic binary search?

It might be slightly more tedious but couldn't you just do the same thing manually and it would add just a couple minutes to the search and you would still save weeks? I like the ergonomics but only use it once every couple years.

Re:Jujutsu for Busy Devs by anticodon on Wednesday July 23, 2025 @03:32AM (#44656643)
Agree, probably could be done in any other VCS as well, including CVS. But only possible if you actually use VCS and use it properly.
Re:Jujutsu for Busy Devs by esafak on Monday July 21, 2025 @11:09PM (#44642879)
Do you use an IDE with git support but not jujitsu? I do (intellij), and I'm not sure how useful it would be.
Re:Jujutsu for Busy Devs by Disposal8433 on Tuesday July 22, 2025 @02:45AM (#44643869)
I've always hated the git CLI, and that's why I used Jetbrains tools or Sublime Merge.

Now that I switched to jj (colocated with a get repo, very useful), I went back to using the CLI again for jj and I don't miss the graphical tools.

Re:Jujutsu for Busy Devs by exclipy on Tuesday July 22, 2025 @06:30AM (#44645236)
But how do you split commits? Command line tools for splitting commits suck because they force you to look at one hunk at a time without getting the context from the rest of the change.
Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:24PM (#44649343)
jj uses a TUI for this that lets you navigate the entire set of changes.
Re:Jujutsu for Busy Devs by Zambyte on Wednesday July 23, 2025 @08:53AM (#44658662)
Not only is the default behavior of `jj split` exceptionally good and not susceptible to the issue they described, but you can easily specify an external tools like the meld gui to offload these operations to as a configuration option.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:29AM (#44646054)
Try jjui. It's an amazing TUI
Re:Jujutsu for Busy Devs by andrewaylett on Tuesday July 22, 2025 @12:18PM (#44649224)
I use colocated mode, so Git tools see a detached HEAD but otherwise continue to work. I don't normally use the IDE for creating commits or moving around the repo, but I'll still use it for conflict resolution and for exploring history.
Re:Jujutsu for Busy Devs by nephalegm on Monday July 21, 2025 @11:00PM (#44642844)
I started doing jujitsu a few months ago. The title of the article and this top comment had me bewildered until I remembered what jujitsu was in this space LOL
Re:Jujutsu for Busy Devs by forrestthewoods on Tuesday July 22, 2025 @01:06AM (#44643417)
> You will be hard-pressed to find someone who stuck with it for a week and decided to go back to git.

I’ve tried jj on three occasions and I always get confused by something and just bounce. It hasn’t clicked for me.

I’ve only tried it solo hobby projects. For which git is perfectly tolerable.

I have many many many complaints about git. But jj doesn’t move the needle for me.

Reading this post I am extremely annoyed. Almost every single section is “but more on that later”. It’s still far more complicated than it needs to be.

I also really really really hate the jj log rendering. The colors are a sea of barf. Bolding the leading character that represent uniqueness is stupid and adds noise. The username being second is dumb, I almost never care about that. And the bright neon green (empty)(no description set) is such bad spew. Kinda nit picky, but blech.

Jujutsu suffers the same thing Git suffers. Every god damn blog post that tries to explain how simple it is just my eyes gloss over and think “this is too complex for me to care”.

Re:Jujutsu for Busy Devs by viraptor on Tuesday July 22, 2025 @01:52AM (#44643604)
> I also really really really hate the jj log rendering

You can fully change/customise it. Sounds like you just don't like the default.

Re:Jujutsu for Busy Devs by forrestthewoods on Tuesday July 22, 2025 @02:03AM (#44643652)
Some people love to tinker and fine tune their tools to behave exactly like they want. I am not one of those people. I hate it. It does not spark my joy.

Most people use the default for most of their tools. It’s why Google pays Apple over $20 billion per year to be the default search engine. Because defaults matter.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @03:42AM (#44644240)
FWIW, I am also one of those people who does not want to fine tune their tools. I want my tools to work well out of the box.

> I’ve only tried it solo hobby projects.

If I can surmise a bit, this is probably why it's never felt "worth it". I'm guessing that for a hobby project you don't really care that much about crafting small, easily-digestible PRs or keeping a clean history. `git commit -a` every now and then is good enough, and that's entirely reasonable.

For team projects, jj becomes a much bigger deal. I find it invaluable for splitting up a day's worth of work into small, parallel, easily-reviewable changes. While working on one feature I might run across a dozen other things that should be fixed, improved, or otherwise changed. Bundling them into one giant PR is bad practice and causes reviews to take much longer.

Carving those up into single-purpose PRs that can be reviewed in seconds and tested independently is super helpful on a project with multiple teammates. But that's not something that really matters or that most people care to take the time do to in personal projects. Hell, it's something a lot of people punt on a lot in git due to the extra burden of doing so.

Re:Jujutsu for Busy Devs by forrestthewoods on Tuesday July 22, 2025 @11:43AM (#44648610)
I use Sapling at $DayJob. It’s pretty good and I largely like it. jj seems much less friendly for most operations. Although jj’s merge conflict stuff is appealing (in theory).
Re:Jujutsu for Busy Devs by viraptor on Tuesday July 22, 2025 @06:24AM (#44645198)
But you can't make a default that everyone will like. The best overall interface will have someone hating it. If you want to always use defaults, you're basically guaranteeing that you'll hate some genuinely great software one day.
Re:Jujutsu for Busy Devs by forrestthewoods on Tuesday July 22, 2025 @01:50PM (#44650676)
I can’t spend a dozen hours fine tuning every single piece of software I come across because it might maybe possibly be great if I do.

If I used Git as part of a large team I’d perhaps spend more time with jj. But for solo projects it adds even more complexity to Git rather than reduce. So I don’t feel strongly inclined to spend that time.

Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:48PM (#44654272)
> I also really really really hate the jj log rendering. The colors are a sea of barf. Bolding the leading character that represent uniqueness is stupid and adds noise. The username being second is dumb, I almost never care about that. And the bright neon green (empty)(no description set) is such bad spew. Kinda nit picky, but blech.

Must be a preference thing. Showing me the unique characters is awesome. Git sucks after getting used to it.

Re:Jujutsu for Busy Devs by forrestthewoods on Wednesday July 23, 2025 @04:38PM (#44663759)
> Showing me the unique characters is awesome. Git sucks after getting used to it.

I regularly jump around commit hashes. However 99.9% of the time a commit hash is printed I am not going to go to it. So it’s pure noise 99.9% of the time. And the absolute most it can save me when it isn’t noise is a few keystrokes. Not a good design imho.

Re:Jujutsu for Busy Devs by lawn on Tuesday July 22, 2025 @01:34AM (#44643537)
Eh, not really.

I've used it and I like it but I couldn't find a good plugin for Neovim so I reverted back to my old more well-supported workflow.

Re:Jujutsu for Busy Devs by resonious on Tuesday July 22, 2025 @02:25AM (#44643763)
I used jj for several months, then eventually went back to git.

The biggest killer was performance. jj operations took several seconds for me, whereas git is instantaneous no matter how big the project. Maybe this is fixed now.

But also honestly I felt like there was a bit more mental burden to using jj. When I switched back to git, it was like a weight off my shoulders. Maybe that's just due to the decade of constant use though.

Re:Jujutsu for Busy Devs by npinsker on Tuesday July 22, 2025 @02:30AM (#44643791)
I used to have the same problem (on Windows only, not Mac) but it seems to have been fixed as of a month or two ago.
Re:Jujutsu for Busy Devs by Filligree on Thursday July 24, 2025 @06:18AM (#44669019)
There's a noticeable delay when doing operations on Nixpkgs (to the tune of a quarter-second), but that's a huge repository.

Everything else is instant.

Re:Jujutsu for Busy Devs by raylu on Friday July 25, 2025 @03:06PM (#44687022)
I ran into this at first on a large-ish repo. watchman fixed it: https://jj-vcs.github.io/jj/latest/config/#filesystem-monito...
Re:Jujutsu for Busy Devs by esperent on Tuesday July 22, 2025 @02:36AM (#44643815)
> there are generally two camps of people: those who haven't given it a shot yet and those who evangelize it.

This sounds exactly like something a person evangelizing it would say.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:25AM (#44646013)
The relevant question is, why would a stranger take time out of their life to evangelize an open source VCS tool?

What other tools do people do that for? Not many. I see the most similar language and behaviour with regards to uv, which similarly revolutionized/simplified python tooling.

Likewise mise, which makes it similarly frictionless to install and manage tooling and their versions across projects and system-wide.

The evangelizing for these things comes because these tools start to heal the trauma that came from immense friction. We want others to be similarly liberated.

For those who say "I don't feel friction/trauma with git, legacy Python tooling etc", I can only say that you're living in Plato's cave/the matrix/in a cult/with Stockholm syndrome and just don't know what you're missing out on.

Re:Jujutsu for Busy Devs by Levitz on Tuesday July 22, 2025 @11:36AM (#44648483)
>The relevant question is, why would a stranger take time out of their life to evangelize an open source VCS tool?

To make a point? To prove that "they are right"? People do this constantly, tools, libraries, languages... All the time really.

Re:Jujutsu for Busy Devs by nchmy on Wednesday July 23, 2025 @08:56AM (#44658696)
You do you, friend
Re:Jujutsu for Busy Devs by petesergeant on Tuesday July 22, 2025 @09:14AM (#44646461)
> What other tools do people do that for?

Text editors, programming languages, shells, VCSs, nix/guix…

Re:Jujutsu for Busy Devs by riwsky on Tuesday July 22, 2025 @08:48AM (#44646221)
“Trauma” is a bit much.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:56AM (#44646301)
Definitely applies more to uv than jj, but jj is still immensely liberating. To the extent that people are willing to evangelize it to no gain of their own.
Re:Jujutsu for Busy Devs by globular-toast on Tuesday July 22, 2025 @02:53AM (#44643932)
I tried it and didn't switch. The funny thing is I immediately recognised that it was forcing me to use git in basically the same way I use it anyway. I have more than 15 years experience with git at this point. I never had to do the "delete repo and reclone" thing after the first year. In other words, I actually understand git, so I don't really need Jujutsu.

I also already use very good tooling for git, namely Magit. IMO Magit is a much better git frontend than Jujutsu. It guides you down the right path but doesn't take away any of the power of git at all. It's quite remarkable.

Maybe I should recommend jj to some of my colleagues, though. Trouble is I'm already on the hook for helping them with git, but I don't have the experience with jj.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @03:13AM (#44644052)
> In other words, I actually understand git, so I don't really need Jujutsu.

This is kind of a poor take. By all means use what you prefer! But understanding git and knowing the "right" way to use it doesn't make jj obsolete.

I am (or was) a git expert. I’ve used it since pre-GitHub. I’ve written a git implementation. I know (or knew) the interface inside and out. I haven’t deleted and re-cloned a repo in as long as I can remember.

jj is still leagues better. Things I want to do and know how to do in git are dramatically faster and easier. They require less mental overhead. They’re less error prone. And I get superpowers with workflows that are super useful but wildly impractical in git.

This isn’t even really opinion at this point. Any task you can give me in git, I can with almost near certainty give you a shorter and more elegant alternative with jj that is an intuitive and obvious interaction with its core primitives.

A month ago our company split off a division. They needed to take a specific repo and sanitize out all of the parts that aren’t relevant to the new company, going back to the beginning of its commit history. You can do this with git. It wouldn’t be fun. I’d have to spend a lot of time reading the filter-branch manpage, and people have written countless wrappers of varying quality that try and make it a bit more ergonomic.

It took me like ten minutes to come up with:

    declare -rA paths=(
        …
    )

    # for every commit that touched a file
    # we want to excise
    for id in "$(
        jj log \
            --revisions '..' \
            --no-graph \
            --template 'change_id ++ "\n"' \
            "${paths[@]}"
    )"; do
        # restore those paths’ contents from the
        # the empty root commit; this happens 
        # entirely in-memory without having to check
        # out each revision into the working copy to
        # do file operations so it is FAST
        jj restore \
            --ignore-immutable \
            --from 'root()' \
            --to $id \
            "${paths[@]}"
    done

    # remove any commits that are now empty 
    jj abandon \
        --ignore-immutable \
        --revisions 'empty() ~ root()'
Three dumb, simple commands that I already use every day: list some commits, copy file contents from one commit into another, and remove some commits from the tree.

Not only was this more or less obvious to do, but it was exceedingly fast to perform on a pretty highly-trafficked repo due to not having to thrash around in the working directory with checkouts.

> Magit is a much better git frontend than Jujutsu. It guides you down the right path but doesn't take away any of the power of git at all.

jj is more powerful than git. It’s not simply a dumbed-down alternative. By having a more carefully chosen set of primitives that compose better, you gain a lot of abilities that are technically possible with git but never used in practice due to the complexity.

And you can still do all the normal git things too.

Re:Jujutsu for Busy Devs by latexr on Tuesday July 22, 2025 @05:01AM (#44644728)
> This is kind of a poor take.

Why? They’re sharing what they prefer in response to someone claiming that everyone who tries the other thing comes to prefer that. They’re offering a reply in context and not in the slightest saying everyone should follow what they do.

> By all means use what you prefer!

That’s exactly what they’re doing.

> But understanding git and knowing the "right" way to use it doesn't make jj obsolete.

Which they haven’t claimed at all.

You seem to be objecting to an argument which hasn’t been made.

Re:Jujutsu for Busy Devs by ben0x539 on Tuesday July 22, 2025 @07:37AM (#44645633)
"In other words, I actually understand git, so I don't really need Jujutsu." sounds like jj is for people who don't understand git. That's naturally a contentious statement. It implies that jj doesn't offer anything to experts, which seems easy to contradict given how many people with git expertise will talk about getting value from jj. At worst, it could be taken as a bad faith kinda put-down, like, suggesting at jj users are worse at their job than people who make do with git. I think it's totally fair to take push back against how that was worded.
Re:Jujutsu for Busy Devs by latexr on Tuesday July 22, 2025 @07:55AM (#44645764)
Alright, that’s fair, I can indeed see that reading.
Re:Jujutsu for Busy Devs by globular-toast on Wednesday July 23, 2025 @06:38AM (#44657650)
Thanks for the thoughtful reply. I can see how in fact jj could be considered an adjacent tool to Magit. Similarly Magit does not "dumb down" git like other git GUIs. As the Magit manual puts it, it's actually a fully fledged git porcelain. I guess jj is the same.

So I think I would revise my comment above and say I don't need jj because I've already got a toolkit that does a similar thing. I haven't raw dogged the git CLI in a decade.

However if I ever run into a problem like yours and my tools aren't cutting it I'll definitely keep jj in mind so thanks for showing me!

Re:Jujutsu for Busy Devs by weinzierl on Tuesday July 22, 2025 @03:00AM (#44643984)
"You will be hard-pressed to find someone who stuck with it for a week and decided to go back to git. "

Reporting in. Doesn't mean I will end up with jj eventually, but so far I always went back to git after a while.

For me it is the staging area and the workflow it allows. Most people hate it and love jj because it does away with it. That is just not me. I don't see the staging area as a hack that was necessary to overcome some superfluous technical limitations but as a workflow tool.

Could I change my ways? Sure. jj just did not provide enough benefit for me so far to do it, but we will see. I am still open to give jj another try some day.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @03:31AM (#44644173)
The staging area is a hack in that it is its own unique concept that doesn't work with any of the rest of git's tooling without needing special, inconsistent flags for commands to target it (git stash, git reset, etc.).

I use a staging area with jj! I would surmise most jj users do too. It's just a real, honest-to-god commit in the repo instead of a special snowflake.

    # do some work
    …
    
    # prepare a new, empty commit if you don't already have one
    jj new --no-edit --insert-before @

    # move changes into it; repeat ad nauseam
    jj squash --interactive
Since it's just a commit, all your tools work with it out of the box. And you don't need to stash changes when you jump around between branches.
Re:Jujutsu for Busy Devs by weinzierl on Tuesday July 22, 2025 @04:50AM (#44644649)
Thanks for the clear and concise summary. It is helpful for some workflows.

For me the staging area being a snowflake is the feature. It is a special temporary singleton commit if you will, but I can rely on its temporary and singleton nature. As that it should have a different interface from regular commits.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @05:17AM (#44644801)
Yeah, I regularly have MANY "staging commits" at the same time in jj, in which I just throw ideas in that I don't want to pollute or yet know how to integrate with the other ideas. I use squash, split, interactive split, rebase etc to move lines and changes around etc...

When I eventually figure it all out, I can tidy it all up into completely coherent, discrete, sequential commits that make it look like I knew exactly what I was doing from the start, then push to remote.

Conversely git staging around stashing was always an absolute, terrifying mystery to me. I could never remember what was stored where, and would consequently end up losing work, repeating work, and, most of all, just making massive commits that make no sense.

I was sold on jj from essentially the moment I found it, but I remain routinely amazed at how much more powerful (yet simple!) it is than I realized.

Re:Jujutsu for Busy Devs by weinzierl on Tuesday July 22, 2025 @05:47AM (#44644962)
Hmm, never saw it that way. Maybe I just need a different perspective on commits. Thanks for your comment, that was insightful.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @06:57AM (#44645394)
Glad to be helpful!

In my mind, in some sense, every commit can simultaneously be a stash, staging area, part of a branch and more. Because you can easily create endless branches on top of, beside, before, as merges of, etc.. any commit. And it all automatically rebases, conflicts often auto-resolve (or at least don't block you immediately).

I really don't know how to best describe it. But there's a reason that many people are quite literally evangelizing it in every post that comes up - who does this for git, or anything?

Just give it a try. And, even better, use it via jjui

Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @06:11AM (#44645112)
You can use commits instead of the stash the same way in git. Isn't this just a way of using, why do you need jj for that?

You now you can give stashs a commit message?

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @06:49AM (#44645335)
The commit message is the least useful part of all of this.

It is just SO EASY to move, merge, split, rebase, squash etc commits, and even just individual lines and sections from within commits (via split).

And it's all even easier via jjui

I don't think there's anything any of us can really say to convince those of you who are constitutionally skeptical about it (or even allergic to it) why you should try it... If all of our fawning and evangelizing isn't enough to get you to at least give it a fair shake, then there isn't much else to be said.

Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @07:13AM (#44645470)
It's just that I'm fine and also the features seam to amount only to a change in usage not in actual new features. In this case if you want to use commits instead of a stash, then you can do that just fine in git.

It's also that I want my commit hashes to be stable (because I cross-reference them) and it sounds like they wouldn't in jj, because it is kind of rebase-y?

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @07:50AM (#44645721)
It's the new workflows that it enables via making existing features vastly more accessible (though there are some new features, such as merge conflicts not being a showstopper).

The only thing left for me to say to folks like you who think git is just fine (or even great) is that you're in Plato's Cave. https://en.m.wikipedia.org/wiki/Allegory_of_the_cave

You just don't know what you're missing out on. But if you give it a fair shake, you'll see the light quite quickly.

Take care!

Re:Jujutsu for Busy Devs by Filligree on Tuesday July 22, 2025 @08:00AM (#44645804)
Commits in jj have both a commit has (which is unstable) and a commit id (which is not).

Generally you use the id, not the hash.

And yes, everything you can do with jj you can also do with git. It’s just that most people don’t, because it’s much harder with git, involves rebases and changing hashes, and so on.

Re:Jujutsu for Busy Devs by notmywalrus on Tuesday July 22, 2025 @08:27AM (#44646032)
I would call `jj absorb` a new feature (new if coming from git, I believe the idea was taken from hg). It moves diffs into the closest ancestor that touched those files/lines. Very useful for addressing reviews, then just `jj absorb` and watch them get squashed into the correct location.

This gets even better with octopus merges (known in the jj community as "megamerges"): open up 5 branches at the same time, address minor tweaks in any number of them, and `jj absorb` the content into the right parent branch.

Re:Jujutsu for Busy Devs by 1718627440 on Tuesday July 22, 2025 @08:39AM (#44646139)
I do use git absorb, but its true, you have to install it.

I have never tried git absorb across merges, no clue if that works.

Re:Jujutsu for Busy Devs by Filligree on Thursday July 24, 2025 @06:15AM (#44669002)
It does not, or at least not very well. Merges can't be rebased without replaying conflict resolution; since Git lacks a first-class concept of conflicts, that becomes a manual process.

Moreover, jj should be able (I haven't explicitly tried this) to autogenerate the conflict resolution in the `jj absorb` case, since it knows what the final post-merge state should be.

Re:Jujutsu for Busy Devs by turboponyy on Tuesday July 22, 2025 @05:50AM (#44644979)
Can you edit commits by adding on only parts of your "staging" area?

Because that's my workflow. I produce a few focused and semantically coherent commits that I'd like to apply to the codebase, where each keeps the codebase in a working state. I might be working on more than one thing at once, but I know which commit each set of changes should "live in."

An append-only log of commits is decidedly not something I want. Is jj amenable to this?

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @06:51AM (#44645354)
It's not quite clear to me what you're talking about, but I think the Megamerge workflow might be something you'd be interested in.

https://v5.chriskrycho.com/journal/jujutsu-megamerges-and-jj...

https://ofcr.se/jujutsu-merge-workflow

Re:Jujutsu for Busy Devs by riwsky on Tuesday July 22, 2025 @08:47AM (#44646210)
Extremely amenable—my workflow shifted to match your description after I started using jj, because it makes that easier. Conceptually, it’s not “edit commits by adding on only parts of your staging area”, but “edit commits by only moving or splitting parts from another commit”, and since the working copy is a commit, it is handled by that general case instead of being it’s own thing.
Re:Jujutsu for Busy Devs by joshka on Tuesday July 22, 2025 @05:43PM (#44653336)
jj squash allows you to move changes from a revision to another. Default is your working copy, but there's nothing preventing you from working on several semantic commits and moving changes from your working copy to those commits as you want.

    jj squash --into -r <revset>
Where <revset> is @-, a change id, or perhaps a bookmark name if you want to give a semantic name to your changes.
Re:Jujutsu for Busy Devs by paradox460 on Wednesday July 23, 2025 @10:08PM (#44666134)
Yes. You can use jj split to cleave changes out into their own commit, and JJ squash to move changes into another commit
Re:Jujutsu for Busy Devs by drcongo on Tuesday July 22, 2025 @04:21AM (#44644496)
I found it hard to stick to due to pre-existing workflows too. I find I'm often switching between branches in git, and our CI depends on pushing to specific branches - I constantly found myself a bit lost with jj about which underlying branch I was on and where that would get pushed to. I did Steve's tutorial and came out of that really liking the concepts, but still unable to map it all in my head when it came to pushing my work to a remote.
Re:Jujutsu for Busy Devs by christophilus on Tuesday July 22, 2025 @09:02AM (#44646354)
I’m similar.

On the other hand, tools like jj seem great for people who spend a lot of time refining and perfecting every commit so that their repo history is pristine. I’m not one of those people. My git hygiene is atrocious. I have git halitosis. But functionally, it’s fine. Everything is in the git history and is recoverable. That’s about all I care about.

Also, I don’t have the capacity to juggle a lot in my mind. If someone does, then sure, jj may facilitate that. But I don’t need such facilitation.

Re:Jujutsu for Busy Devs by andrewaylett on Tuesday July 22, 2025 @12:10PM (#44649087)
Jujutsu might look like it's for people who want to perfect their commits and juggle a lot in their minds -- but in my case (and anecdotally in others' too) it's because it lets us easily do things which would require that mindset/ability with plain Git.

In Git, I need to keep in mind all the different things I'm working on and which branch goes where, or I wind up with a monster PR with a chain of commits that mix everything up enough that it's even more effort to pull the PR apart to be reviewable. Ask my colleagues how I know that :P.

With jj, I don't feel that I'm putting more effort into organising my changes -- quite the opposite -- not least because there's very little book-keeping involved in parking something that's in progress or coming back to it later. And when I come to ask for a review, I've got separate changes I can push as smaller PRs, and I can easily pull the right sets of changes out to make each one reviewable.

I think the biggest improvement is that if I just need to look at something else for a couple of minutes then come back, I can `jj new main` to switch and not bring my changes with me then I can `jj edit <oldref>` to get my working copy back into the state it was in before, with all my old changes.

I'm pretty sure none of my colleagues have started using it (although they're free to) but I can confidently say (because I've asked) that they've noticed the difference in my work and prefer the more focused changes.

Re:Jujutsu for Busy Devs by Zambyte on Wednesday July 23, 2025 @08:45AM (#44658603)
> Everything is in the git history and is recoverable.

How do you recover from accidentally deleting a branch that you never checked out? Assume it was deleted on known remotes also.

Re:Jujutsu for Busy Devs by xdfgh1112 on Tuesday July 22, 2025 @03:11AM (#44644040)
I tried it and I went back to git. I know how git works though. I don't put much stock into your 'anecdata'
Re:Jujutsu for Busy Devs by xelxebar on Tuesday July 22, 2025 @03:38AM (#44644213)
It's certainly a solid improvement in the space of VCS UI, but beware that jj has some current limitations which might prohibit switching, especially for the git power users.

Lack of gitattributes support precludes git-crypt and git-lfs usage or anything that needs filters; line ending settings will get ignored, making Windows interop a little less smooth; etc.

Also note that auxillary tooling, such as git-annex and git-bug, becomes second class, i.e. no oplog integration and they might mess up your log with internal-use commits and heads.

Re:Jujutsu for Busy Devs by steveklabnik on Tuesday July 22, 2025 @03:40AM (#44644225)
> line ending settings will get ignored, making Windows interop a little less smooth; etc.

This one got fixed just a few days ago! https://github.com/jj-vcs/jj/pull/6728

Re:Jujutsu for Busy Devs by Ayesh on Tuesday July 22, 2025 @04:12AM (#44644430)
I use gitattributes quite a lot (lfs, various diff engines, and export-ignore). Thanks for the heads-up, jj looked very interesting but I'm not going to give up gitattrivutes.
Re:Jujutsu for Busy Devs by dilap on Tuesday July 22, 2025 @09:43AM (#44646807)
They are slowly working on it:

https://github.com/jj-vcs/jj/issues/53

(I am interested because I want to try, but need git-lfs, which needs gitattributes.)

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @03:44AM (#44644253)
These are all really excellent points, and well worth calling out.
Re:Jujutsu for Busy Devs by IshKebab on Tuesday July 22, 2025 @06:17AM (#44645151)
> line ending settings will get ignored

Arguably a good thing - git's autocrlf setting causes way more issues than it solves. I highly recommend setting it to "input" (basically bans CRLF).

Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @07:45AM (#44645683)
Oh thanks for the heads up! I use jj but it would be a disaster if I committed something using it and git-crypt didn't work, and the secrets were all plaintext.
Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:30PM (#44654195)
> line ending settings will get ignored, making Windows interop a little less smooth;

I hit this - I develop in Windows.

I still prefer jj and won't go back to pure git :-)

Re:Jujutsu for Busy Devs by sngz on Tuesday July 22, 2025 @03:41AM (#44644232)
I always go back to using mercurial for personal projects. Better than both
Re:Jujutsu for Busy Devs by windward on Tuesday July 22, 2025 @03:53AM (#44644315)
'Doesn't use Mercurial' was top of my requirements list last time I left a job that did use it.
Re:Jujutsu for Busy Devs by arunix on Tuesday July 22, 2025 @08:28AM (#44646045)
Can you say more about how it's better than both?
Re:Jujutsu for Busy Devs by sngz on Thursday July 24, 2025 @01:53AM (#44667397)
easy to understand and use for everyone. you no longer need to spend tons of time teaching junior devs how to use git. By default mercurial also doesn't let you change history. There's no staging area or indexing before the commit. The gui and commands make total sense to the layman.

Git is definitely more powerful but causes more damage than good and wastes more time in most workplaces who are just looking for some simple version control and branching/merging features.

Re:Jujutsu for Busy Devs by WXLCKNO on Tuesday July 22, 2025 @10:01AM (#44647019)
Not typing hg is the best part of my day
Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @03:52AM (#44644309)
> For anyone who's debating whether or not jj is worth learning

I don't have any productivity issues with git, like... at all. It's not like I spend an hour running git commands every day.

I can totally imagine that some people spend their day manipulating repos with git, and jj is better for them. But that's not my case, and git is already everywhere.

To me it sounds like telling me: "You HAVE TO move to bim, the better vim. It's very similar to vim, but different enough that you have to learn new stuff. But you will be infinitely more productive: when you start bim, you're already in edit mode, so you don't have to type i! And the auto-complete in Julia is objectively a lot better in bim!".

Sure, but typing "i" a few times more is really not a concern for me, and I don't use Julia. But if it's better for you, please enjoy bim!

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @04:15AM (#44644453)
For a lot of people, making small and tightly-focused branches that are easy to review and merge is very important.

This is where jj excels. Especially if you find yourself often doing large chunks of work between convenient checkpoints, but you still want to create commits as if this work was all done in tiny and discrete chunks. It's also very helpful if you're the kind of developer who makes lots of unrelated changes in a single coding session, and wants all those changes to be in parallel branches that can be reviewed and merged independently. I greatly prefer working with (and being) the kind of developer that puts out a large number of very tiny and easy to review PRs, eve. jj makes doing that a breeze.

There are lots of people for whom these things aren't important. I will be slightly judgmental and say I don't really enjoy working with them. They tend to write very large PRs that are difficult and time-consuming to review. And it's a frequent source of frustration for everyone when 95% of the work is uncontroversial but a merge is being held up because of legitimate concerns with an unrelated 5%. This is even worse when there's later work that builds upon it that can't happen until a merge (or that needs to be constantly rebased as the PR is improved).

Re:Jujutsu for Busy Devs by beng-nl on Tuesday July 22, 2025 @04:39AM (#44644596)
Wow, that does sound like a big improvement. My git commits are, when not forced to be otherwise, very sloppy, even though I’d prefer them to be neatly self contained. But as you imply, there is friction to making these in git, while making lots of unrelated changes in a single coding session.

As an example of another ‘unnecessary’ switch, Pip with venvs was also completely solving all my Python dependency problems. I just needed to copy paste a few lines from my README to create and populate the venv, and remember to run pip and Python from that venv. And run pip freeze after package installs or upgrades. No problem. But switching to uv was a huge life improvement. No more copy pasting (‘uv sync’ does everything and even that isn’t needed) nor remembering extra steps and everything is fast so I’m never waiting and forgetting what I was going to do.

I could’ve been GP talking about pip but still I would be missing out.

I still see people clinging to cvs because it works for them (netbsd why?), which I respect but don’t understand/believe.

Fish don’t know what water is.

So.. I’m gonna give jj a go and trust life will be better again.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:05AM (#44645849)
You'll love jj, as you've already been able to see the the light with new tooling like uv.

Jj is to git what uv is to other python tooling.

Check out jjui as well, which makes jj even better. https://github.com/idursun/jjui

https://mise.jdx.dev is equally as revelatory as jj and uv

Re:Jujutsu for Busy Devs by exographicskip on Tuesday July 22, 2025 @11:31AM (#44648391)
mise is awesome. Put it off far too long after a bad first experience. Now I'll never go back to asdf
Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:58PM (#44649970)
Mise really is awesome. We are coming into a new golden era of tooling and I want everyone to experience these things.

IMO this is all being driven by Rust. jj, mise, ripgrep, fd, bat, eza, delta… all of the best of breed tools these days seem to be coming out of that ecosystem.

Re:Jujutsu for Busy Devs by paradox460 on Wednesday July 23, 2025 @03:09PM (#44662820)
Mise just grew support for GitHub, gitlab, and arbitrary http as sources for tools. The ubi integration previously covered much of this, but had blind spots for things that were "bigger" than just a single binary
Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @07:37AM (#44645637)
I'm fairly confident you're going to love it. I'd read a few tutorials, but what finally clicked for me was just asking Claude what commands to use, and then explaining why.

Jujutsu finally made me understand git, after ten years of git use. It removes enough of the magic that I now know exactly what the commands do, and how the data model works.

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @04:45AM (#44644624)
I tend to `git add -p` and create different commits that I put on different branches if they are unrelated.

Doesn't feel painful in git, but I'd like to see an example doing that with jj. Maybe I'll try.

Re:Jujutsu for Busy Devs by endtime on Tuesday July 22, 2025 @08:51AM (#44646244)
jj lets you do this with changes that are related.
Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @12:45PM (#44649723)
I can do it with changes that are related. But I understand that jj makes it trivial, which is not a life-changer but it's nice. Does that sound about right?
Re:Jujutsu for Busy Devs by sethammons on Tuesday July 22, 2025 @04:50AM (#44644655)
Nice commits can really tell a development story that makes reviews easier. That said, I want all teams to squash merge their feature into master after tests pass. One commit at the end, and one commit to remove in case of an issue affecting customers related to the release.

A very, very large problem at five out of six companies I have worked at is casual code improvement and refactoring. Devs would say, "we will address that minor and unrelated thing in a separate PR" - one that never comes. At one company, a single PR could address unrelated fixes and it was encouraged to "take out the trash" on the code. Unrelated metrics added, logging improvement, or code simplified, or test robustness improved, etc. That company had vastly better code. Easier to read. Easier to maintain. Easier to observe. And easier to test.

Re:Jujutsu for Busy Devs by jon-wood on Tuesday July 22, 2025 @06:20AM (#44645171)
I'm honestly baffled by this. You're a proponent of dealing with chores as you encounter them during development rather than putting them off til later (great! I love this!), but also when that PR lands you want it all squashed down into a single commit, which presumably will have a message like "Implemented Important Feature, also did a bunch of unrelated work".

That sort of workflow is ideal for making sure you've got a set of isolated commits each looking at a single subject so that when someone is reading through the history later they can quickly see where something was introduced or why, and jj is perfect for doing that because it makes crafting those commits so much easier.

Re:Jujutsu for Busy Devs by normie3000 on Tuesday July 22, 2025 @04:56AM (#44644694)
> That company had vastly better code.

It's very frustrating that what IMO is the inferior approach was producing better results in those teams!

Re:Jujutsu for Busy Devs by RUnconcerned on Tuesday July 22, 2025 @06:29AM (#44645227)
It's because what you see as the inferior approach involves less effort and friction for the developers.

When you are told to separate general code improvements to another PR, or worse, to not do them, and create a Jira task for them so they can be adequately prioritized, it just saps your will to do so. You just won't do any improvements that fall outside the scope of the feature, because even just thinking about the hoops you have to jump through to get work done is mentally draining.

Re:Jujutsu for Busy Devs by jon-wood on Tuesday July 22, 2025 @07:36AM (#44645629)
I don't know how but we need to get developers out of thinking of PRs as the smallest possible change unit. This is literally what commits are for, you do a chunk of work, and you have a commit which describes that chunk of work. If you've got cleanly isolated commits then when you come to reviewing the PR (or changeset as I'd much rather see them called) and someone questions the wisdom of including that particular change you can either modify the commit to satisfy the questions, or just pull it out of the changeset into it's own for later review without blocking merge of the wider feature.

Coincidentally jj makes this process much easier than it would be with git, it will very happily let you shift commits around between different branches, edit commits in place and cleanly rebase those edits onto subsequent commits, or split a messy commit into two commits that makes sense.

Re:Jujutsu for Busy Devs by skydhash on Tuesday July 22, 2025 @08:15AM (#44645913)
The UI may be cluncky in the PR page, but I just use rebase, edit the commits, and force push the whole branch. The PR is the unit from the business perspective, not from my computer environment. I don’t mind creating two PRs for stacked changes, then once the first is merged, rebase from the main branch and publish the second one. Comments can be used to explain the link.
Re:Jujutsu for Busy Devs by alfiedotwtf on Tuesday July 22, 2025 @12:21PM (#44649288)
I think the confusion and angst comes from when someone has multiple unrelated commits, submits it as a single PR, and is then REVIEWED intermingled all at the same time!

If people instead reviewed commit by commit until the PR HEAD, the code itself would tell a story, but best of all - the story would then be obvious!

Re:Jujutsu for Busy Devs by normie3000 on Tuesday July 22, 2025 @07:46AM (#44645691)
> It's because what you see as the inferior approach involves less effort and friction for the developers.

I can see that.

From the other side of the PR though, it involves significantly _more_ work from a reviewer.

The "red tape" of separating commits and opening separate PRs should be removed by the team.

The effort of separating commits and opening separate PRs is minimal once you're comfortable with the tools.

I encourage colleagues to be comfortable with these workflows, because a reviewer's time is generally no less valuable than their's.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:08AM (#44645866)
Jj makes this effort vastly easier. Nearly frictionless.
Re:Jujutsu for Busy Devs by normie3000 on Tuesday July 22, 2025 @08:45AM (#44646188)
Great. As I said elsewhere on this story, I'll suggest jj to colleagues who struggle with git.
Re:Jujutsu for Busy Devs by globnomulous on Friday July 25, 2025 @12:37PM (#44685113)
Yeah, I don't get it. Maybe I'm just confused but the git mental model has never struck me as complex or confusing.

jujutsu also seems like a poor fit for large monorepos repos (particularly ones that use git hooks). The expense of certain git operations increases quadratically with the size of the repo. A repo doesn't need to be terribly large for `git status` to require 5-6 seconds. (God bless the man who added scalar and sparse checkout to git.)

The absolute last thing I want is a tool that's doing more with git -- creating commits, branches, checking things out, rebasing, or doing anything that requires a git-status check.

Re:Jujutsu for Busy Devs by UK-Al05 on Tuesday July 22, 2025 @10:44AM (#44647546)
Reviewers don't want to navigate 33 tiny PRS either.

The best way of getting changes is through is simply sitting down and talking with the reviewer. Most of these small PRS, splitting things, creating elaborate stacking systems are just technology hacks around a social/process problem. I've seen people make more of a mess trying to split pr's up where they are so fine grained its silly and actually had dependencies on commits they didn't realise they had which reviewers then had to resolve. Literally anything to avoid talking and working with people. People are trying to turn a tightly collaborative process and turn it into isolated single work units with no collaboration that just need a rubber stamp.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @11:40AM (#44648545)
> Reviewers don't want to navigate 33 tiny PRS either.

As opposed to one 33-change PR? Yes, absolutely yes they do.

I probably don’t have time to review a giant PR like that. If I do, I feel guilty asking for fixed in one part when 31 of the changes are great. Why are we holding up all these improvements for one or two small concerns? We can merge and just fix those later. Except that never happens.

I probably have time to review eight one-liners. My other coworker has time for five. After lunch I can quickly check out another seven. Over the course of the day all 33 get reviewed and merged as time allows.

Re:Jujutsu for Busy Devs by normie3000 on Wednesday July 23, 2025 @04:37AM (#44656969)
> As opposed to one 33-change PR? Yes, absolutely yes they do.

100% this.

With remote teams spread across time zones, mega-PRs become even more problematic.

Re:Jujutsu for Busy Devs by globnomulous on Friday July 25, 2025 @11:21AM (#44684164)
> one-liners

One commit for a single line? I can't imagine developing software this way. Fixing bugs? Sure. Altering this or that in a well-established, mature codebase? Probably. For features, I don't see how it's possible.

Re:Jujutsu for Busy Devs by ceedan on Tuesday July 22, 2025 @07:32AM (#44645603)
The approach didn't drive quality. 1 team cared about their code and felt empowered to improve it, the other didn't.
Re:Jujutsu for Busy Devs by RUnconcerned on Tuesday July 22, 2025 @12:01PM (#44648928)
The majority of people care about the quality of their work when they are starting off. Not caring is a learned behavior. When you repeatedly get reprimanded for it, you learn not to care as a way of protecting your mental health from taking even more damage.
Re:Jujutsu for Busy Devs by baq on Tuesday July 22, 2025 @06:34AM (#44645263)
paperwork and red tape results in lower velocity. sometimes this is what you want.

note this is also true in software engineering.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @11:37AM (#44648507)
What if you could have the best of both worlds?

Where the developers at that other company could “take out the trash” amidst one PR, jj makes it trivial to carve off each of those fixes into their own separate PR. It’s no more work than making them separate commits.

People don’t do this in git because it’s a hassle. So you either get cleanup that never comes because each branch needs to know in advance what work it’s going to do or you get omnibus PRs that do twenty different things.

There’s a better way, and it lets you have clean history and developers can fix things they run into along the way.

Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:17PM (#44654106)
> That said, I want all teams to squash merge their feature into master after tests pass. One commit at the end, and one commit to remove in case of an issue affecting customers related to the release.

This is the one thing I always point to when I say "Mercurial is better" (and now, jj).

Why can't we have our cake and eat it? Mercurial lets you have lots of individual commits, but they're hidden, and you'll see only the squashed commit. Why do we have to lose all those individual commits to get that squashed commit? The answer: You don't need to.

Re:Jujutsu for Busy Devs by keyserj on Tuesday July 22, 2025 @11:34PM (#44655496)
> I want all teams to squash merge their feature into master after tests pass. One commit at the end, and one commit to remove in case of an issue affecting customers related to the release.

Hmm what's the issue with the GitHub default of merging PRs, where there's a merge commit which individually pulls in the PR's commits? You can revert the merge PR as a whole, or the PR commits individually. E.g. with this[1] merge commit, you can `git revert 0a98f570 -m 1` (the merge commit) or `git revert b30950fc` (an individual commit from the PR).

[1] https://github.com/amelioro/ameliorate/commit/0a98f570f63ffd...

Re:Jujutsu for Busy Devs by normie3000 on Tuesday July 22, 2025 @04:54AM (#44644678)
> ...making small and tightly-focused branches that are easy to review and merge is very important.

> This is where jj excels. Especially if you find yourself often doing large chunks of work between convenient checkpoints, but you still want to create commits as if this work was all done in tiny and discrete chunks.

This is exactly how I like to use git. Sounds like I should be recommending jj to colleagues who struggle with this approach.

Re:Jujutsu for Busy Devs by seivan on Tuesday July 22, 2025 @05:09AM (#44644768)
The way I understand it, its for those who can't help but to fix B while working on A and want to make sure that they are two different PRs? The way I do it is after B is done, I just create a new branch and point B to A in the PR. A is pointing to dev/master/upstream. Does JJ make this workflow more convenient?
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:15AM (#44645912)
You'd probably like reading about the megamerge workflow. I and others have linked some articles in a few comments here already.
Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @11:56AM (#44648808)
Yep! And it makes it convenient even when you need to make changes or add new commits onto A. B is constantly stitched up to remain a child of A and incorporate its fixes.

It also makes it simple and easy to split B and A apart such that both their parents are `main` if they’re unrelated.

You can also go hog-wild. I was working on a big refactor recently. I made independent changes A, B, C, and D (each one to three commits). I then wanted to work on code that assumed all of these commits were available, so I made a merge commit E that combined them. I then made changes F that depended on that refactor, so was a child of E.

Managing this was simple. If I needed to make updates or tweaks to A-D, E and F were updated to incorporate them automatically. `jj absorb` even meant that doing these types of changes was almost zero work: I could make a bunch of changes and the tool would know in which parent commit they belonged.

None of this was merged in yet. When I was ready, PRs went out for A-D. When they each merged into `main`, E became a no-op and was discarded. F became its own PR. This is something I never would have done in git because having multiple threads of unmerged code is a colossal hassle.

Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @07:35AM (#44645623)
Can you go into some detail on how you do this? I use jj but it sounds like you make a change and then split it up into more changes after the fact, which I'm not familiar with yet.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:14AM (#44645903)
I have a bad habit, even still, of just working in one monster commit.

It took me a few months to realize that I could use jj split to move specific files to a different commit. And then I'd sometimes squash them into related commits, rebase to move them around etc...

But I just discovered interactive split, which lets you move specific lines and sections from different files in a commit to a different commit. So I've been using that a lot more recently to organize the changes more thematically.

Ultimately I should try to become more diligent with adding a new commit any time I start doing something different - it's dead simple to do and even less friction to organize later - but I suppose that I'm not that inclined because the interactive split makes it so easy to do it all later that I just stay in the flow of my monster commits.

Everything is possible with jj.

just started making much more use of jj split to move split

Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @08:30AM (#44646056)
Interactive split?! Very interesting, I'll look into that, thanks!

EDIT: I love it.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @10:06AM (#44647074)
Haha, fantastic.

Also, if you didn't discover yet, you can use the arrow keys to unfold the different files and sections. Then select what you need, split the rest to new commit.

As you know, even when just using the most basic functionality (new changes, merges, rebases) of jj, it's amazing. But then you just keep discovering other features and workflows - none of which require any incantations - that make it that much better. And I'm sure I'm still only scratching the surface of its possibilities.

And, as I keep saying everywhere, jjui just takes the whole experience to another level.

Re:Jujutsu for Busy Devs by andrewaylett on Tuesday July 22, 2025 @11:43AM (#44648595)
If you end up with a commit that's a number of small fix-ups to files edited in earlier commits, `jj absorb` will push changes up to whichever (mutable) commit last modified the file they're in.
Re:Jujutsu for Busy Devs by nchmy on Wednesday July 23, 2025 @09:00AM (#44658740)
Thanks. I've been trying it recently but it never seems to do anything, so I just do squashes. Any idea why this might be?
Re:Jujutsu for Busy Devs by Filligree on Tuesday July 22, 2025 @01:15PM (#44650248)
One really nice trick you can do is:

- Create multiple topic branches, one for each thing you're working on.

- Now you probably want to work on item A while having B and C all available, so make a single merge commit (jj new a b c) to build on top of.

- Create further commits on top of that, while you're working.

- When you're cleaning up (ideally often), use squash --to or rebase --after to move those commits back the branch they belong on. This does not invalidate the merge commit; you will, effectively, have multiple branches checked out at once.

EDIT: This is apparently called the 'megamerge workflow'.

Re:Jujutsu for Busy Devs by icorbrey on Tuesday July 22, 2025 @03:33PM (#44651978)
Megamerges are awesome, but what really makes them magical is when you start using `jj absorb`, which automatically splits and squashes your commit down to the nearest unambiguous commits and leaves anything that doesn't have an obvious place to live
Re:Jujutsu for Busy Devs by nchmy on Wednesday July 23, 2025 @08:59AM (#44658736)
I've been trying absorb recently and have found it rarely does anything and I just resort to squashes. Any idea what might be going on?
Re:Jujutsu for Busy Devs by Filligree on Thursday July 24, 2025 @11:34AM (#44671984)
Absorb:

- Will not rewrite an immutable commit, of course. (Though you can tell it to, and for my personal repositories I sometimes actually set immutable() = root().)

- Will not do anything to diffs if it's uncertain where they should go, either because that file wasn't edited in a previous mutable commit, or because it was edited in multiple sibling/cousin commits. The latter is likely to happen with mega-merges.

You can use --into to restrict the set of target commits, if you already know what feature branch you're updating.

Re:Jujutsu for Busy Devs by nchmy on Wednesday July 23, 2025 @08:58AM (#44658724)
Yeah, I was already aware of megamerge. I use it.

But I'm still not disciplined enough to use it and other proper workflows consistently, especially when new features/topics spring up while working on another one. I just start working on it at the same time, and jj makes it simple to split it into its own commit and branch later.

Re:Jujutsu for Busy Devs by gdbsjjdn on Tuesday July 22, 2025 @08:29AM (#44646052)
I follow this methodology but I just ... use git? The hard part of making multiple small PRs is usually wrangling someone to actually review them, or following whatever process management has decided is necessary.
Re:Jujutsu for Busy Devs by endtime on Tuesday July 22, 2025 @08:50AM (#44646233)
The hard part I always found without jj (and Fig before it, when I was at Google) was managing a DAG of small changes.

What's your git workflow for a change that depends on two other in flight changes? (More generally, of course, this can occur in an arbitrary part of one's change graph - which is usually not too deep, but at least in my experience, occasionally is.)

Having good tooling for this unlocked workflows I didn't know I was missing, and switching back to git when leaving Google felt like losing a limb.

Re:Jujutsu for Busy Devs by sesm on Tuesday July 22, 2025 @10:02AM (#44647036)
> It's also very helpful if you're the kind of developer who makes lots of unrelated changes in a single coding session, and wants all those changes to be in parallel branches that can be reviewed and merged independently.

Git has worktrees for that. If a parallel change is done in a separate worktree, it can be built and tested independently, which, I guess, is important for kernel developers, who are the initial target audience for git.

Re:Jujutsu for Busy Devs by mpyne on Tuesday July 22, 2025 @11:01AM (#44647825)
I think `git add -p` and its friends are another thing I'd point to for this.

I've never really struggled too hard to get git commits into different branches for review, but if you've put unrelated changes into the same working dir, you'll want `git add -p` to sort them out into multiple commits.

Note there are corresponding `-p` flags for things like git-restore and git-reset as well.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @11:30AM (#44648368)
Let’s say you’ve checked out a new branch and done a bunch of work over the course of the last two hours.

You’ve added a new feature. In doing that, you’ve also fixed four unrelated bugs, clarified the documentation for a method you needed to use, and rewritten another function to be more performant.

You could push this all as six commits on one branch. PR reviewers will now have to figure out what parts are related to what, or read each commit one-by-one. If someone wants changes to one of these commits, your entire branch is held up.

Or you could split these six different commits out to each be directly on `main` and make a PR for each of them. They can be tested in CI, reviewed, and merged in isolation.

The latter is far better. You can do it in git, but it’s not exactly fun. It is trivial in jj.

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @12:43PM (#44649682)
This is the kind of example that I find insightful. I know I can do it with git and it's not hard. It's not fun, but it's not hard. So I will disagree with anyone who says that it's impossible with git.

But it is great to know that it is trivial in jj. That's a reason to try :-).

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @01:02PM (#44650033)
It’s definitely not impossible! It might not even be hard these days (git has accrued a million flags and features), but it is definitely friction. And it might not seem like much, but it adds up. And all of that friction stops you from even considering things that might genuinely be hard.

Everything feeling like it’s a slightly uphill battle isn’t something you always notice until it’s suddenly gone.

Re:Jujutsu for Busy Devs by mpyne on Tuesday July 22, 2025 @01:39PM (#44650552)
> You could push this all as six commits on one branch.

No, I'd probably put them all as individual branches to be reviewed, assuming they're truly independent changes. As long as they don't actually conflict it's not very hard to do this in git.

But this is kind of what I mean when I say that git fits my needs, because I wouldn't come across 4 unrelated tasks like this in the course of implementing a single commit's worth of features, unless I was having the world's biggest attack of ADD.

And if these things did need to get done to properly implement the feature to our team's quality standards, it would be appropriate to be included in that feature's PR as well.

I'm sure it's a nice tool, especially for those who work in domains where it takes a long time to land your commits into the main branch of development, but a lot of this sounds like solutions to problems that we don't all have.

Re:Jujutsu for Busy Devs by steveklabnik on Tuesday July 22, 2025 @11:04AM (#44647888)
jj tends to use -i for 'interactive' to do what you do with -p in most git commands.

It is in fact a great tool, jj makes doing this even easier.

Re:Jujutsu for Busy Devs by mpyne on Tuesday July 22, 2025 @11:17AM (#44648104)
I'm sure it's great but I don't have the problems with git that others apparently do, so as to make it worth switching to a whole new mental mode of source code management.

At least uv solved real problems I was having with Python package management, but for my own personal usage git is 99% aligned with what I need.

Re:Jujutsu for Busy Devs by steveklabnik on Tuesday July 22, 2025 @11:34AM (#44648439)
I didn’t have problems with git either.

jj just makes all of the stuff I liked to do with git easier and faster, and lets me do some things you can’t do with git.

But you should use the tools you want to use.

Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:14PM (#44654094)
Just FYI: The person you're responding to wrote a very popular tutorial on jj. He's been using git since the early days, and as he puts it:

> Now I am not one of those "the git CLI is too complex and git is too hard to learn" people, but I do acknowledge that puts me in the minority. But let's reframe that: if we can make something more powerful and easier? Sign me up!

Re:Jujutsu for Busy Devs by mpyne on Wednesday July 23, 2025 @10:59AM (#44659962)
> Just FYI: The person you're responding to wrote a very popular tutorial on jj.

That's nice.

I know of him better from his Rust work, but he explained himself well enough in his own comment that he probably doesn't need your assistance to reiterate a point he made very effectively on his own.

Also, he's not the only one who's used git since the early days.

Re:Jujutsu for Busy Devs by steveklabnik on Monday July 28, 2025 @01:07PM (#44712853)
I have no clue why you’re downvoted, I had upvoted you by the way.
Re:Jujutsu for Busy Devs by mpyne on Monday July 28, 2025 @03:30PM (#44714567)
Thanks. I was pretty snarky, in fairness, though I felt it was only matching the energy of that type of white knighting (which a decade ago I feel pretty sure would have gotten you downvoted into oblivion even on HN, but maybe I'm not hip with the times anymore! lol)
Re:Jujutsu for Busy Devs by steveklabnik on Tuesday July 22, 2025 @11:03AM (#44647861)
jj also has worktrees, though they're called workspaces.

They're useful, but they're not really what your parent is talking about, your parent is talking about a workflow where you realize you've want to break up your work after the fact, rather than setting out to do it that way from the start.

Re:Jujutsu for Busy Devs by therealpygon on Thursday July 24, 2025 @11:01AM (#44671551)
To be clear, I haven’t used jj so please correct any misundersrandings. I hear you and agree that smaller PRs are definitely easier to understand. On the flip side, it sounds like jj just trades large PRs for lots and lots of smaller, independent PRs that are seemingly unrelated despite all belonging to the same change? I wouldn’t see that as better because, on face, it would sound like far more opportunity for changes to leak out of an actual change-set. Or is the suggestion that the advantage is that each one of those discrete changes carries a comment? Because if developers are lazy, which clearly it is laziness to not use stash for unrelated changes, why wouldn’t I expect every comment to eventually be “{feature}” for everything? So now we need to put more policies in place about how devs should spend more time commenting every one-line code change they make that became an individual PR? And I’m sure jj is going to provide me with a handy feature for then re-grouping all these changes together…back into the original big PR that would have existed in the first place? That seems like a circuitous route to arrive at the same place, but with added risk of unintentional, or worse, missing integration of parts of features that appeared to be independent changes? Ive never found it difficult when I make an unrelated change to just stash that change and add it to its own branch related to a bug ticket at the end of my day. Jj wouldn’t replace 90% of those processes so it sounds like a new way to avoid typing a few commands, by typing more commands more frequently and shifting the workload from a single large relevant change to many, many small changes, all of which were still part of the same set of changes.

None of that sounds like a positive to me, so I’d rather appreciate some evangelism to enlighten me and correct my misjudgments/misunderstandings which I fully admit are likely. :-)

Re:Jujutsu for Busy Devs by martinvonz on Thursday July 24, 2025 @04:48PM (#44675923)
I don't know why you think jj makes you produce many little commits. Are you thinking about the automatic snapshotting of the working copy? That amends (replaces) your previous commit, so you won't end up with a long chain of commits.

It's probably easiest to understand by just trying it. It can be used with regular Git repos.

Re:Jujutsu for Busy Devs by IshKebab on Tuesday July 22, 2025 @06:15AM (#44645142)
It's totally possible to have no issues with Git, e.g. if you are only using it for small or slow moving repos.

There definitely are lots of big issues with Git though. I dunno how many jj solves but it doesn't seem unreasonable to suggest people move to a better system.

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @07:25AM (#44645558)
And I totally agree! And if jj works better for you, please use it!

My point is just that I am yet to find a convincing example that would suggest that jj would improve my workflow. If people find it hard to stash a change, I don't tell them that they shouldn't get their shit together and not use jj. But I don't find it hard to stash a change, so why do I feel like jj evangelists try to convince me that something is wrong with me?

Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @07:43AM (#44645675)
This is the age-old issue of how you describe something that has enough small improvements to result in one big one. There's no single thing that someone can say to convince you to switch to jj, because there's no single thing that you can do with jj that you can't with git. It just has a thousand little improvements left and right, that make it a joy to use.

That just results in less friction, and in you doing things with it that you couldn't be bothered to before. Yes, I can switch branches in git by stashing my changes, and then I can try to figure out the five-levels-deep stash stack, but with jj I just switch between branches without finishing working on them, because it just works and is easy.

Yes, with git you can technically have five branches open at the same time, and stash work to switch between them to work on one thing or the other, but it's so hard and finicky that you end up never doing it in reality. Or, you can say "I never need that", but is it that you never need it, or that your tools make it so hard that you just subconsciously never do it? For me, it was the latter, as now I'm switching between branches ALL THE TIME, just because it's easy.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:18AM (#44645938)
I've started, in this thread, likening it to Plato's Cave - people who are just using git are just seeing/using a blurry facsimile/projection of actual reality/possibilities. It's not a perfect analogy (jj is, I suppose, the projection, and people are chained in the cave), but it makes the point that there could be so much more.

The matrix or people happily in a cult would be similar analogies. Perhaps even Stockholm syndrome...

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @09:22AM (#44646560)
This is exactly why it feels like evangelism: "people who don't love jj haven't seen the light/are uninformed/live in the dark age/must be in a cult".

That kind of rhetoric makes me want to say "don't tell me I'm stupid if you are the one finding it hard to switch between git branches".

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:12PM (#44649144)
It is evangelism. Unabashedly. I think the Plato’s cave analogy is honestly apt.

Git was fine. I used git for ages. I loved its underlying model, and I think it’s brilliant. But it has a lot of sharp edges and a lot of tasks that are painful or frustrating, and people either opt to restrict themselves to a tiny subset to avoid the pain or they carefully curate a workflow that mostly does the job over the course of years.

Suddenly within a week of trying a new tool you just… don’t carry any of that any more.

It’s like going from GOTOs to structured programming with encapsulated functions. People made many useful programs with GOTO. Some people were more principled than others, but we all got by. But it turns out that functions and loops are a way better mental model for control flow than GOTO. Nobody had to switch and there were plenty of holdouts. But eventually the benefits were impossible to ignore.

People like Dijkstra evangelized structured programming because they “saw the light”.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @10:03AM (#44647044)
That's fine. Carry on
Re:Jujutsu for Busy Devs by KingMob on Wednesday July 23, 2025 @02:03AM (#44656114)
You have a point, but it's more like it's difficult to articulate, than a cult.

I think of jj as the ultimate refinement of git. It's not revolutionary, in the sense that there's no must-have feature, but it's a distinct evolutionary upgrade that's just way more pleasant than git.

It's telling that most hard-core git gurus are lukewarm on jj at first, but for everyone else, jj makes it way easier to do guru-level version control.

Just my $.02, anyway.

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @09:23AM (#44646574)
This is one of the few comments here that make me feel like I should just try jj. Thank you, this is useful :-).
Re:Jujutsu for Busy Devs by stavros on Tuesday July 22, 2025 @09:27AM (#44646618)
You're welcome! I've honestly really started doing stuff that git conditioned me into think I just didn't need, just because it made them hard to do.
Re:Jujutsu for Busy Devs by Zambyte on Tuesday July 22, 2025 @09:57AM (#44646979)
> because there's no single thing that you can do with jj that you can't with git.

- jj undo, jj op restore, and jj --at-op to reset or view the repo at a previous state

- create multiple directories (workspaces) backed by a single repository at different commits

These are the only things I can think of off the top of my head that you can do with jj that you can't do with git.

Re:Jujutsu for Busy Devs by IshKebab on Tuesday July 22, 2025 @10:49AM (#44647627)
> create multiple directories (workspaces) backed by a single repository at different commits

This is `git worktree`.

They don't work with submodules but submodules are a disaster that should be avoided anyway so probably no big loss there.

Re:Jujutsu for Busy Devs by Zambyte on Tuesday July 22, 2025 @11:54AM (#44648775)
Ah, I was not familiar with that feature in git. In that case, I'll swap out jj workspaces for sparse checkouts :-)
Re:Jujutsu for Busy Devs by Zambyte on Tuesday July 22, 2025 @03:04PM (#44651608)
Apparently git sparse-checkout exists! I'm going to stop guessing features that git doesn't have now.
Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @10:02AM (#44647032)
> to reset or view the repo at a previous state

What about `git reflog`?

Re:Jujutsu for Busy Devs by Zambyte on Tuesday July 22, 2025 @10:06AM (#44647082)
That lets you see previously checked out revisions. Jujutsu keeps track of all previous repo state. In git, you can pull a new remote branch, delete that branch, and push the deletion. If you want to get that branch back, git reflog will only save you if you checked out that commit. If you didn't, you're SOL. Jujutsu will let you undo the delete operation, restore the repo to a state where the branch existed, or view the repo at a state where the branch existed, and create a new branch at the same revision that the old branch was before it was deleted.
Re:Jujutsu for Busy Devs by 0points on Tuesday July 22, 2025 @12:10PM (#44649091)
That might be cool, actually.

FWIW, I cheated on a previous job for months by working 10% or so, then faking git commit data to spread it out across the week before sending a PR.

Thank you "git commit --amend --no-edit --date xxx"

Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @10:39AM (#44647472)
This is interesting, thanks!
Re:Jujutsu for Busy Devs by Moomoomoo309 on Tuesday July 22, 2025 @01:17PM (#44650274)
What if you commit secrets to the repo by accident?
Re:Jujutsu for Busy Devs by Zambyte on Tuesday July 22, 2025 @02:30PM (#44651174)
Jujutsu repos only exists locally. There are no Jujutsu remotes, only git remotes. Repo properties unique to Jujutsu (repo history, stable revision IDs) are not pushed to git remotes.
Re:Jujutsu for Busy Devs by gkbrk on Tuesday July 22, 2025 @01:18PM (#44650295)
Just edit it out and don't push it to upstream?
Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:29PM (#44654186)
> jj undo

Yeah - the other day I did a fetch, and then decided I didn't want to fetch. I simply ran "jj undo" to undo the fetch.

Re:Jujutsu for Busy Devs by KingMob on Wednesday July 23, 2025 @01:55AM (#44656081)
I like to phrase it as "jj enables everyone to be the git guru".

The git gurus responding how they can do X/Y/Z don't quite realize that git is still cumbersome enough that most people never bother to reach their level of proficiency.

Whereas jj is simpler, better-designed, and more powerful, so it's easier to start doing more advanced VC.

I also think everyone's underestimated how much universal undo enables exploration.

Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:23PM (#44654139)
Ha! Good example!

Once I started using jj, I realized how poor/annoying git's stash is. You don't need a concept called stash in jj. You have some work done and want to stash it? Just leave it alone as a leaf node (or split your commit into a leaf node). Then branch off the parent to work on whatever you want.

And with jj, my "stashed" node is version controlled in itself. I can make changes to it, undo it, all while still being stashed. (Maybe you can do this in git - I don't know).

Other niceties of jj:

Why do I need to come up with a commit message only when committing? Why couple the two? With jj, you can just decide to work on X, write your commit message "Adding cat photos to Easter Egg", and then work on the feature. Or you can just start working, and in the middle of it all, add the commit message, and continue working. You can change the commit message at any point.

Why do I need to fix merge conflicts immediately? Just the other day in jj, I made a change, which resulted in a merge conflict in several nodes. Whatever - I just branched off a clean node and worked on what I needed to. Only the following day did I go and fix the merge conflict.

Why can I only merge two branches? And why do I need to think of from/to when merging? A merge is basically creating a new node that is the child of multiple nodes. It's symmetric - there's no from/to. And you should be able to specify 10 parents if you want to.

Re:Jujutsu for Busy Devs by whatagreatboy on Tuesday July 22, 2025 @06:48AM (#44645332)
How much time do you spend resolving merge conflicts between multiple team members?
Re:Jujutsu for Busy Devs by palata on Tuesday July 22, 2025 @07:26AM (#44645568)
In good approximation, I would say around 0 minute a week. I guess it could happen that it takes a few minutes, but I don't remember last time it happened.
Re:Jujutsu for Busy Devs by beanjuiceII on Tuesday July 22, 2025 @08:31AM (#44646071)
yea i am really confused by all these issues people are saying they have myself..stashing merging etc...and what is crazy is we migrated large teams of programmers who's only experience with version control before git was microsoft TFS and and everyone is easily and happily chugging along. Now most of these people use gui tooling for managing git, but so what everyone gets it done with no issues or complaints with many projects big and small. we even have non-devs using it. I get jj might have some life improvements for some niche groups of people but i really have to wonder if they are the type of people who purposely make their life more complex
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:20AM (#44645966)
Forget between team members - it's an issue just for my own local dev purposes, when I'm working on multiple changes/PRs at the same time and want to test them all out before they get merged to main in the origin.
Re:Jujutsu for Busy Devs by voidfunc on Tuesday July 22, 2025 @08:41AM (#44646161)
I use like five commands total in Git and the rest is driven through my IDE which handles everything else. People who tell me Git is hard or recommend alternate tools are living in a different world.
Re:Jujutsu for Busy Devs by DrBazza on Tuesday July 22, 2025 @08:52AM (#44646254)
>I don't have any productivity issues with git, like... at all. It's not like I spend an hour running git commands every day.

Agreed. Having used SCCS, CVS, Subversion, VSS, Perforce, Clearcase, Accurev (the weirdest of the lot), Mercurial and Git, I'll move when the market decides what has critical mass and my job needs it.

jj feels a bit like learning a Dvorak keyboard and then being in an office of qwerty. Jobs want git, my colleagues know git, I'll be asked a question about... git. Using git has been the lowest version control churn in my brain for a decade, which is nice.

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:00PM (#44648909)
I still know git. I work at entirely git shops. Nobody has ever come to me with a problem I’ve caused, but people have come to me to ask how to switch.

I am also the guy who gets asked with doing crazy git things when the need comes up. I have another post here where a tricky and slow filter-branch that our company needed to do on a repo was a simple and obvious three-liner in jj.

Re:Jujutsu for Busy Devs by edanm on Tuesday July 22, 2025 @09:30AM (#44646657)
I mean, Git was a massive improvement over those other systems though. It was absolutely worth learning, and worth pushing companies to adopt. (Same with Mercurial, obviously.)
Re:Jujutsu for Busy Devs by BeetleB on Tuesday July 22, 2025 @07:20PM (#44654121)
> Jobs want git, my colleagues know git

And outside of a few scenarios, they can use git, you can use jj, and everyone will be happy.

I push to my team's Git repo using jj all the time.

Re:Jujutsu for Busy Devs by benoau on Tuesday July 22, 2025 @10:53AM (#44647705)
> You HAVE TO move to bim, the better vim. It's very similar to vim, but different enough that you have to learn new stuff

Wit the added bonus that "bim" won't remain popular enough to sustain its development for long, so "bim" users have to switch to the fork "bbim" in 2 years, that won't remain popular enough to sustain its development for long...

Re:Jujutsu for Busy Devs by kyawzazaw on Tuesday July 22, 2025 @11:51AM (#44648733)
I feel like it's cat vs bat.

bat just is more useful even if you didn't have issues with cat

Re:Jujutsu for Busy Devs by dcre on Tuesday July 22, 2025 @12:53PM (#44649875)
This is also true of vim. You have to move to Helix. It's very similar to vim, but different enough that you have to learn new stuff.
Re:Jujutsu for Busy Devs by nswest23 on Tuesday July 22, 2025 @06:53PM (#44653938)
How do you know? Maybe jj would be a productivity improvement for you. Maybe it wouldn't. There's only one way to find out and it seems like a pretty painless thing to try. If this is your attitude toward new things do you still pump water out of a well when you're thirsty?
Re:Jujutsu for Busy Devs by palata on Wednesday July 23, 2025 @10:01AM (#44659345)
Actually I find this tutorial to make a really good point in introducing it Jujutsu [1] without implying that "if you don't know it you don't know the Truth/haven't seen the light/are a peasant".

The author starts by saying that they actually have no issue with the git CLI, which is exactly my case.

I started trying jujutsu and until now, I can describe the feeling as an ergonomic keyboard: I am fine with any keyboard, really, it's not that some keyboards are "hard to use". Nobody would (should?) say "with a cheap keyboard, you can't type fast enough to be efficient, but with this ergonomic keyboard, you will be faster". But one may find that an ergonomic keyboard is more comfortable for them, or that it sounds a bit better or feel a bit better.

There is no real need to change keyboard if you like yours. It doesn't mean that it's impossible to find another keyboard that would be more pleasant to use.

JJ may be that (for me, but again I'm just starting): it seems equivalent to git CLI (as in, it's not a heavy GUI or a VScode plugin: it's really a CLI) and it feels like it may be more ergonomic.

And at the very least, it's fun to try.

[1]: https://steveklabnik.github.io/jujutsu-tutorial/

Re:Jujutsu for Busy Devs by pjmlp on Tuesday July 22, 2025 @04:25AM (#44644514)
If I had an option, I would still be using something like Subversion or Mercurial.

As it is, I go with whatever our clients require of us, and that isn't jj.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @04:53AM (#44644672)
You're misunderstanding. You can use it with any git repo without anyone knowing.
Re:Jujutsu for Busy Devs by pjmlp on Tuesday July 22, 2025 @06:49AM (#44645333)
Usually I am pretty much against snowflake approaches in project delivery, setup should be the same for everyone, as people change roles across projects routinely.
Re:Jujutsu for Busy Devs by nothrabannosir on Tuesday July 22, 2025 @07:15AM (#44645489)
The delivery is the repo and its commits. Recommending a setup is one thing, but enforcing particular tools has about the same level of appreciation among any senior dev I know as enforcing a keyboard model.
Re:Jujutsu for Busy Devs by pjmlp on Tuesday July 22, 2025 @08:31AM (#44646068)
Those senior devs don't work on the kind of industry that I work on, enterprise consulting with high attrition of team members, and possible offshore teams.

This kind of industry work needs factory line mindset, there aren't special knobs for someone on the sidelines working on the software rolling carpet, which granted isn't for everyone.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:34AM (#44646094)
Can you choose your own IDE? if so, you should be able to choose how you manage git locally, such as with jj.
Re:Jujutsu for Busy Devs by pjmlp on Tuesday July 22, 2025 @08:47AM (#44646207)
Nope, you get the IT validated image as per project delivery assignment, in many cases not even local, for security reasons it is a cloud VM.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:59AM (#44646330)
Ok, so I'm just having trouble seeing how your situation is at all relevant to this discussion about the merits of jj. You simply have to use what you're assigned.
Re:Jujutsu for Busy Devs by pjmlp on Tuesday July 22, 2025 @09:12AM (#44646449)
It isn't, you decided it was, reposting my comment.

> If I had an option, I would still be using something like Subversion or Mercurial.

> As it is, I go with whatever our clients require of us, and that isn't jj.

I share no desire to use jj in those words.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @10:13AM (#44647147)
But how is that a relevant comment for this post about jj? People are talking about one thing and you're saying "I either can't use it at all, or am just happy with something else already". There was no discussion of the merits or shortcomings of jj...

All I was saying is that if a client requires you to use git, you could use jj without them knowing/caring - unless your entire workstation is under tight control, in which case, again, it's not relevant to the discussion

Re:Jujutsu for Busy Devs by baq on Tuesday July 22, 2025 @04:36AM (#44644578)
my heuristic is:

do you know about git rerere?

if yes - try jj.

Re:Jujutsu for Busy Devs by darthrupert on Tuesday July 22, 2025 @05:57AM (#44645034)
You can consider your perfect conversion rate now broken; I tried jujutsu on a personal project and found it to be a hassle without any upsides.

I believe your perception is flawed because the people who just try it and throw it away don't tend to talk about it because it's not popular enough to warrant even a twitter comment. This is the first time I got the impulse to share this but only because you claimed a rather silly 100% conversion rate.

Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:32AM (#44646077)
Care to elaborate on the hassle and lack of upsides? Have you considered that you simply didn't give it a fair shake or were holding it wrong?
Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:28PM (#44649423)
I don’t think this is a good approach toward getting people to switch. It’s unnecessarily combative.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @02:53PM (#44651469)
Even though the parent comment was outrageously combative, you're probably right that it wasn't necessary to reply in a much milder, but similar fashion.
Re:Jujutsu for Busy Devs by darthrupert on Wednesday July 23, 2025 @03:29AM (#44656628)
Perhaps you just didn't give my comment a fair shake and were reading it wrong.

But I don't think parent comment to mine was "outrageously combative", I just thought it was a bit silly to claim a 100% conversion rate.

Re:Jujutsu for Busy Devs by fedeb95 on Tuesday July 22, 2025 @06:09AM (#44645101)
this still doesn't imply it is worth checking out.
Re:Jujutsu for Busy Devs by tgv on Tuesday July 22, 2025 @06:31AM (#44645243)
> I have seen a 100% conversion rate from everyone who gave it a serious try.

Cognitive dissonance is a thing.

Re:Jujutsu for Busy Devs by mcepl on Tuesday July 22, 2025 @07:52AM (#44645734)
yes, I haven’t managed for a week, but I tried to Jujutsu and gave up. It is too complicated for no visible gain. Plus, there is no infrastructure supporting it (in the end, you store the stuff in the crippled git repositories). `git commit --amend` and `git rebase --update-refs` together with few scripts (e.g., https://git.sr.ht/~mcepl/git-fixup) does the same, and I am still with true git.
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:28AM (#44646043)
Git infrastructure works just fine with jj...

And there's nothing crippled about thr git repos.

Try jjui for a great TUI experience on top of jj.

Re:Jujutsu for Busy Devs by ben0x539 on Tuesday July 22, 2025 @07:53AM (#44645745)
I'm sure if I did the proper time investment I would enjoy jj. I've heard basically only good things about it in casual conversation. So far, my experience has been that I tried it, immediately got really annoyed that it automatically adds every untracked file that's not gitignored to the current commit, and was advised that I might want to stay with git if that's a problem.

That said, I struggle a bit with learning version control systems (that aren't git, like, I never really wrapped my head around svn or darcs or anything until they invented git). Seems like everybody just wants to write about the cool new commands they can run now instead of conveying how the data model works, or what mental model it wants to encourage. I had the same issue trying to get into pijul a while back, couldn't understand how to conceptualize the current state of a branch if I couldn't point at a commit in a tree and say "that's the branch, right there".

Re:Jujutsu for Busy Devs by riwsky on Tuesday July 22, 2025 @08:24AM (#44646003)
Mental model: “everything is a commit”. Commits are commits. Stashes are commits. The working tree is a commit. The index doesn’t exist, because it’s unnecessary.

The data model is technically of revisions, which are stable across operations like rebases (which change the underlying git commit).

How to conceptualize a branch: as a bookmark of a specific commit.

Re:Jujutsu for Busy Devs by ben0x539 on Tuesday July 22, 2025 @09:55AM (#44646953)
Yeah, I think that extra layer of revision identity is giving my intuition trouble, like it's obvious it needs to be there but the consequences are still percolating through my head.
Re:Jujutsu for Busy Devs by homebrewer on Tuesday July 22, 2025 @07:55AM (#44645769)
I used it for several days and went back to git; it doesn't really provide that much for someone already proficient with git, and you need to know the underlying mechanism well for when something goes wrong anyway (just like with any other abstraction).
Re:Jujutsu for Busy Devs by nchmy on Tuesday July 22, 2025 @08:02AM (#44645823)
There's also subcamps.

Those who have tried it and

1) actually gave it a fair shake - and are now evangelize it, and

2) people who simply didn't give it a fair shake due to a) time restraints and b) just not having an open enough mind to genuinely try it out

And then those who haven't tried it but

1) have never heard of it, and

2) are unwilling to try it because they are stuck in their ways (I view these people as being in Plato's Cave, or the matrix, or a cult - even though us evangelizers obviously sound like we're in a cult). They're in an even sadder position than those who tried it half-heartedly.

All such sorts of people are on display in this thread. I hope us zealots have been able to convince (hopefully via education) at least a few to try it out.

And also to try jjui, which is incredible.

https://github.com/idursun/jjui

Re:Jujutsu for Busy Devs by begueradj on Tuesday July 22, 2025 @08:03AM (#44645831)
> I was productive the same day I switched and within a week I had no remaining situations where I needed to fall back to git commands.

When it's our first time, the muscle damage can weight a lot to even be able to sit properly in front of the desk during the first couple of weeks.

Re:Jujutsu for Busy Devs by renox on Tuesday July 22, 2025 @08:27AM (#44646030)
At work we

1) use a git hook to generate Gerrit IDs for new commit. AFAIK, JJ doesn't support these.

2) we also use submodules, which must be handled using git commands.

So if I decide to use JJ, I'll have to use a mix of JJ and git..

Re:Jujutsu for Busy Devs by stouset on Tuesday July 22, 2025 @12:21PM (#44649295)
For 1, gerrit and jj have recently collaborated to standardize on a commit footer where stable revision IDs are encoded in the jj style.

This landed in a jj release a few months back. I assume it’s live in gerrit now too.

Re:Jujutsu for Busy Devs by christophilus on Tuesday July 22, 2025 @08:47AM (#44646214)
I used it for a little over a week, and switched back. This was a while ago, but the main reason was my neovim setup and flow never felt as good. Maybe jj has a good neovim plugin and diff mechanism now, though?
Re:Jujutsu for Busy Devs by __turbobrew__ on Tuesday July 22, 2025 @08:48AM (#44646216)
How fast I can deliver value is almost never gated by my VCS, so why should I try? In total I maybe lose a few minutes a month to VCS impedance mismatch, and I am merging on average ~4-5 PRs a day.

For sure git is hard to learn for beginners and there could be an alternative which is easier to pick up (maybe jj) but for those who know how git works internally and are proficient with it I don’t see it being worth the switch.

Re:Jujutsu for Busy Devs by sshine on Tuesday July 22, 2025 @08:55AM (#44646286)
> How fast I can deliver value is almost never gated by my VCS

Oh, the number of times I do

  git commit --fixup ...searches `git log` and pastes`... && \
    git rebase -i --autosquash ...that same commit^...
I waste several half minutes several times per day in periods!

Another time-consuming thing is context-switching from a feature branch with staged/unstaged changes. If you're good with worktrees, you can largely avoid this, but the way I work with worktrees, I instantiate them as subdirectories to my repo's parent, which clutters my directories unless I make space for this as I clone the repository, which I haven't got used to.

I deliberately avoid too complicated git workflow aliases because I hate being stuck without them.

I am definitely in the camp of "I'd switch to jj the moment I give myself time to try it."

In the meantime, running git commands does sometimes take more time than it needs to.

Re:Jujutsu for Busy Devs by dmsnell on Tuesday July 22, 2025 @09:59AM (#44646994)
You can interactively rebase after the fact while preserving merges even. I usually work these days on stacked branches, and instead of using —-fixup I just commit with a dumb message.

    git rebase -i --rebase-merges --keep-base trunk
This lets me reorganize commits, edit commit messages, split work into new branches, etc… When I add --update-refs into the mix it lets me do what I read are the biggest workflow improvements from jj, except it’s just git.

This article from Andrew Lock on stacked branches in git was a great inspiration for me, and where I learned about --update-refs:

https://andrewlock.net/working-with-stacked-branches-in-git-...

Re:Jujutsu for Busy Devs by sshine on Wednesday July 23, 2025 @03:37PM (#44663105)
That’s great advice, thanks for sharing --update-refs!

But I don’t see how that removes the usefulness of fixup commits, only that you can do them across stacked branches with ease.

But you’re saying I don’t need the particular hash of the parent, I can just rebase all the way back to main/trunk each time. That’s a good point!

I think I’m still saving time by fixup, it was the second hash lookup I wasn’t happy with.

I like to rebase my fixups immediately when possible so I don’t forget.

Re:Jujutsu for Busy Devs by dmsnell on Thursday July 24, 2025 @07:15PM (#44677492)
You understand it correctly: it doesn’t remove any value from fixup; instead it just means you can fixup to whatever and move the commit visually to where you want it — doesn’t have to be the main/trunk branch, and you can do it whenever is convenient.

That’s where I made the comment about not actually running fixup. Instead of claiming to fix a SHA, I leave myself a note like “fix tests” so I can move it appropriately even if I get distracted for a few days

Re:Jujutsu for Busy Devs by dpc_01234 on Tuesday July 22, 2025 @08:50AM (#44646238)
Fwiw. It took me 4 or 5 attempts of various lengths (2 to 10 days) before I actually sticked with it. I've hit unimplemented deal breakers and was generally uncomfortable a lot. Now I like it more than git, but I don't think the difference is large and stacking commits is a bit of a pass time for me. I do it more now because it's easier but I would just do less of it with git and no one would care much.
Re:Jujutsu for Busy Devs by dilap on Tuesday July 22, 2025 @09:41AM (#44646779)
There is a 3rd group (probably mostly gamedevs) who think it seems like a great idea and really want to try it, but are blocked waiting for git-lfs support.

Every time jujutsu pops back up on HN I check to see if they've added it yet. Not yet! But they are slowly getting there:

https://github.com/jj-vcs/jj/issues/80

Re:Jujutsu for Busy Devs by tex0 on Tuesday July 22, 2025 @01:56PM (#44650769)
Maybe they need perforce support instead :P
Re:Jujutsu for Busy Devs by spott on Tuesday July 22, 2025 @10:22PM (#44655160)
Do you know what this means in practice?

Is it that I have to fall back to git for its changes? Or that I just shouldn’t use jj if I’m in a repo with lfs files?

Re:Jujutsu for Busy Devs by dilap on Wednesday July 23, 2025 @11:17AM (#44660186)
I'm not sure, if you scroll through the bug report there seem to be some people maybe kind of making it work, but I couldn't figure out exactly what they were doing, so decided I'll just keep waiting for the real implementation.
Re:Jujutsu for Busy Devs by lolstarz on Tuesday July 22, 2025 @09:51AM (#44646902)
I have noticed this trend too. I don't know if I'm simply too smooth-brained for `jj` or what, but I forced myself to use it for a month to give it a fair shake and simply couldn't grok it. I gave up and went back to rawdogging git. So there are at least some of us out there.
Re:Jujutsu for Busy Devs by yungporko on Tuesday July 22, 2025 @10:20AM (#44647237)
i've never considered testing out any of the new version control systems i see from time to time for the simple reason that i already know git, everybody else already knows git, git already completely handles everything i could conceivably want it to do (and a bunch more stuff that i will never touch), and perhaps biggest of all, i can't tell my manager that i want our whole team to migrate our code into (new thing) which everybody will have to learn for no reason.

serious question as somebody who has never even looked into what jujutsu offers - unless you're a solo dev with some free time, what exactly is the selling point here?

edit: i didnt realise that its just a layer on top of git so that basically answers my question, fair

Re:Jujutsu for Busy Devs by qudat on Tuesday July 22, 2025 @11:57AM (#44648835)
> You will be hard-pressed to find someone who stuck with it for a week and decided to go back to git.

I used it for a week and switched back to `git`. Most of its hallmark features are not something I use that often.

Re:Jujutsu for Busy Devs by rodrigodlu on Wednesday July 23, 2025 @07:09AM (#44657830)
I did that and went "back".

Most of the projects I do for money are on Github and Gitlab.

I got my hands on things like YT videos explaining, official docs, cheatsheets.

About 4 hours exploring, trying to use with some side projects.

I did the same decades ago from CVS/SVN to git (even tried Hg). At that time it was obvious the "revolution" + "evolution" effect. Also git provided some transition tools that were easier to use from my pov.

Now it's just "evolution".

I see the added power to work with different "branches" simultaneously, move commits in different order in a way that is easier to have some better management logic, etc.

This is basically compelling if you work on different facets on big monorepos.

But I want to work on one thing a time nowadays, do something reliable, instead several features simultaneously, even with AI assistance, so the gains are not that huge, yet.

Like you I ended up using git commands again naturally. Stopping using svn commands eons ago felt amazing.

Re:Jujutsu for Busy Devs by paradox460 on Wednesday July 23, 2025 @03:07PM (#44662803)
I tried it a year or two ago and went back to git. I didn't dislike JJ, it just didn't cover all the things I needed to do my usual workflow at the time, and being the only dev on my team using it was a bit tricky

I've been meaning to give it another shot, and probably will after this article