Skip to content

Commit f75dfb5

Browse files
authored
Release v0.18.0 (#874)
1 parent 73b4af6 commit f75dfb5

17 files changed

+148
-57
lines changed

.changes/unreleased/Added-20250828-162630.yaml

Lines changed: 0 additions & 3 deletions
This file was deleted.

.changes/unreleased/Added-20250831-162843.yaml

Lines changed: 0 additions & 9 deletions
This file was deleted.

.changes/unreleased/Added-20250914-095715.yaml

Lines changed: 0 additions & 3 deletions
This file was deleted.

.changes/unreleased/Added-20250914-184828.yaml

Lines changed: 0 additions & 3 deletions
This file was deleted.

.changes/unreleased/Added-20250918-160314.yaml

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changes/unreleased/Changed-20250824-204137.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.

.changes/unreleased/Changed-20250829-213725.yaml

Lines changed: 0 additions & 7 deletions
This file was deleted.

.changes/unreleased/Fixed-20250915-194553.yaml

Lines changed: 0 additions & 6 deletions
This file was deleted.

.changes/unreleased/Removed-20250901-131811.yaml

Lines changed: 0 additions & 6 deletions
This file was deleted.

.changes/v0.18.0.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
## <a name="v0.18.0">v0.18.0</a> - 2025-09-25
2+
3+
A couple highlights from this release:
4+
5+
- *News for macOS users*:
6+
If you installed git-spice from the official Tap
7+
(`brew install abhinav/tap/git-spice`),
8+
you'll need to switch to the Cask version of the package
9+
as the Formula version is being deprecated.
10+
11+
```bash
12+
brew uninstall abhinav/tap/git-spice
13+
brew install --cask abhinav/tap/git-spice
14+
```
15+
16+
If you installed git-spice from homebrew-core (`brew install git-spice`),
17+
you can ignore this message.
18+
19+
For context: Homebrew supports Formulae and Casks.
20+
Formulae are typically built from source.
21+
git-spice's Homebrew Tap previously published git-spice as a Formula,
22+
but it distributed pre-built binaries instead of source code.
23+
We're switching to publishing a Cask to more accurately reflect
24+
what's being distributed.
25+
26+
- git-spice now supports an experimental new command: `gs commit fixup`.
27+
It is able to amend any commit in the current branch or any downstack branch.
28+
Think `git commit --amend`, but fully stack-aware.
29+
30+
![demo of gs commit fixup](https://media.githubusercontent.com/media/abhinav/git-spice/refs/heads/main/doc/tapes/20250924-commit-fixup.gif)
31+
32+
As the feature is experimental, you must opt into it to access it by running:
33+
34+
```bash
35+
git config spice.experiment.commitFixup true # enable for this repository
36+
git config --global spice.experiment.commitFixup true # enable globally
37+
```
38+
39+
If you use it, please feedback and issues about the experimental feature at
40+
https://github.com/abhinav/git-spice/discussions/867.
41+
42+
- We've addressed a long-standing limitation of `gs branch split`:
43+
it was previously unable to move the branch being split down to another commit.
44+
Suppose if the branch being split--say 'penguin'--has two commits:
45+
(a) Invent penguins, and (b) Refactor pangolin, and the branch head points to commit (b).
46+
Previously, `gs branch split` would not let you use the name 'penguin' for commit (a),
47+
as it was already attached to commit (b).
48+
49+
This limitation has now been resolved: you can now move 'penguin' down to commit (a),
50+
and create a new branch 'pangolin' for commit (b).
51+
52+
![demo of gs branch split re-using a branch name](https://media.githubusercontent.com/media/abhinav/git-spice/refs/heads/main/doc/tapes/20250924-branch-split-reuse-name.gif)
53+
54+
- `gs log long` (`gs ll`) and `gs log short` (`gs ls`) both now support a `--json` flag.
55+
When used, they print all available information as JSON to stdout.
56+
You can consume this output with tools like [jq](https://jqlang.org) to implement custom automations using information from git-spice.
57+
58+
### Added
59+
- branch checkout/delete/onto: Include CR numbers in prompt visualization, and allow searching and filtering by CR identifiers.
60+
- Experimental 'gs branch fixup' command that acts like 'git commit --amend' for any downstack commit. It will commit staged changes to a downstack commit, and automatically rebase the rest of the stack on top of it. See <https://abhinav.github.io/git-spice/cli/experiments> for instructions on enabling this experimental feature.
61+
- log {long, short}: Add --json flag. This prints information about tracked branches to stdout as a stream of JSON objects.
62+
- log {long, short}: Add -S/--cr-status flag to request the statuses of change requests that have been published.
63+
### Changed
64+
- branch split: Allow reusing original branch name for intermediate commits during split.
65+
- Homebrew Tap now publishes the package as a Cask. If you previously installed with `brew install abhinav/tap/git-spice`, switch to the cask with `brew install --cask abhinav/tap/git-spice`. You can ignore this if you installed from homebrew-core (`brew install git-spice`).
66+
- gitlab: Submit Merge Requests with `remove_source_branch=true`. This will delete the source branch when the MR is merged. Opt out of this behavior with the `spice.forge.gitlab.removeSourceBranch` option.
67+
### Removed
68+
- commit amend: Delete -n flag that was deprecated in favor of --no-edit in v0.10.0 (2025-01-02). If you need a short way to use this flag, try defining a custom shorthand.
69+
### Fixed
70+
- repo restack: Autostash dirty changes in the working tree before the operation. Previously, the changes wouldn't be stashed until checking out the first branch, an operation which might fail because of other conflicts.

0 commit comments

Comments
 (0)