v0.44.0 #9925
martinvonz
started this conversation in
General
v0.44.0
#9925
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
About
jj is a Git-compatible version control system that is both simple and powerful. See
the installation instructions to get started.
Release highlights
tracked or untracked just like bookmarks. Tracked tags are pushed by default.
Breaking changes
jj git fetchnow fetches tags the same way it fetches bookmarks. Tags arefetched as
<name>@<remote>, and these remote tags are automatically trackedby local tags of the same name. Running
jj git fetchin an existingrepository will re-fetch all tags to initialize the tracking state.
Git's
tagOptis no longer respected. To disable tag fetching, setremotes.<name>.fetch-tags = '~*'in the jj configuration.jj git clone --fetch-tags=all|none|includedis removed in favor of--tag=PATTERN.jj git push --allnow pushes all tags in addition to bookmarks.The
WorkspaceRef.root()andRepoPath.absolute()template functions nowreturn
Option<FsPath>andFsPathrespectively, instead ofString. Thepathkeyword injj config listtemplates now returnsOption<FsPath>.jj file searchnow prints every matched line prefixed by the file path,instead of only the file paths of files containing a match. Use
--name-onlyfor the previous behavior.#9399
Passing an argument more than once is no longer an error. The last occurrence
wins, so
jj --no-pager --no-pager versionandjj log -n 5 -n 10now work,and an argument baked into an alias or a wrapper can be given explicitly as
well. Arguments that can be specified multiple times, such as
--configandjj log -r, are unaffected and still collect all of their values.#8101
#9859
Deprecations
None
New features
New
merge_point()revset function which (similar tofork_point) finds thepoint where multiple branches merge.
jj workspace listnow shows workspace roots by default. The output can becustomized with
templates.workspace_listor-T, andWorkspaceRef.root()returns an optional
FsPathvalue.#9713,
#9826
New
try(expr, fallback...)template function to suppress runtime errors.jj runnow processes revisions from oldest to newest by default. The startorder is guaranteed: each revision begins execution only after the previous
one has started, even with
--jobshigher than 1.jj rungained a--passthroughflag that connects the subprocess'sstdout/stderr directly to the terminal instead of capturing output.
jj rungained a--ignore-changesflag to avoid editing any revisions evenif the command modifies the working copy.
jj rungained a--ignore-errorsflag to continue running against theremaining revisions even if the command exits with a nonzero exit code.
jj file searchnow supports-n/--line-numberto prefix each match withits 1-based line number within the file.
jj git pushgained a--allow-conflictsflag to allow pushing commitscontaining conflicts.
New
jj tag track/untrackcommands to associate local tags with remotes.Note that fetched tags are tracked by default.
Added
builtin_log()revset alias for the built-in defaultjj logrevset.revsets.lognow defaults tobuiltin_log(), so custom log revsets canreuse the built-in default instead of copying its full expression.
Added config option
diff.stat.max-bar-widthfor use with--statto limitthe
++--bar width. In the templating language,diff.stat()can optionallytake a second (positional or named) argument
max_bar_widthfor an equivalenteffect.
jj absorbnow supports--interactive/-i/--toolto let youinteractively choose which hunks from the source to consider for absorption.
This is useful when you only want to absorb part of a commit without first
splitting it. Any hunks that are not selected or cannot be absorbed remain in
the source commit.
Fixed bugs
Recursive alias definitions are detected more precisely. jj can now expand
aliases that are simply repeated. For example, with the alias
jj = [], thecommand
jj jj jjwill resolve tojj. Aliases can also fall back to thedefault command. For example, with the alias
i = ["--ignore-working-copy"],jj iwill resolve tojj --ignore-working-copy.Git temporary files are now cleaned up more reliably in the presence of
signals (e.g.
Ctrl-C). This should reduce the rate of "Could not acquirelock for index file" errors.
(#7530)
Fixed Git HEAD mismatch after the working copy became immutable.
#9827
jjnow creates a new working-copy revision as soon as the one of the currentworkspace becomes immutable, as well as during snapshotting. This brings the
behavior closer to
jj0.42 and earlier.Snapshotting no longer fails if the working copy contains a path whose name
isn't valid UTF-8. Such paths can't be tracked, so they are now skipped and
reported as a warning instead.
#9774
Fixed failure when reading configuration in copied repo with an empty
repo-level configuration directory.
jj diffandjj statusno longer omit a rename or copy in a merge commitwhen the renamed source is present in more than one parent. The identical copy
record reported for each parent was mistaken for a conflict and discarded.
#9752
jj runno longer panics when its revset includes a conflicted commit. Theconflict is now preserved in the rewritten commit.
#9747
Fixed a panic when passing overly-large length parameters to ID templater
functions (
commit_id.short(),commit_id.shortest(), etc.).#9833
jj git importandexportin colocated workspaces are now disabled bydefault. These commands usually do nothing, but they had a race condition.
Contributors
Thanks to the people who made this release happen!
This discussion was created from the release v0.44.0.
All reactions