v0.15.0
jj-vcs/jjv0.15.0Mar 6, 2024by martinvonz
AI Summary
Adds partial commit signing support (GnuPG/SSH), a new built-in pager, and upgrades the Rust minimum version.
Key Highlights
- Partial support for commit signing (GnuPG/SSH).
- New built-in pager `:builtin` available on all platforms.
- MSRV bumped to Rust 1.76.0.
- Templates support logical operators and `self` keyword.
Breaking Changes
- MSRV increased to 1.76.0.
- On-disk index format changed.
- Legacy graph style dropped.
- Default log output changed.
- Deprecated `:` revset operator dropped.
New Features
- `jj show` accepts `-T/--template`.
- `jj git fetch` accepts `-b` for `--branch`.
- `jj next/prev` infer `--edit`.
- `jj commit`/`diffedit` etc. accept `--tool=<NAME>`.
- `jj branch list` supports `--tracked`.
- Commands support `--context` flag.
Full Release Notes
### Breaking changes * The minimum supported Rust version (MSRV) is now 1.76.0. * The on-disk index format changed. New index files will be created automatically, but it can fail if the repository is co-located and predates Git GC issues [#815](https://github.com/martinvonz/jj/issues/815). If reindexing failed, you'll need to clean up corrupted operation history by `jj op abandon ..<bad operation ID>`. * Dropped support for the "legacy" graph-drawing style. Use "ascii" for a very similar result. * The default log output no longer lists all tagged heads. Set `revsets.log = "@ | ancestors(immutable_heads().., 2) | heads(immutable_heads())"` to restore the old behavior. * Dropped support for the deprecated `:` revset operator. Use `::` instead. * `jj rebase --skip-empty` no longer abandons commits that were already empty before the rebase. ### New features * Partial support for commit signing. Currently you can configure jj to "keep" commit signatures by making new ones for rewritten commits, and to sign new commits when they are created. This comes with out-of-the-box support for the following backends: * GnuPG * SSH Signature verification and an explicit sign command will hopefully come soon. * Templates now support logical operators: `||`, `&&`, `!` * Templates now support the `self` keyword, which is the current commit in `jj log`/`obslog` templates. * `jj show` now accepts `-T`/`--template` option to render its output using template * `jj config list` now accepts `-T`/`--template` option. * `jj git fetch` now accepts `-b` as a shorthand for `--branch`, making it more consistent with other commands that accept a branch * In the templating language, Timestamps now have a `.local()` method for converting to the local timezone. * `jj next/prev` now infer `--edit` when you're already editing a non-head commit (a commit with children). * A new built-in pager named `:builtin` is available on all platforms, implemented with [minus](https://github.com/arijit79/minus/) * Set config `ui.log-synthetic-elided-nodes = true` to make `jj log` include synthetic nodes in the graph where some revisions were elided ([#1252](https://github.com/martinvonz/jj/issues/1252), [#2971](https://github.com/martinvonz/jj/issues/2971)). This may become the default depending on feedback. * When creating a new workspace, the sparse patterns are now copied over from the current workspace. * `jj git init --colocate` can now import an existing Git repository. This is equivalent to `jj git init --git-repo=.`. * `jj git fetch` now automatically prints new remote branches and tags by default. * `--verbose/-v` is now `--debug` (no short option since it's not intended to be used often) * `jj move --from/--to` can now be abbreviated to `jj move -f/-t` * `jj commit`/`diffedit`/`move`/`resolve`/`split`/`squash`/`unsquash` now accept `--tool=<NAME>` option to override the default. [#2575](https://github.com/martinvonz/jj/issues/2575) * Added completions for [Nushell](https://nushell.sh) to `jj util completion` * `jj branch list` now supports a `--tracked/-t` option which can be used to show tracked branches only. Omits local Git-tracking branches by default. * Commands producing diffs now accept a `--context` flag for the number of lines of context to show. * `jj` commands with the `-T`/`--template` option now provide a hint containing defined template names when no argument is given, assisting the user in making a selection. ### Fixed bugs * On Windows, symlinks in the repo are now supported when Developer Mode is enabled. When symlink support is unavailable, they will be materialized as regular files in the working copy (instead of resulting in a crash). [#2](https://github.com/martinvonz/jj/issues/2) * On Windows, the `:builtin` pager is now used by default, rather than being disabled entirely. * Auto-rebase now preserves the shape of history even for merge commits where one parent is an ancestor of another. [#2600](https://github.com/martinvonz/jj/issues/2600) ### Contributors Thanks to the people who made this release happen! * Aleksey Kuznetsov (@zummenix) * Anton Bulakh (@necauqua) * Anton Älgmyr (@algmyr) * Austin Seipp (@thoughtpolice) * Benjamin Brittain (@benbrittain) * Benjamin Tan (@bnjmnt4n) * Daehyeok Mun (@daehyeok) * Daniel Ploch (@torquestomp) * Evan Mesterhazy (@emesterhazy) * gulbanana (@gulbanana) * Ilya Grigoriev (@ilyagr) * Jonathan Tan (@jonathantanmy) * Julien Vincent (@julienvincent) * jyn (@jyn514) * Martin von Zweigbergk (@martinvonz) * Paulo Coelho (@prscoelho) * Philip Metzger (@PhilipMetzger) * Poliorcetics (@poliorcetics) * Stephen Jennings (@jennings) * Vladimir (@0xdeafbeef) * Yuya Nishihara (@yuja)