Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jj 0.26.0 #206710

Merged
merged 2 commits into from
Feb 6, 2025
Merged

jj 0.26.0 #206710

merged 2 commits into from
Feb 6, 2025

Conversation

BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes
### About

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

Release highlights

  • Improved Git push/fetch compatibility by spawning an external git process.
    This can be enabled by the git.subprocess=true config knob, and will be the
    default in a future release.

  • jj log can now show cryptographic commit signatures. The output can be
    controlled by the ui.show-cryptographic-signatures=true config knob.

Breaking changes

  • jj abandon now deletes bookmarks pointing to the revisions to be abandoned.
    Use --retain-bookmarks to move bookmarks backwards. If deleted bookmarks
    were tracking remote bookmarks, the associated bookmarks (or branches) will be
    deleted from the remote on jj git push --all.
    #3505

  • jj init --git and jj init --git-repo have been removed. They were
    deprecated in early 2024. Use jj git init instead.

  • The following deprecated commands have been removed:

    • jj cat is replaced by jj file show.
    • jj chmod is replaced by jj file chmod.
    • jj files is replaced by jj file list.
  • The deprecated -l short alias for --limit in jj log, jj op log
    and jj obslog has been removed. The -n short alias can be used instead.

  • The deprecated --siblings options for jj split has been removed.
    jj split --parallel can be used instead.

  • The deprecated fix.tool-command config option has been removed.

  • In colocated repos, the Git index now contains the changes from all parents
    of the working copy instead of just the first parent (HEAD). 2-sided
    conflicts from the merged parents are now added to the Git index as conflicts
    as well.

  • The following change introduced in 0.25.0 is reverted:

    • jj config list now prints inline tables { key = value, .. } literally.
      Inner items of inline tables are no longer merged across configuration
      files.
  • jj resolve will now attempt to resolve all conflicted files instead of
    resolving the first conflicted file. To resolve a single file, pass a file
    path to jj resolve.

  • jj util mangen is replaced with jj util install-man-pages, which can
    install man pages for all jj subcommands to a given path.

  • In jj config list template, value is now typed as ConfigValue, not as
    String serialized in TOML syntax.

  • jj git remote add/set-url now converts relative Git remote path to
    absolute path.

  • jj log/op log now applies -n/--limit before the items are reversed.
    Rationale: It's more useful to see the N most recent commits/operations, and
    is more performant. The old behavior can be achieved by jj log .. | head.
    #5403

  • Upgraded scm-record from v0.4.0 to v0.5.0. See release notes at
    https://github.com/arxanas/scm-record/releases/tag/v0.5.0.

  • The builtin pager is switched to
    streampager. It can handle large
    inputs better and can be configured.

  • Conflicts materialized in the working copy before jj 0.19.0 may no longer
    be parsed correctly. If you are using version 0.18.0 or earlier, check out a
    non-conflicted commit before upgrading to prevent issues.

Deprecations

New features

  • jj git {push,clone,fetch} can now spawn an external git subprocess, via
    the git.subprocess = true config knob. This provides an alternative that,
    when turned on, fixes SSH bugs when interacting with Git remotes due to
    libgit2s limitations #4979.

  • jj describe now accepts --edit.

  • jj evolog and jj op log now accept --reversed.

  • jj restore now supports -i/--interactive selection.

  • jj file list now supports templating.

  • There is a new builtin_op_log_oneline template alias you can pass to jj op log -T for a more compact output. You can use format_operation_oneline and
    format_snapshot_operation_oneline to customize parts of it.

  • New template function config(name) to access to configuration variable from
    template.

  • New template function pad_centered() to center content within a minimum
    width.

  • Templater now supports list.filter(|x| ..) method.

  • The diff commit template keyword now supports custom formatting via
    diff.files(). For example, diff.files().map(|e| e.path().display()) prints
    changed file paths.

  • The diff.stat() template method now provides methods to get summary values.

  • jj log can now show cryptographic commit signatures. The output can be
    controlled by the ui.show-cryptographic-signatures=true config knob. The
    signature template can be customized using
    format_detailed_cryptographic_signature(signature) and
    format_short_cryptographic_signature(signature).

  • New git.sign-on-push config option to automatically sign commits which are
    being pushed to a Git remote.

  • New git.push-new-bookmarks config option to push new bookmarks without
    --allow-new.

  • jj status now shows untracked files when they reside directly under a
    tracked directory. There's still an issue that files under untracked
    directories aren't listed. #5389

  • New merge-tools.<TOOL>.diff-expected-exit-codes config option to suppress
    warnings from tools exiting with non-zero exit codes.

  • New fix.tools.TOOL.enabled config option to enable/disable tools. This is
    useful for defining disabled tools in user configuration that can be enabled
    in individual repositories with one config setting.

  • Added --into flag to jj restore, similarly to jj squash and jj absorb. It is equivalent to --to, but --into is the recommended name.

  • Italic text is now supported. You can set e.g. color.error = { fg = "red", italic = true } in your config.

  • New author_name/author_email/committer_name/committer_email(pattern)
    revset functions to match either name or email field explicitly.

  • New subject(pattern) revset function that matches first line of commit
    descriptions.

  • Conditional configuration now supports --when.commands to change
    configuration based on subcommand.

  • The Jujutsu documentation site now publishes a schema for the official
    configuration file, which can be integrated into your editor for autocomplete,
    inline errors, and more.
    Please see the documentation for more
    on this.

