Deprecations
-
jj checkoutandjj mergeare both deprecated; usejj newinstead to
replace both of these commands in all instances.Rationale:
jj checkoutandjj mergeboth implement identical
functionality, which is a subset ofjj new.checkoutcreates a new working
copy commit on top of a single specified revision, i.e. with one parent.
mergecreates 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 thatnewcan 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 newinstead; it is more general and easier to remember than both of
these.jj checkoutandjj mergewill no longer be shown as part ofjj help, but
will still function for now, emitting a warning about their deprecation.Deadline:
jj checkoutandjj mergewill be deleted and are expected
become a hard error later in 2024. -
jj init --gitandjj init --git-repoare now deprecated and will be removed
in the near future.Use
jj git initinstead.
Breaking changes
-
(Minor) Diff summaries (e.g.
jj diff -s) now useDfor "Deleted" instead
ofRfor "Removed". @joyously pointed out thatRcould also mean
"Renamed". -
jj util completionnow 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 completionnow 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 abandoncommand is added to clean up the operation history. Git
refs and commit objects can be further compacted byjj util gc. -
jj util gcnow removes unreachable operation, view, and Git objects. -
jj branch renamewill now warn if the renamed branch has a remote branch, since
those will have to be manually renamed outside ofjj. -
jj git pushgained a--trackedoption, 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 listgained a--include-overriddenoption to allow
printing overridden config values. -
jj config listnow accepts--useror--repooption to specify
config origin. -
New
jj config pathcommand to print the config file path without launching
an editor. -
jj tag listcommand prints imported git tags. -
jj nextandjj prevnow prompt in the event of the next/previous commit
being ambiguous, instead of failing outright. -
jj resolvenow displays the file being resolved. -
jj workspace rootwas aliased tojj root, for ease of discoverability -
jj diffno longer shows the contents of binary files. -
jj gitnow has aninitcommand 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)