Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## [0.26.0] - 2025-02-05 ### 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-vcs/jj#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](jj-vcs/jj#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](https://github.com/markbt/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 `libgit2`s limitations [#4979](jj-vcs/jj#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](jj-vcs/jj#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](/docs/config.md#json-schema-support) 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](jj-vcs/jj#5252) * Conditional configuration now applies when initializing new repository. [#5144](jj-vcs/jj#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](jj-vcs/jj#3968) * Bookmark and remote names written by `jj git clone` to `revset-aliases.'trunk()'` are now escaped if necessary. [#5359](jj-vcs/jj#5359)
- Loading branch information