github jj-vcs/jj v0.43.0

6 hours ago

About

jj is a Git-compatible version control system that is both simple and powerful. See
the installation instructions to get started.

Release highlights

  • jj run allows you to run a command over a set of changes, each with their
    own private working copy; the commands may update the working copy and
    changes/conflicts are propagated accordingly, e.g., jj run -- cargo check --all-features or jj run -- cargo fix behaves as one might expect.

Breaking changes

  • The deprecated git_head() and git_refs() functions have been removed from
    revsets and templates.

  • Git-like symbols (e.g. refs/heads/main) are no longer resolved to
    revisions. Use the bookmark/tag <name> or <name>@<remote> syntax instead.

  • The deprecated ui.revsets-use-glob-by-default option has been removed.

  • jj bookmark track/untrack no longer supports <kind>:<bookmark>@<remote>
    patterns. However, the <bookmark>@<remote> symbol syntax is still supported.
    #9226

Deprecations

New features

  • jj show now supports --reversed flag.

  • jj now looks for config files in /etc/jj.

  • jj config gc will delete configuration of deleted/moved repos from
    ~/.config/jj/repos folder.
    #9362

  • jj run allows you to run a command over a set of changes, each with their
    own private working copy; the commands may update the working copy and
    changes/conflicts are propagated accordingly, e.g., jj run -- cargo check --all-features or jj run -- cargo fix behaves as one might expect.

  • jj gerrit upload now supports the -o (--option) flag, which works like
    git push -o (--push-option).

  • jj git fetch now rebases the descendants of revisions that were rewritten
    based on their change IDs. Previously, when multiple bookmarked revisions
    existed in a stack, those rewritten revisions and their descendants wouldn't
    always be rebased. Note that immutable descendants will not be rebased.

  • Add a forks() revset function that yields all commits with more than 1 child.

  • colors config now supports crossed-out text styling with
    { crossed-out = true }.

Fixed bugs

  • On Windows, querying a path's file identity no longer follows symbolic links,
    matching the behavior on Unix. Previously a symlink shared the identity of its
    target, so two symlinks pointing at the same target were treated as the same
    file. This identity check is used when writing the working copy to detect
    aliases of the reserved .git and .jj directories.
    #8924

  • jj now creates a new working-copy revision during snapshotting if the
    working copy was immutable. Previously, the new revision was created
    immediately after the working copy became immutable.
    #7751
    #9338

  • jj git remote add now warns if the new remote exactly matches an existing
    remote's fetch URL or effective push URL.
    #413

  • Fixed corrupt loose Git objects on Intel Raptor Lake CPU and aarch64.
    Previously, jj could report a successful commit even though git fsck would
    later fail with incorrect data check, corrupt loose object, or missing blob, and later jj operations could fail with corrupt deflate stream.

Contributors

Thanks to the people who made this release happen!

Don't miss a new jj release

NewReleases is sending notifications on new releases.