March 16, 2026

Review Rumble: jj vs Emacs vs GitHub

Reviewing Large Changes with Jujutsu

Dev swears jj makes huge reviews easy; Emacs fans say “we already do this”

TLDR: A dev’s jj-based workflow promises stress-free reviews of giant code changes by duplicating and squashing pieces locally. Commenters split: Magit veterans say it’s old news, others propose a simpler jj setup, and many cheer jj’s “diff across rebases” while roasting GitHub’s force‑push pain—crucial as AI blows up PR sizes.

A developer just dropped a spicy workflow for reviewing giant pull requests (those “please approve 5,000 lines” code changes) using Jujutsu (jj), a Git alternative. He’s been using jj for six months and says it feels like he “grew an extra arm” for crafting clean reviews—especially as AI coding assistants crank PRs to supersize. His trick: duplicate the change, make an empty placeholder, and gradually squash approved bits until the scary diff melts away. Bonus: you track progress in your own editor instead of wrestling Bitbucket’s clunky “what have I seen?” UI.

Cue the comments, and the room caught fire. Emacs/Magit old guard swooped in like, “cute trick, kid—we’ve done this for years.” One vet detailed how Magit lets you squash and amend straight from the log, flexing that editor muscle memory. Meanwhile, a pragmatist dropped an even simpler jj recipe to make re-reviews painless when the PR updates—instant bookmarks, instant sanity. And then came the GitHub groans: another commenter loved jj’s ability to compare “what you last reviewed” across messy rebases and force-pushes, adding that GitHub still makes that a headache.

The vibe? Team jj hype vs Magit veterans’ “we’ve been knew”, with GitHub catching stray memes about force-push chaos. Jokes flew about that “extra arm”—“great, now I need three” became the thread’s running gag. Whether you call it jj magic or Emacs déjà vu, everyone agrees: with mega-PRs becoming the norm, reviewers need new tricks—and fewer tabs.

Key Points

  • The author proposes a Jujutsu (jj) workflow to review large pull requests by duplicating the change, inserting an empty parent change, and squashing reviewed hunks into the parent until complete.
  • Progress is tracked locally using jj diff --stat, enabling reviewers to pause and resume without losing context.
  • Bitbucket Data Centre provides interdiffs on updated PRs but is less effective at tracking viewed files compared to GitHub.
  • The workflow keeps reviewers in their standard coding environment (IDE, tooling) and reduces context switching to the web UI except for leaving comments.
  • An example demonstrates fetching a PR branch, inspecting logs and stats, and noting jj’s visualization (e.g., diamond for immutable change).

Hottest takes

"For what it's worth, I've been doing basically this with magit for years now" — tensegrist
"this should be slightly simpler, and work better for subsequent review iterations" — pzmarzly
"easily diff the current pr state with what you last reviewed, even across rebases" — cube2222
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.