Stacked Git 1.2
This release is choc full of new features, including
stg rebase --interactive
and stg rebase --autostash
as well as many
quality of life improvements to new
, edit
, squash
.
StGit v1.2 updates the stack metadata. Gone are .stgit
branches!
Instead, stack metadata refs are now found in the new refs/stacks
namespace instead of the regular branches namespace (refs/heads
). This
change eliminates clutter when looking at branch lists and in various
forms of git log
.
An important packaging change to be aware of is that StGit now uses
setuptools instead of the deprecated distutils. This change will affect
downstream StGit packagers, but hopefully StGit vectoring toward modern
Python packaging standards will be a positive in the long run.
Many thanks to Topher Brown for significant contributions to StGit
v1.2!
Deprecated
- Python 3.5, which became EOL 2020-09-13, support is deprecated and
will be removed in a future StGit release - Python 3.6, which will be EOL 2021-12-23, support is deprecated and
will be removed in a future StGit release
Added
stg rebase
learns--interactive
; easily re-order, edit, squash,
fixup, or delete patches via your editorstg rebase
learns--autostash
; stash changes before the rebase and
apply them after. Also configurable with thestgit.autostash
configuration optionstg edit
can now rename patches (#119)stg edit
gains helpful instructions (#138)stg new
learns--verbose
, which includes a diff in the editor
window (similar togit commit --verbose
). This behavior is also
configurable with thestgit.new.verbose
configuration optionstg push
andstg float
learn--noapply
option; allows patches
to be reordered without updating worktree and deferring merge conflict
resolution (#144)stg edit
,stg refresh
, andstg new
learn the--sign-by
,
--ack-by
, and--review-by
options which allow those respective
trailers' values to be specified by the user on the command line (#92)
Changed
- Stack metadata version 5; stack metadata is moved from
refs/heads/<branch>.stgit
torefs/stacks/<branch>
and the stack
metadata file now uses a JSON format instead of the prior custom
format; the stack metadata will be upgraded to v5 on first use of
this version of StGit; like all stack metadata upgrades, this is a
one-way auto-upgrade for existing stacks (#65) - Use setuptools instead of distutils for packaging
- No git or python version checks in setup.py
- Use different dynamic versioning system
- Install
stg
executable as console_script entry point - More sophisticated search for bash.exe on Windows when running hooks
- The editor window text for
stg squash
has been modified to mirror
git's behavior -- the squash edit message now includes all commits
(#71) - Binary diffs are no longer shown when with
stg edit -d
- Multiple trailers can now be added at once; this is now allowed, for
example:stg edit --sign --review --ack
- Update zsh completion for
stg rebase
to show local and remote heads
(#102) - Zsh completions for commands with patch arguments now comprehend the
effect of-b/--branch
and-B/--ref-branch
- Zsh completions now guard patch names--one less TAB press to complete
patch names in certain contexts stg import
now extracts theMessage-ID
email header into the patch
message (#42)
Fixed
- Repair crash when attempting to export empty patch (#112)
- Exact command name matches are unambiguous (#110)
- Exiting with an empty
stg edit
editor will now abort the edit;
previously it would delete your commit message. (#138) - Repair completions when stg.series.description is enabled in config
- Workaround child process reaping race on Windows (#78)
- Repair crash with
stg float --series
when bad patch name in series - Repair zsh completion for
stg float
to accept multiple patch names - Repair zsh completion for changed files, affecting
stg refresh
and
stg diff
Internal
- Add link to coverage.io project to CONTRIBUTING.md
- Set smart
exclude_lines
default for 'coverage' - Expanded test suite for
stg edit
- Add pkgtest.py script to help test StGit packaging
- Cleanup .gitignore files