github jj-vcs/jj v0.8.0

latest releases: v0.24.0, v0.23.0, v0.22.0...
17 months ago

Breaking changes

  • The jujutsu and jujutsu-lib crates were renamed to jj-cli and jj-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(), or separate() 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
    a jj 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 called visible_heads(). heads() with one argument
    is unchanged.

  • The ui.default-revset config was renamed to revsets.log.

  • The jj sparse command was split up into jj sparse list and
    jj sparse set.

  • jj hide (alias for jj abandon) is no longer available. Use jj abandon
    instead.

  • jj debug completion, jj debug mangen and jj debug config-schema have
    been moved from jj debug to jj util.

  • jj will no longer parse br as a git_ref refs/heads/br when a branch br
    does not exist but the git_ref does (this is rare). Use br@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 wrap jj 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 letter o. The ASCII-based graph styles still use o.

  • Commands that accept a diff format (jj diff, jj interdiff, jj show,
    jj log, and jj 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 latest n commits.

  • Added conflict() revset function to select commits with conflicts.

  • jj squash AKA jj 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 and jj log now show abandoned commits as hidden.

  • jj git fetch and jj 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 to jj log instead of showing help. This
    command can be overridden by setting ui.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 the revsets.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 called git (e.g. main@git). They can
    also be referenced in revsets. Such branches exist in colocated repos or if
    you use jj git export.

  • The new jj chmod command allows setting or removing the executable bit on
    paths. Unlike the POSIX chmod, 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 using jj) 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, run jj 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 undoing jj git push or
    jj git fetch remain.

Contributors

Thanks to the people who made this release happen!

Don't miss a new jj release

NewReleases is sending notifications on new releases.