Jump to…
code hosting on jujutsu

A branch is a pointer. Your work is not.

Push with jj git push and review opens itself. The change keeps one identity through every amend, rebase, and force-push.

jj git clone https://dogfood.sh/snow/core.git
~/core
example session
jj new main -m 'Cache shortest-unique prefixes per repo'
Working copy now at: vlrxqmpd 8f21c0ab (empty) Cache shortest-unique prefixes
Parent commit      : mrukztqx c40d1f8 main | Drop the legacy branch-tip fallback

jj status
Working copy changes:
M crates/store/prefix.rs
A crates/store/prefix_cache.rs

jj git push --change @
Changes to push to origin:
  Add bookmark push-vlrxqmpd to 8f21c0ab
remote: change vlrx is open for review
remote: /snow/core/changes/vlrx

jj log -r 'stack(@)'
◆  zmltxruqpvks  conflict in revset.rs
○  wpqvkrtnmzox  approved
@  vlrxqmpdtwzk  open for review
┴─ main c40d1f8
Push a bookmark, the change opens for review. No web form, no PR button.

Why switch

Four things a branch pointer cannot represent.
  • detached HEAD, lost workevery state is recoverable
  • rebase hell across a stackstacks rebase themselves
  • merge conflicts block youconflicts are just a state
  • force-push rewrites historystable ids survive rewrites

Explore public repos

No account needed to read a repo, a change, or a stack.

Stop fighting your version control.

Bring your team to a forge that matches how you already work.