Breaking changes
-
The
jujutsu
andjujutsu-lib
crates were renamed tojj-cli
andjj-lib
,
respectively. -
The
ui.oplog-relative-timestamps
option has been removed. Use the
format_time_range()
template alias instead. For details, see
the documentation. -
Implicit concatenation of template expressions has been disabled. Use
++
operator,concat()
, orseparate()
function instead.
Example:description ++ "\n"
-
jj git push
will consider pushing the parent commit only when the
current commit has no content and no description, such as right after
ajj squash
. -
The minimum supported Rust version (MSRV) is now 1.64.0.
-
The
heads()
revset function was split up into two functions.heads()
without arguments is now calledvisible_heads()
.heads()
with one argument
is unchanged. -
The
ui.default-revset
config was renamed torevsets.log
. -
The
jj sparse
command was split up intojj sparse list
and
jj sparse set
. -
jj hide
(alias forjj abandon
) is no longer available. Usejj abandon
instead. -
jj debug completion
,jj debug mangen
andjj debug config-schema
have
been moved fromjj debug
tojj util
. -
jj
will no longer parsebr
as a git_refrefs/heads/br
when a branchbr
does not exist but the git_ref does (this is rare). Usebr@git
instead. -
jj git fetch
will no longer import unrelated branches from the underlying
Git repo.
New features
-
jj git push --deleted
will remove all locally deleted branches from the remote. -
jj restore
without--from
works correctly even if@
is a merge
commit. -
jj rebase
now accepts multiple-s
and-b
arguments. Revsets with
multiple commits are allowed with--allow-large-revsets
. -
jj git fetch
now supports a--branch
argument to fetch some of the
branches only. -
jj config get
command allows retrieving config values for use in scripting. -
jj config set
command allows simple config edits like
jj config set --repo user.email "somebody@example.com"
-
Added
ui.log-word-wrap
option to wrapjj log
/obslog
/op log
content
based on terminal width. #1043 -
Nodes in the (text-based) graphical log output now use a
◉
symbol instead
of the lettero
. The ASCII-based graph styles still useo
. -
Commands that accept a diff format (
jj diff
,jj interdiff
,jj show
,
jj log
, andjj obslog
) now accept--types
to show only the type of file
before and after. -
jj describe
now supports--reset-author
for resetting a commit's author
to the configured user.jj describe
also gained a--no-edit
option to
avoid opening the editor. -
Added
latest(x[, n])
revset function to select the latestn
commits. -
Added
conflict()
revset function to select commits with conflicts. -
jj squash
AKAjj amend
now accepts a--message
option to set the
description of the squashed commit on the command-line. -
The progress display on
jj git clone/fetch
now includes the downloaded size. -
The formatter now supports a "default" color that can override another color
defined by a parent style. -
jj obslog
andjj log
now show abandoned commits as hidden. -
jj git fetch
andjj git push
will now use the single defined remote even
if it is not named "origin". -
jj git push
now accepts--branch
and--change
arguments together. -
jj git push
now accepts a-r/--revisions
flag to specify revisions to
push. All branches pointing to any of the specified revisions will be pushed.
The flag can be used together with--branch
and--change
. -
jj
with no subcommand now defaults tojj log
instead of showing help. This
command can be overridden by settingui.default-command
. -
Description tempfiles created via
jj describe
now have the file extension
.jjdescription
to help external tooling detect a unique filetype. -
The shortest unique change ID prefixes and commit ID prefixes in
jj log
are
now shorter within the default log revset. You can override the default by
setting therevsets.short-prefixes
config to a different revset. -
The last seen state of branches in the underlying git repo is now presented by
jj branch list
/jj log
as a remote calledgit
(e.g.main@git
). They can
also be referenced in revsets. Such branches exist in colocated repos or if
you usejj git export
. -
The new
jj chmod
command allows setting or removing the executable bit on
paths. Unlike the POSIXchmod
, it works on Windows, on conflicted files, and
on arbitrary revisions. Bits other than the executable bit are not planned to
be supported. -
jj sparse set
now accepts an--edit
flag which brings up the$EDITOR
to
edit sparse patterns. -
jj branch list
can now be filtered by revset. -
Initial support for the Watchman filesystem monitor. Set
core.fsmonitor = "watchman"
in your repo to enable.
Fixed bugs
-
Modify/delete conflicts now include context lines
#1244. -
It is now possible to modify either side of a modify/delete conflict (any
change used to be considered a resolution). -
Fixed a bug that could get partially resolved conflicts to be interpreted
incorrectly. -
jj git fetch
: when re-adding a remote repository that had been previously
removed, in some situations the remote branches were not recreated. -
jj git remote rename
: the git remote references were not rewritten with
the new name. If a new remote with the old name and containing the same
branches was added, the remote branches may not be recreated in some cases. -
jj workspace update-stale
now snapshots the working-copy changes before
updating to the new working-copy commit. -
It is no longer allowed to create branches at the root commit.
-
git checkout
(without usingjj
) in colocated repo no longer abandons
the previously checked-out anonymous branch.
#1042. -
jj git fetch
in a colocated repo now abandons branches deleted on the
remote, just like in a non-colocated repo.
#864 -
jj git fetch
can now fetch forgotten branches even if they didn't move on
the remote.
#1714
#1771 -
It is now possible to
jj branch forget
deleted branches.
#1537 -
Fixed race condition when assigning change id to Git commit. If you've
already had unreachable change ids, runjj debug reindex
.
#924 -
Fixed false divergence on racy working-copy snapshots.
#697,
#1608 -
In colocated repos, a bug causing conflicts when undoing branch moves (#922)
has been fixed. Some surprising behaviors related to undoingjj git push
or
jj git fetch
remain.
Contributors
Thanks to the people who made this release happen!
- Aaron Bull Schaefer (@elasticdog)
- Anton Bulakh (@necauqua)
- Austin Seipp (@thoughtpolice)
- Benjamin Saunders (@Ralith)
- B Wilson (@xelxebar)
- Christophe Poucet (@poucet)
- David Barnett (@dbarnett)
- Glen Choo (@chooglen)
- Grégoire Geis (@71)
- Ilya Grigoriev (@ilyagr)
- Isabella Basso (@isinyaaa)
- Kevin Liao (@kevincliao)
- Martin von Zweigbergk (@martinvonz)
- mlcui (@mlcui-google)
- Samuel Tardieu (@samueltardieu)
- Tal Pressman (@talpr)
- Vamsi Avula (@avamsi)
- Waleed Khan (@arxanas)
- Yuya Nishihara (@yuja)