Deprecations
-
jj checkout
andjj merge
are both deprecated; usejj new
instead to
replace both of these commands in all instances.Rationale:
jj checkout
andjj merge
both implement identical
functionality, which is a subset ofjj new
.checkout
creates a new working
copy commit on top of a single specified revision, i.e. with one parent.
merge
creates a new working copy commit on top of at least two specified
revisions, i.e. with two or more parents.The only difference between these commands and
jj new
, which also creates
a new working copy commit, is thatnew
can create a working copy commit on
top of any arbitrary number of revisions, so it can handle both the previous
cases at once. The only actual difference between these three commands is the
command syntax and their name. These names were chosen to be familiar to users
of other version control systems, but we instead encourage all users to adopt
jj new
instead; it is more general and easier to remember than both of
these.jj checkout
andjj merge
will no longer be shown as part ofjj help
, but
will still function for now, emitting a warning about their deprecation.Deadline:
jj checkout
andjj merge
will be deleted and are expected
become a hard error later in 2024. -
jj init --git
andjj init --git-repo
are now deprecated and will be removed
in the near future.Use
jj git init
instead.
Breaking changes
-
(Minor) Diff summaries (e.g.
jj diff -s
) now useD
for "Deleted" instead
ofR
for "Removed". @joyously pointed out thatR
could also mean
"Renamed". -
jj util completion
now takes the shell as a positional argument, not a flag.
the previous behavior is deprecated, but supported for now. it will be removed
in the future.
New features
-
jj util completion
now supports powershell and elvish. -
Official binaries for macOS running on Apple Silicon (
aarch64-apple-darwin
)
are now available, alongside the existing macOS x86 binaries. -
New
jj op abandon
command is added to clean up the operation history. Git
refs and commit objects can be further compacted byjj util gc
. -
jj util gc
now removes unreachable operation, view, and Git objects. -
jj branch rename
will now warn if the renamed branch has a remote branch, since
those will have to be manually renamed outside ofjj
. -
jj git push
gained a--tracked
option, to push all the tracked branches. -
There's now a virtual root operation, similar to the virtual root
commit. It appears at the end ofjj op log
. -
jj config list
gained a--include-overridden
option to allow
printing overridden config values. -
jj config list
now accepts--user
or--repo
option to specify
config origin. -
New
jj config path
command to print the config file path without launching
an editor. -
jj tag list
command prints imported git tags. -
jj next
andjj prev
now prompt in the event of the next/previous commit
being ambiguous, instead of failing outright. -
jj resolve
now displays the file being resolved. -
jj workspace root
was aliased tojj root
, for ease of discoverability -
jj diff
no longer shows the contents of binary files. -
jj git
now has aninit
command that initializes a git backed repo. -
New template function
surround(prefix, suffix, content)
is added.
Fixed bugs
-
Fixed snapshots of symlinks in
gitignore
-d directory.
#2878 -
Fixed data loss in dirty working copy when checked-out branch is rebased or
abandoned by Git.
#2876
Contributors
Thanks to the people who made this release happen!
- Austin Seipp (@thoughtpolice)
- Benjamin Brittain (@benbrittain)
- Chris Krycho (@chriskrycho)
- Daehyeok Mun (@daehyeok)
- Daniel Ploch (@torquestomp)
- Essien Ita Essien (@essiene)
- Ikko Eltociear Ashimine (@eltociear)
- Ilya Grigoriev (@ilyagr)
- Jonathan Tan (@jonathantanmy)
- jyn (@jyn514)
- Martin von Zweigbergk (@martinvonz)
- Matt Stark (@matts1)
- Michael Pratt (prattmic)
- Philip Metzger (@PhilipMetzger)
- Stephen Jennings (@jennings)
- Valentin Gatien-Baron (@v-gb)
- vwkd (@vwkd)
- Yuya Nishihara (@yuja)