Preserve picked patch name when possible
[stgit.git] / CHANGELOG.md
blob609e0db618bc109ac55fb56b48abecfbe6a81461
1 # Changelog
3 ## [1.4] 2021-10-27
5 ### Removed
6 - Python 3.5, which became EOL 2020-09-13, support is deprecated and
7   will be removed in a future StGit release
8 - Python 3.6, which will be EOL 2021-12-23, support is deprecated and
9   will be removed in a future StGit release
11 ### Added
12 - The new `stg import --message-id` option causes the Message-ID from
13   imported emails to be included as the Message-Id trailer in the patch
14   description (#42)
15 - The new 'stgit.import.message-id' config option also enables the
16   Message-Id trailer (#42)
18 ### Changed
19 - `stg import` no longer creates "Message-Id" trailer by default when
20   importing patches from email (#42)
21 - StGit works with Python 3.10
22 - `stg version` prints a more abbreviated Python version
23 - `stg commit` will no longer commit empty patches by default; the
24   `--allow-empty` option may be used to override this behavior (#158)
25 - The `stgit.main.main()` function now takes an argv parameter and
26   returns an int return code in most cases instead of calling
27   sys.exit(), thus making main() a bit easier to use as an API.
29 ### Fixed
30 - Repair stack upgrade with `stg branch --list` (#155)
31 - Repair crash in `stg squash` with out of order patches and no name
32   specified (#157)
33 - Zsh completions learn `stg float --noapply` option
34 - Zsh completion for `stg sink` now allows multiple patches
37 ## [1.3] 2021-09-26
39 ### Removed
41 ### Added
43 ### Changed
45 ### Fixed
46 - Repair crash regression when using `stgit.autosign`
48 ## [1.2] 2021-09-26
50 ### Removed
52 ### Deprecated
53 - Python 3.5, which became EOL 2020-09-13, support is deprecated and
54   will be removed in a future StGit release
55 - Python 3.6, which will be EOL 2021-12-23, support is deprecated and
56   will be removed in a future StGit release
58 ### Added
59 - `stg rebase ` learns `--interactive`; easily re-order, edit, squash,
60   fixup, or delete patches via your editor
61 - `stg rebase` learns `--autostash`; stash changes before the rebase and
62   apply them after. Also configurable with the `stgit.autostash`
63   configuration option
64 - `stg edit` can now rename patches (#119)
65 - `stg edit` gains helpful instructions (#138)
66 - `stg new` learns `--verbose`, which includes a diff in the editor
67   window (similar to `git commit --verbose`). This behavior is also
68   configurable with the `stgit.new.verbose` configuration option
69 - `stg push` and `stg float` learn `--noapply` option; allows patches
70   to be reordered without updating worktree and deferring merge conflict
71   resolution (#144)
72 - `stg edit`, `stg refresh`, and `stg new` learn the `--sign-by`,
73   `--ack-by`, and `--review-by` options which allow those respective
74   trailers' values to be specified by the user on the command line (#92)
76 ### Changed
77 - Stack metadata version 5; stack metadata is moved from
78   `refs/heads/<branch>.stgit` to `refs/stacks/<branch>` and the stack
79   metadata file now uses a JSON format instead of the prior custom
80   format; the stack metadata will be upgraded to v5 on first use of
81   this version of StGit; like all stack metadata upgrades, **this is a
82   one-way auto-upgrade for existing stacks** (#65)
83 - Use setuptools instead of distutils for packaging
84 - No git or python version checks in setup.py
85 - Use different dynamic versioning system
86 - Install `stg` executable as console_script entry point
87 - More sophisticated search for bash.exe on Windows when running hooks
88 - The editor window text for `stg squash` has been modified to mirror
89   git's behavior -- the squash edit message now includes all commits
90   (#71)
91 - Binary diffs are no longer shown when with `stg edit -d`
92 - Multiple trailers can now be added at once; this is now allowed, for
93   example: `stg edit --sign --review --ack`
94 - Update zsh completion for `stg rebase` to show local and remote heads
95   (#102)
96 - Zsh completions for commands with patch arguments now comprehend the
97   effect of `-b/--branch` and `-B/--ref-branch`
98 - Zsh completions now guard patch names--one less TAB press to complete
99   patch names in certain contexts
100 - `stg import` now extracts the `Message-ID` email header into the patch
101   message (#42)
103 ### Fixed
104 - Repair crash when attempting to export empty patch (#112)
105 - Exact command name matches are unambiguous (#110)
106 - Exiting with an empty `stg edit` editor will now abort the edit;
107   previously it would delete your commit message. (#138)
108 - Repair completions when stg.series.description is enabled in config
109 - Workaround child process reaping race on Windows (#78)
110 - Repair crash with `stg float --series` when bad patch name in series
111 - Repair zsh completion for `stg float` to accept multiple patch names
112 - Repair zsh completion for changed files, affecting `stg refresh` and
113   `stg diff`
115 ### Internal
116 - Add link to coverage.io project to CONTRIBUTING.md
117 - Set smart `exclude_lines` default for 'coverage'
118 - Expanded test suite for `stg edit`
119 - Add pkgtest.py script to help test StGit packaging
120 - Cleanup .gitignore files
123 ## [1.1] 2021-04-30
125 ### Removed
127 ### Added
128 - StGit GPG-signs patches when `commit.gpgsign` is set (#12)
129 - Support `core.hooksPath` in git config
130 - Add `-C` option for `stg import` and `stg fold` (#18)
132 ### Changed
133 - Allow importing mail and series from urls (#94)
134 - `stg refresh --edit` may also use `--diff` and `--diff-opts` (#98)
135 - `stg goto` allows sha1 of a patch instead of patch name (#93)
137 ### Fixed
138 - Repair hang in `stg pull -m`, `stg goto -m`, and `stg push -m`
139 - Repair `stg mail` to show diffstat of whole series (#104)
140 - Repair MANIFEST.in to include AUTHORS.md and README.md files
143 ## [1.0] 2021-02-07
145 ### Removed
146 - Drop support for Python < 3.5
147 - Remove previously deprecated `stg publish` command
148 - Removed contrib scripts: `stg-swallow`, `stg-fold-files-from`,
149   `stg-dispatch`, `stg-whatchanged`, and `stg-show-old`
151 ### Added
152 - The pre-commit hook is now run for `stg refresh`
153 - New `--spill` option for `stg refresh`
154 - Add stgit.series.description config option (#88)
155 - Official support for Python versions up to 3.9
157 ### Changed
158 - Stack metadata format 4. All metadata now kept in Git objects; no more
159   stack state files in .git/patches. **A one-way auto-upgrade to format
160   version 4 will occur when StGit commands are run on an existing StGit
161   branch.**
162 - Use `python3` in shebangs instead of `python`
163 - `contrib/stgbashprompt.sh` is no longer executable
164 - Internal docstrings now use reStructuredText instead of Epytext
166 ### Fixed
167 - Importing large patches is much, much faster (#66)
168 - Other performance improvements when dealing with large patches
169 - Repair diffstat when outside work tree root (#62)
170 - Use encoded (string) environment variables on Windows (#79)
171 - Fix `stg pull` when no upstream is configured (#83)
172 - Fix `refresh` crash with path limiting and files added to index (#85)
173 - Repair `new` with patchdescr.template crash (#87)
174 - Repair `log` from worktree subdir with patches specified
175 - Repair `import` allowing/generating duplicate patch names (#64)
176 - Repair `mail --auto` to strip comments after addrs (#91)
179 ## [0.23] 2020-06-12
181 ### Removed
182 - Drop support for Python 3.3; Python 2 (2.6 and 2.7) remain
183   deprecated, but supported for one last release
184 - Tutorial is removed; it now exists as part of the website
186 ### Deprecated
187 - Python 2.x support is deprecated and will be removed in a future
188   release
190 ### Added
191 - Support html5 output of docs from asciidoc
192 - Add `--expose` option for `stg pick` to allow picked commit message to
193   be customized
195 ### Changed
196 - Limit mail diffstat to 72 columns
197 - Added pyproject.toml file for black configuration
198 - Minimum Git version is 2.2.0
199 - Quote stg and subcommand in man page synopsis
200 - Replaced RELEASENOTES with this CHANGELOG.md
201 - Replaces Documentation/SubmittingPatches with CONTRIBUTING.md
203 ### Fixed
204 - Repair MANIFEST.in and generated source dist
205 - Repair importing mail with ": " (colon space) in subject
206 - Fix mail cover letter shortlog
207 - Fix mail cover letter diffstat
208 - `stg series` now only outputs colors when `isatty()`
209 - Repair mail SSL check (#57)
210 - Repair `stg mail` with both `-a` and `-e` options (#58)
211 - Remove empty short-opt for `--no-submodules` of `stg refresh`
212 - Repair build.py for Python 2 with explicit `flush()`
213 - `stgit.refreshsubmodules` added to sample gitconfig
215 ### Internal
216 - Update docs build system from upstream Git docs
217 - Use coverage contexts to map commands to covered lines
218 - Improve mail tests
219 - Use GitHub Actions instead of TravisCI
220 - Format StGit source using black formatter
222 ## [0.22] - 2020-03-02
224 ### Removed
225 - Remove debian packaging; downstream Debian uses its own anyway
227 ### Deprecated
228 - Python 2.x support is deprecated and will be removed in the next StGit
229   release
230 - `stg publish` is deprecated and will be removed in the next StGit
231   release
233 ### Added
234 - `stg import` has new --keep-cr option, like `git mailsplit`
236 ### Changed
237 - `stg new` now includes patch name in log message
238 - `stg branch --rename` can now rename the current branch
239 - `stg branch --create` now works even if the workspace is dirty,
240   consistent with `git checkout`
241 - `stg branch --description` now works on both regular and stgit
242   branches
243 - `stg edit --diff` now implies `--edit`
244 - `stg refresh` and `stg edit` now reset the committer information,
245   consistent with `stg push`
246 - git notes are now preserved when patches are modified
247 - Tutorial improvements
248 - Many additional tests and test improvements
249 - All stgit commands now use "new" git library infrastructure
251 ### Fixed
252 - `stg branch --create` inherits remote correctly from parent commitish
253 - Patch names are checked earlier to avoid inconsistent stack states
254 - Improved commit data parsing and handling of non-UTF8 encodings
255 - Repair git error messages when checking stgit version from outside a
256   git repo
259 ## [0.21] - 2019-10-28
261 ### Changed
262 - Faster handling of large patches (#44)
264 ### Fixed
265 - Build reproducibility repairs (Thanks reproducible-builds.org team!)
266 - Python can now be run with optimizations (`python -O`)
267 - `stg log` now prints trailing newline
268 - Improved command line option parsing for `stg log`
271 ## [0.20] - 2019-10-04
273 ### Added
274 - `stg patches -d` can now output colored diffs.
275 - `stg publish --overwrite` allows branch to be overwritten instead of
276   creating new commits.
277 - `stg log --clear` deletes the stack's log history. Use with caution.
278 - Fish shell completions for stg.
279 - Zsh completions for stg.
280 - `stg mail --domain` option overrides the host's domain in the message
281   ID.
283 ### Changed
284 - Branch protection metadata now captured in config instead of
285   .git/patches/<branch>protect file. This updates stgit's metadata
286   format from v2 to v3.
287 - `stg diff` no longer shows binary diffs by default. Use `-O--binary`
288   or add `--binary` to stgit.diff-opts in config.
289 - Diagnostic output is now routed to stderr instead of stdout.
290   Diagnostic output is also now sent to stderr unconditionally, i.e. no
291   more isatty() test (#35).
292 - Converted to "new" lib infrastructure: `show`, `patches`, `diff`,
293   `pick`, `pull`, `rebase`, and `fold`.
295 ### Fixed
296 - `stg show` detects conflicting --applied and --unapplied options.
297 - `stg show --stat` now shows commit headers.
298 - `stg patches --diff` now shows proper diff instead of `b'...'` repr of
299   diff.
300 - `stg diff --range` detects some invalid values (e.g. `-r ..`).
301 - Date parsing is now more portable, only use platform specific `date`
302   as last parsing option. Affects, e.g., `stg refresh --authdate`.
303 - Repaired seach path for templates to avoid looking in Python
304   site-packages directory.
305 - Ensure stdout and stderr are flushed. Rarely affected `stg diff`.
306 - `stg repair` will now fail if extra command line arguments are
307   provided.
308 - Bash completions are now generated in a reproducible manner.
309 - `stg edit --diff` on an empty patch no longer crashes.
310 - `stg pick` no longer fails when picked commit has empty message (#39).
311 - `stg rebase` no longer crashes when there are conflicts (#34).
312 - `stg pick` no longer crashes if --name is not provided when picking a
313   regular commit object.
314 - Improved test coverage for: branch, diff, pick, sync,
315 - New tests for: files, patches, fold, series
316 - Portable use of iconv, sort, and sed in tests.
317 - Linting using flake8 and isort.
318 - All Python code now conforms to PEP-8.
319 - Updated test infrastructure from git 2.20.
320 - Parallel tests with coverage (`make -j4 coverage`) now works.
321 - Documentation build is not included in code coverage.
322 - Repaired log end messages when using `STGIT_SUBPROCESS_LOG=debug`.
323 - Renamed "dunder" instance attributes to improve debugging.
324 - Fail faster when patch name has slash ('/') (#24).
327 ## [0.19] 2018-11-05
329 ### Changed
330 - Python 3 support. StGit supports Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6,
331   and 3.7. PyPy interpreters are also supported.
332 - Submodules are now ignored when checking if working tree is clean.
333   Submodules are also not included by default when refreshing a patch.
334 - Config booleans are now parsed similarly to git-config.
335 - `contrib/stgit.el` is now licenced with GPLv2.
336 - Add continuous integration (travis-ci) and code coverage (coveralls)
337   support.
338 - Many new test cases were added.
340 ### Fixed
341 - Repair handling of emails with utf-8 bodies containing latin-1
342   characters. Also correctly decode email headers containing quoted
343   encoded words.
344 - StGit's version is now correct/available in the release archive.
347 ## [0.18] 2017-08-14
349 ### Added
350 - `commit-msg` hook support for easier integration with Gerrit, allowing
351   a Change-Id line to be inserted in the commit message
352 - `stg mail` improvements for 'Suggested-by:' tag and auto generation of
353   Cc for the cover letter based on all tags in the series
354 - `stg mail` bash completion for the --to, --cc and --bcc options based
355   on the content of the [mail "alias"] section of Git configuration
356 - `stg edit --review` option to add a 'Reviewed-by:' tag
357 - `stg pop --spill` functionality to allow popping a patch from the
358   stack while keeping its modification in the tree
360 ### Changed
361 - Project page details updated (gna.org has been shut down)
363 ### Fixed
364 - Various fixes and test coverage improvements
367 ## [0.17.1] 2013-09-30
369 ### Changed
370 - Test suite improvements.
371 - Print tracebacks to stderr.
372 - Run test suite in parallel.
374 ### Fixed
375 - Fix dirty index errors when resolving conflicts.
376 - Fix --authdate date parsing.
379 ## [0.17] 2013-06-27
381 ### Added
382 - `stg delete --top` option for deleting the top patch.
383 - `stg branch --merge` option for merging the work tree changes into the
384   other branch.
385 - Support for sending patches both as attachment and inline.
387 ### Changed
388 - `stg mail` no longer filters explicitly added `--cc` sender address.
389 - `stg refresh` warns when index is dirty.
391 ### Fixed
392 - Fix for parsing the commit header correctly.
393 - Several `stgit.el` (Emacs mode) improvements.
394 - Fix `stg status --reset` error messages.
395 - HTML documentation fix.
396 - Email template fixes.
399 ## [0.16] 2012-01-09
401 ### Added
402 - UI adjustments to better match the Git commands.
403   - `stg status` is an alias for `git status`.
404   - `stg reset --hard` behaves similarly to the corresponding git
405     command and option.
406 - `stg branch --cleanup` option to remove the StGit metadata for a
407   given branch.
408 - `stg mail` can use `git send-email` directly.
409 - Vim syntax highlighting for StGit commit messages.
411 ### Fixed
412 - Several improvements to the Emacs mode (stgit.el).
413 - Many bug-fixes.
416 ## [0.15] 2009-10-24
418 ### Removed
419 - The commands "stg add", "stg rm", "stg cp", and "stg resolved" were
420   removed, since there are corresponding Git equivalents.
422 ### Added
423 - New core infrastructure for repository operations, including:
424   - Infinite undo/redo operations and corresponding commands.
425   - Automatic rollback of changes following a failed operation (using
426     transactions)---this ensures that StGit commands either succeed or
427     do nothing. Previously, every commands had its own ad hoc
428     implementation of this.
429 - Some commands were added, including
430   - `stg squash`, for combining two or more patches into one.
431   - `stg publish`, for maintaining merge-friendly branches (which are
432     not rebased).
433   - `stg prev/next` for printing the name of the previous or next patch
434     in the series.
435 - The `stg import` and `stg fold` commands support the `-p N` option for
436   stripping leading slashes from diff paths.
437 - The `stg import` and `stg fold` commands support the `--reject` option
438   for leaving rejected hunks in corresponding `*.rej` files.
439 - New patch identification syntax: `<branch>:<patch>` (see documentation
440   for the "stg id" command).
441 - Autosigning of imported patches when `sign.autosign` configuration
442   option is set.
443 - A powerful Emacs mode for StGit was added to the "contrib" directory.
444   It displays the patch stack in an Emacs buffer, and can handle all
445   common StGit tasks.
446 - Man pages and an improved tutorial.
448 ### Changed
449 - Improved bash tab-completion, automatically generated from the stg
450   command definitions.
453 ## [0.14.3] 2008-06-08
454 ## [0.14.2] 2008-13-24
455 ## [0.14.1] 2007-12-11
456 ## [0.14] 2007-12-09
457 ## [0.13] 2007-07-26
458 ## [0.12] 2007-02-06
459 ## [0.11] 2006-10-21
460 ## [0.10] 2006-06-11
461 ## [0.9] 2006-04-07
462 ## [0.8] 2005-12-23
463 ## [0.7] 2005-10-02
464 ## [0.6] 2005-08-21
465 ## [0.5] 2005-07-30
466 ## [0.4] 2005-07-10