Fixed bugs

  • jj git fetch with multiple remotes will now fetch from all remotes before
    importing refs into the jj repo. This fixes a race condition where the
    treatment of a commit that is found in multiple fetch remotes depended on the
    order the remotes were specified.

  • Fixed diff selection by external tools with jj split/commit -i FILESETS.
    #5252

  • Conditional configuration now applies when initializing new repository.
    #5144

  • [diff.<format>] configuration now applies to .diff().<format>() commit
    template methods.

  • Conflicts at the end of files which don't end with a newline character are
    now materialized in a way that can be parsed correctly.
    #3968

  • Bookmark and remote names written by jj git clone to
    revset-aliases.'trunk()' are now escaped if necessary.
    #5359

Contributors

Thanks to the people who made this release happen!

  • Angel Ezquerra (@AngelEzquerra)
  • Antoine Martin (@alarsyo)
  • Anton Bulakh (@necauqua)
  • Austin Seipp (@thoughtpolice)
  • Baltasar Dinis (@bsdinis)
  • Benjamin Tan (@bnjmnt4n)
  • blinry (@blinry)
  • Bryce Berger (@bryceberger)
  • Charlie-83 (@Charlie-83)
  • Christian Stoitner (@cstoitner)
  • Evan Martin (@evmar)
  • George Christou (@gechr)
  • Ilya Grigoriev (@ilyagr)
  • Jakob Hellermann (@jakobhellermann)
  • JDSeiler (@JDSeiler)
  • Jonathan Frere (@MrJohz)
  • Jonathan Gilchrist (@jgilchrist)
  • Josh Steadmon (@steadmon)
  • Martin von Zweigbergk (@martinvonz)
  • Matt Kulukundis (@fowles)
  • Ollivier Robert (@keltia)
  • Philip Metzger (@PhilipMetzger)
  • Philipp Albrecht (@pylbrecht)
  • Robert Jackson (@rwjblue)
  • Samuel Tardieu (@samueltardieu)
  • Scott Taylor (@scott2000)
  • Stephen Jennings (@jennings)
  • Valentin Gatien-Baron (@v-gb)
  • Vincent Ging Ho Yim (@cenviity)
  • Waleed Khan (@arxanas)
  • Yuya Nishihara (@yuja)

@github-actions github-actions bot added rust Rust use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Feb 6, 2025
Copy link
Contributor

github-actions bot commented Feb 6, 2025

🤖 An automated task has requested bottles to be published to this PR.

@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Feb 6, 2025
@BrewTestBot BrewTestBot enabled auto-merge February 6, 2025 08:33
@BrewTestBot BrewTestBot added this pull request to the merge queue Feb 6, 2025
Merged via the queue into master with commit 89089c1 Feb 6, 2025
15 checks passed
@BrewTestBot BrewTestBot deleted the bump-jj-0.26.0 branch February 6, 2025 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. rust Rust use is a significant feature of the PR or issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants