Skip to content

Releases: stacked-git/stgit

Stacked Git 2.2.4

15 May 14:21
v2.2.4
24f14bd
Compare
Choose a tag to compare

StGit regained the ability to upgrade from stacks created by very old versions of StGit. This includes, for example, stacks created with StGit
v0.19 which is (unfortunately) what is still shipped by Debian/Ubuntu and their derivatives.

Also included are fixes for regressions affecting branch creation and patch import.

Added

  • feat: Upgrade from ancient stack state formats (#235)

Fixed

  • fix(branch): create based on remote branch (#317)
  • fix(import): lost subject lines resembling header (#321)
  • fix(import): subject line may be discarded

Changed

  • chore: update dependencies

Stacked Git 2.2.3

27 Apr 00:31
v2.2.3
d5d04c9
Compare
Choose a tag to compare

StGit is repaired to work on Windows once more.

Fixed

  • fix: error using on Windows (#273)
  • fix: path handling for Windows compatibility
  • fix: commit-msg hook run from work root
  • fix: avoid "stg.exe" in usage on Windows
  • fix: use gitattributes to force LF endings on Windows
  • fix: wrap hooks with sh on Windows

Changed

  • chore: update to gix 0.44.0
  • chore: update other dependencies

Stacked Git 2.2.2

01 Apr 14:10
v2.2.2
bd68beb
Compare
Choose a tag to compare

Fixed

  • fix: rebase with '@' in ref names (#306)
  • fix: improved error messages for unrecognized commands

Stacked Git 2.2.1

29 Mar 15:14
v2.2.1
f990a1d
Compare
Choose a tag to compare

This bugfix release addresses regressions with running StGit in linked worktrees and with hooks not working when running from a subdirectory of the work dir. Several other minor issues are also repaired.

Changed

  • chore: update to clap 4.2.0
  • chore: update to gix 0.43.0
  • chore: pin clap minor version

Fixed

  • fix(branch): allow reuse of partially deleted branch names (#290)
  • fix(branch): branch list alignment
  • fix: running hooks from worktree subdir (#295)
  • fix: running from linked worktree (#297)
  • fix(float): correct -S in usage string
  • fix: correctly show bold command/subcommand in overidden usage

Stacked Git 2.2.0

24 Feb 23:33
v2.2.0
327d1db
Compare
Choose a tag to compare

This release contains several quality of life features, including new options for specifying patches and branches on the command line. And improved performance.

Patch Locator Syntax

In addition to being able to specify patches by name, StGit now supports several new alternatives for specifying patches:

  • By relative offset from the topmost patch, e.g. -1, +3, or ~2.
  • By their absolute index in the stack, e.g. 0 or 12.
  • By offset from another patch, e.g. some-patch~ or some-patch+2.
  • By relative offset from the last visible patch, e.g. ^ or ^2.

The new patch locator syntax is detailed in the stg man page.

New Options for stg series

To complement the new patch locator syntax, new -O/--offsets and -I/--indices options display each patch's relative offset from top and absolute index, respectively.

The new -r/--reverse option allows the stack to be shown top-side up. This may produce a more intuitive view of the stack for some StGit users. Consider adding a stack alias using this option, for example with git config --global stgit.alias.stack 'series -rOP'.

Speaking of aliases, now each of the "Display Options" for stg series have a --no-xxx variant. These can be helpful for masking options used in series aliases. For example, the stack offset suggested above could be run as stg stack --no-offsets to disable display of offsets.

Finally, the --short option now takes an optional integer value to specify the number of patches to show.

Branch Locators

StGit now supports specifying a branch using the same @{-<n>} syntax supported by git. This enables, for example, switching to the previously checked-out branch with stg branch @{-1} or just stg branch - (where - is synonymous with @{-1}).

Command Line Options

The --signoff option now has a short variant -s. This is a breaking change. The --submodules no longer has a -s short option. Similarly, the --series options for stg import, stg float, and stg sync now use -S instead of -s for their short variants.

Gitoxide

StGit now uses Gitoxide (gix crate) instead of libgit2 (git2 crate) as its git access library. In addition to being a pure-Rust dependency, gitoxide has considerably less startup overhead (4x) than git2. This has a big impact on the latency of StGit commands.

Removed

  • feat!: remove short -s option for --submodules
  • fix!: patch name cannot be {base} or @

Added

  • feat: patch locator syntax
  • feat: locate branches using @{-N} syntax
  • feat(series): Add --reverse option
  • feat(series): options for patch offsets and indices
  • feat(series): --no-xxx options to override display options
  • feat(series): optional value for --short
  • feat!: short -s option for --signoff (#245)
  • feat(init): add -b/--branch option

Changed

  • fix!: use -S as short opt for --series
  • feat!: constrain refresh -p to visible patches
  • feat(series)!: empty patch prefix changed to *
  • feat!: spell errors in lowercase
  • refactor: use gitoxide instead of git2
  • refactor: use time crate instead of chrono
  • feat!: update to clap 4.1
  • chore: update to latest dependencies

Fixed

  • fix: Error if author or committer is not configured
  • fix: Use correct base directory for core.hooksPaths
  • fix(rename): colliding patch names
  • fix(rebase): repair rebasing to a tag (#265)
  • fix(branch): switch branch with detached head
  • docs: Repair docstrings being confused as html
  • docs: normalized spelling for --branch value

Stacked Git 2.1.0

12 Dec 16:42
v2.1.0
35a9822
Compare
Choose a tag to compare

This minor release introduces several long-awaited features, including some potentially breaking changes.

The main breaking feature is relaxed stack initialization. Instead of needing to explicitly initialize a StGit stack on a branch, patch creating commands such as stg new and stg import will automatically initialize the stack, if needed. Most other commands that previously required an initialized stack will now operate as if there is an empty stack if the stack is not yet initialized.

Another potentially breaking change is that the stgit.gpgsign configuration variable is now independent of commit.gpgsign. I.e. to have signed stack metadata commits, stgit.gpgsign must be set to true.

Added

  • feat: Configurable push conflict policy (#60)
  • feat: Add --committer-date-is-author-date option (#47)
  • feat(import): Add --3way option (#36)
  • feat(import): Add --directory option (#36)

Changed

  • feat!: Relaxed stack initialization (#238)
  • feat!: Only sign stack based on stgit.gpgsign (#238)
  • fix!: Allow "---" separator in messages (#243)
  • feat: More descriptive push conflict message (#60)
  • feat: Avoid post-edit commits when no change
  • chore: Update dependencies to latest versions

Fixed

  • fix: Improved error message for uninitialized stack
  • fix: Improve error for re-initialization attempt
  • fix(prev): Different error message for empty stack
  • fix: Accept full ref name for branches
  • fix(zsh): Complete --edit and --diff for stg new

Stacked Git 2.0.4

30 Nov 16:14
v2.0.4
23c865d
Compare
Choose a tag to compare

This release makes some repairs to aliases, including documenting aliases along with all other StGit configuration variables.

Changed

  • docs: Document configuration variables
  • refactor: Use is-terminal instead of atty
  • chore: Update Cargo.lock with latest dependencies.

Fixed

  • fix: Don't generate new patch name until after edit (#239)
  • fix: Run shell aliases from top-level of work tree
  • fix: Use GIT_PREFIX in built-in aliases

Stacked Git 2.0.3

21 Nov 05:29
v2.0.3
ad1c46c
Compare
Choose a tag to compare

This release includes a few minor bug fixes and lots of spelling corrections.

Changed

  • chore: Update Cargo.lock with latest dependencies.

Fixed

  • fix: improved git version parsing on MacOS
  • fix: StGit-specific branch config handling
  • docs: fixed many typos

Stacked Git 2.0.2

17 Nov 17:04
v2.0.2
7c0fb79
Compare
Choose a tag to compare

This release further improves support for sparse checkout with partial clone and worktrees. A few documentation improvements are also included.

Changed

  • chore: Update Cargo.lock with latest dependencies.
  • docs(init): Add long help for stg init (#233).

Added

  • feat: Enable basic support for extensions.worktreeconfig to unblock sparse checkout with partial clone (#195).

Fixed

  • docs: More inter-command links
  • docs: Normalize quoting

Stacked Git 2.0.1

08 Nov 03:55
v2.0.1
d9e2ce9
Compare
Choose a tag to compare

This bugfix release addresses pathological documentation build performance issues that should improve the downstream packaging experience.

Changed

  • chore: Update to clap 4.0.22

Fixed

  • docs(readme): Clarify static versus dynamic linking (#230)
  • build: Improve Documentation build performance (#229)