Breaking changes
-
Conflicts are now stored in a different way. Commits written by a new
jj
binary will not be read correctly by olderjj
binaries. The new model
solves some performance problems with the old model. For example,jj log
should be noticeably faster on large repos. You may need to create a new
clone to see the full speedup. -
The
remote_branches()
revset now includes branches exported to the Git
repository (so called Git-tracking branches.) Use
remote_branches(remote=exact:"origin")
to query branches of certain remote. -
Status messages are now printed to stderr.
-
jj config set
now interprets the value as TOML also if it's a valid TOML
array or table. For example,jj config set --user 'aliases.n' '["new"]'
-
Remote branches now have tracking or non-tracking flags. The
git.auto-local-branch
setting is applied only to newly fetched remote
branches. Existing remote branches are migrated as follows:- If local branch exists, the corresponding remote branches are considered
tracking branches. - Otherwise, the remote branches are non-tracking branches.
If the deduced tracking flags are wrong, use
jj branch track
/untrack
commands to fix them up.See automatic local branch creation
for details. - If local branch exists, the corresponding remote branches are considered
-
Non-tracking remote branches aren't listed by default. Use
jj branch list --all
to show all local and remote branches. -
It's not allowed to push branches if non-tracking remote branches of the same
name exist. -
Pushing deleted/moved branches no longer abandons the local commits referenced
by the remote branches. -
jj git fetch --branch
now requiresglob:
prefix to expand*
in branch
name.
New features
-
jj
's stable release can now be installed withcargo binstall jj-cli
. -
jj workspace add
now takes a--revision
argument. -
jj workspace forget
can now forget multiple workspaces at once. -
branches()
/remote_branches()
/author()
/committer()
/description()
revsets now support glob matching. -
jj branch delete
/forget
/list
, andjj git push --branch
now support
string pattern syntax. The--glob
option
is deprecated in favor ofglob:
pattern. -
The
branches
/tags
/git_refs
/git_head
template keywords now return a
list ofRefName
s. They were previously pre-formatted strings. -
The new template keywords
local_branches
/remote_branches
are added to show
only local/remote branches. -
jj workspace add
now preserves all parents of the old working-copy commit
instead of just the first one. -
jj rebase -r
gained the ability to rebase a revisionA
onto a descendant
ofA
.
Fixed bugs
-
Updating the working copy to a commit where a file that's currently ignored
in the working copy no longer leads to a crash
(#976). -
Conflicts in executable files can now be resolved just like conflicts in
non-executable files (#1279). -
jj new --insert-before
and--insert-after
now respect immutable revisions
(#2468).
Contributors
Thanks to the people who made this release happen!
- Antoine Cezar (@AntoineCezar)
- Austin Seipp (@thoughtpolice)
- Benjamin Saunders (@Ralith)
- Gabriel Scherer (@gasche)
- Ilya Grigoriev (@ilyagr)
- Infra (@1011X)
- Isabella Basso (@isinyaaa)
- Martin von Zweigbergk (@martinvonz)
- Tal Pressman (@talpr)
- Waleed Khan (@arxanas)
- Yuya Nishihara (@yuja)