|
1 | 1 | # Changelog
|
2 | 2 |
|
| 3 | +## [2.0.0] 2022-11-06 |
| 4 | + |
| 5 | +### Removed |
| 6 | +- `stg clone` is removed. Use `git clone` and `stg init` instead. |
| 7 | +- `stg mail` is replaced with `stg email format` and `stg email send`. |
| 8 | +- `stg refresh --spill` is replaced with dedicated `stg spill` command. |
| 9 | +- `stg edit` no longer accepts `-O/--diff-opts`. Custom diff options is |
| 10 | + in conflict with editable diffs since many (most?) diff options cause |
| 11 | + the diff to no long be applicable. |
| 12 | +- `stg files` no longer accepts `-O/--diff-opts`. This option was of |
| 13 | + marginal value since it only had a possible side effect when `--stat` |
| 14 | + was being used. |
| 15 | + |
| 16 | +### Added |
| 17 | +- `stg id` now accepts the `-b/--branch` option. |
| 18 | +- `stg completion` command provides runtime support for shell |
| 19 | + completions. |
| 20 | +- `stg completion bash` generates bash shell completion script. |
| 21 | +- `stg completion fish` generates fish shell completion script. |
| 22 | +- `stg completion zsh` outputs zsh shell completion script. |
| 23 | +- `stg completion list` shows StGit commands and aliases and is used at |
| 24 | + completion-time by shell completion scripts. |
| 25 | +- `stg completion man` generates man pages in asciidoc format. |
| 26 | +- `stg email format` wraps `git format-patch` and provides a mechanism |
| 27 | + to generate patch emails and optional cover letter in mbox format. |
| 28 | +- `stg email send` wraps `git send-email` and allows sending patch |
| 29 | + emails, either from files generated by `stg email format` or by |
| 30 | + specifying patches directly. |
| 31 | +- `stg new --refresh` allows a new patch to be refreshed with changes in |
| 32 | + one step. The `-i/--index`, `-F/--force`, `-s/--submodules`, and |
| 33 | + `--no-submodules` options from `stg refresh` are also available to |
| 34 | + `stg new` when using `-r/--refresh`. |
| 35 | +- `stg series` gains the `-i/--commit-id` option to display patches' |
| 36 | + commit ids. |
| 37 | +- `stg show` diff output can now be limited to certain paths by |
| 38 | + specifying path limits on the command line. |
| 39 | +- `stg spill` replaces `stg refresh --spill`. |
| 40 | +- `stg version` gains `-s/--short` flag to show shortened version info. |
| 41 | +- Added documentation for patch range syntax to stg(1) man page. |
| 42 | +- Added `install-all` target to top-level Makefile that installs the |
| 43 | + executable, man pages, html pages, and shell completions. |
| 44 | + |
| 45 | +### Changed |
| 46 | +- StGit is now implemented entirely in Rust instead of Python. |
| 47 | +- StGit is generally much faster; many commands are up to 4x faster. |
| 48 | + There was an emphasis on making informational commands such as `stg |
| 49 | + id`, `stg series`, and `stg top` as fast as possible to make their use |
| 50 | + in interactive contexts (shell prompts, IDE extensions) more |
| 51 | + comfortable. |
| 52 | +- StGit error messages have been updated; many have different, and |
| 53 | + hopefully better, wording. Error messages are also use color (when |
| 54 | + color is enabled). Scripts relying on exact error messages from StGit |
| 55 | + will need to be updated. |
| 56 | +- StGit output to stdout is generally more terse. Commands that change |
| 57 | + the stack such as `push`, `pop`, and `commit`, use sigils to denote |
| 58 | + the changes made to the stack. E.g. `stg commit p0..p3` will output `$ |
| 59 | + p0..p3` where the "$" sigil means that a patch, or patch range, has |
| 60 | + been committed. These are all the currently used stack change sigils: |
| 61 | + - `+` patch was pushed |
| 62 | + - `-` patch was popped |
| 63 | + - `>` patch became the current topmost patch |
| 64 | + - `&` patch was updated |
| 65 | + - `$` patch was committed |
| 66 | + - `#` patch was deleted |
| 67 | + - `@` patch was rolled-back |
| 68 | + - `!` patch was hidden |
| 69 | +- StGit aliases are now more like Git aliases. Normal aliases refer to |
| 70 | + StGit subcommands, but aliases prefixed with '!' are shell aliases |
| 71 | + that may run arbitrary commands. An example normal alias would be `git |
| 72 | + config stgit.alias.list 'series --description --empty'`. An example |
| 73 | + shell alias would be `git config stgit.alias.st '!git status |
| 74 | + --short'`. |
| 75 | +- Commands such as `stg goto`, `stg push`, and `stg pop` now require |
| 76 | + full/correct patch names on the command line and no longer accept |
| 77 | + unambiguous patch name prefixes. When an inexact patch name is |
| 78 | + provided on the command line, the error message will now suggest |
| 79 | + similar valid patch names. |
| 80 | +- Additional template search paths were added. In addition to looking |
| 81 | + for template files in .git/, also look in |
| 82 | + `$XDG_CONFIG_HOME/stgit/templates/` and `$HOME/.stgit/templates`. This |
| 83 | + search strategy is consistent with how git looks for the global config |
| 84 | + file. |
| 85 | +- The new `--signoff` patch edit option supercedes the deprecated |
| 86 | + `--sign` and `--sign-by` options. `--signoff` without its optional |
| 87 | + value does the same thing as `--sign`, while `--signoff=<value>` does |
| 88 | + the same thing as `--sign-by=<value>`. |
| 89 | +- The `--ack` and `--review` patch edit options now optionally take a |
| 90 | + value. The `--ack-by` and `--review-by` options are deprecated. |
| 91 | +- `stg branch` output is now generally less verbose. |
| 92 | +- `stg branch --describe` replaces `stg branch --description`. The |
| 93 | + `--description` subcommand remains supported as a hidden alias to |
| 94 | + `--describe`, but the description string must now be provided as its |
| 95 | + own argument; i.e. `--description="description string"` is no longer |
| 96 | + supported. |
| 97 | +- `stg branch --list` now produces colorized output. The `--color` |
| 98 | + option or `NO_COLOR` environment variable may be used to affect this |
| 99 | + behavior. |
| 100 | +- `stg branch --rename` now supports renaming regular git branches in |
| 101 | + addition to StGit-enabled branches. |
| 102 | +- `stg clean` now uses `-A` and `-U` short options for `--applied` and |
| 103 | + `--unapplied` instead of `-a` and `-u`. This is done for consistency |
| 104 | + with `stg series` and `stg show`. |
| 105 | +- `stg import` now only recognizes compressed patches by their file |
| 106 | + extension (`.bz2` or `.gz`) and no longer proactively attempts to |
| 107 | + decompress using all known decompressors. |
| 108 | +- `stg import` support for compressed input files is selectable at |
| 109 | + compile time using the `import-compressed` feature. |
| 110 | +- `stg import` support for importing from a URL is selectable at compile |
| 111 | + time using the `import-url` feature. **N.B.** there is a measurable |
| 112 | + runtime performance impact of building with `import-url` due to the |
| 113 | + unconditional, pre-main initialization of `curl` which affects **all** |
| 114 | + `stg` commands. |
| 115 | +- `stg log` now colorizes output by default. The `--color` option or |
| 116 | + `NO_COLOR` environment variable may be used to affect this behavior. |
| 117 | +- `stgit.new.verbose` changed to `stgit.edit.verbose` and now also |
| 118 | + affects edit behavior for `edit`, `refresh`, and `squash` along with |
| 119 | + `new`. |
| 120 | +- `stg new` now accepts `-e/--edit` and `-d/--diff` instead of |
| 121 | + `-v/--verbose` |
| 122 | +- `stg pick` now allows a mix of commits and patches to be picked |
| 123 | + whereas previously only a single commit xor multiple patches could be |
| 124 | + picked. |
| 125 | +- `stg pick` now performs a single stack transaction for all the picked |
| 126 | + patches/commits instead of one transaction per pick. |
| 127 | +- `stg push` now attempts to perform three-way merges, which may improve |
| 128 | + conflict resolution in some cases. This feature is enabled by default |
| 129 | + when git >= 2.32.0 is detected. |
| 130 | +- `stg rebase --interactive` the "squash" and "fixup" instructions may |
| 131 | + no longer be applied to the first patch in the instruction list. The |
| 132 | + stated semantics of both "squash" and "fixup" is that they squash the |
| 133 | + labeled patch with the preceding patch, which is not possible/valid |
| 134 | + when there is no preceding patch. |
| 135 | +- `stg refresh` no longer has a `--spill` flag. Use `stg spill` instead. |
| 136 | +- `stg series` has updated colorized output. |
| 137 | +- `stg series` now requires patch range arguments to be both in-order |
| 138 | + and contiguous. Constraining patch ranges in this manner ensures that |
| 139 | + the output from `stg series` is always a valid/correct view of a |
| 140 | + subset of the series. |
| 141 | +- `stg show` diff output respects the `--color` option. |
| 142 | +- `stg squash` now allows the full suite of patch edit options, |
| 143 | + including `-d/--diff`. Previously only a few message-related options |
| 144 | + were available. |
| 145 | +- `stg version` now displays copyright and license statements. |
| 146 | + |
| 147 | +### Fixed |
| 148 | + |
| 149 | +- `stg branch --create` inherits the current branch's remote branch |
| 150 | + configuration, if available. The Python implementation had an apparent |
| 151 | + bug that prevented inheriting the remote branch configuration when |
| 152 | + creating from the current branch. |
| 153 | +- Avoid case insensitive patch name collisions. On operating systems |
| 154 | + with case-insensitive paths, patch names that only differ by case lead |
| 155 | + to patch reference collisions. StGit now ensures that patch names are |
| 156 | + distinct under case insensitive comparisions. |
| 157 | +- `stg pull` and `stg rebase` record updated stack state instead of |
| 158 | + deferring until the next stack-modifying command to do so. |
| 159 | + |
| 160 | +### Changed since 2.0.0-rc.2 |
| 161 | + |
| 162 | +#### Changed |
| 163 | +- chore: Update Cargo.lock |
| 164 | + |
| 165 | +#### Fixed |
| 166 | +- fix(zsh): Repair broken completion of --git-opt |
| 167 | +- fix(zsh): Add missing `stg email send --branch` |
| 168 | +- fix(email): Send using --branch option |
| 169 | +- fix: Avoid duplicate signoff with stgit.autosign |
| 170 | +- fix: Do not use 3way for merged checks |
| 171 | + |
| 172 | + |
3 | 173 | ## [2.0.0-rc.2] 2022-10-23
|
4 | 174 |
|
5 | 175 | ### Changed
|
|
0 commit comments