Getting jj log to talk about the remote
Part 6 of 9.
The thing that made me trust jj log as a daily driver rather than a novelty was seeing
remote state show up in it without extra ceremony. jj git fetch updates jj’s view of
every remote bookmark, and the default log template already annotates commits with
whichever bookmarks - local, remote, or both - point at them.
Reading the markers took a moment to get used to. main main@origin on the same line
means the local and remote bookmark currently agree. old-experiment@origin with no bare
old-experiment means it’s a bookmark nobody has locally, seen only because it exists on
the remote. An asterisk on either means they’ve diverged.
One config decision actually changes what you see, not just how it’s styled:
git.auto-local-bookmark. On, every newly-fetched remote bookmark gets a matching local
one automatically, so it appears in jj log as a first-class local bookmark right away.
Off, it stays in the remote-only form until you explicitly jj bookmark track it. I can
see the case for either default depending on the shape of the team - a small team where
you track most branches benefits from the automatic version; a large repo where
hundreds of short-lived branches get pushed benefits from the deliberate, noisier
opt-in. Worth checking what your jj defaults to rather than assuming.
jj log -r 'remote_bookmarks()' turned out to be the single most useful revset I’ve
used so far - a “what does the team actually have pushed right now” view that’s
completely independent of whatever mess my own working copy is currently in.