Skip to content

Commit

Permalink
jj: update to 0.26.0.
Browse files Browse the repository at this point in the history
## [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
0-wiz-0 committed Feb 9, 2025
1 parent f70301a commit 7ea69c1
Show file tree
Hide file tree
Showing 7 changed files with 642 additions and 299 deletions.
4 changes: 2 additions & 2 deletions devel/jj/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.20 2025/01/07 13:00:56 wiz Exp $
# $NetBSD: Makefile,v 1.21 2025/02/09 21:21:14 wiz Exp $

DISTNAME= jj-0.25.0
DISTNAME= jj-0.26.0
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_GITHUB:=martinvonz/}
GITHUB_TAG= v${PKGVERSION_NOREV}
Expand Down
Loading

0 comments on commit 7ea69c1

Please sign in to comment.