Releases: stacked-git/stgit
Stacked Git 1.3
This is a hot fix release that repairs a crash regression when using
the stgit.autosign
configuration option.
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
Stacked Git 1.1
The marquee feature of StGit 1.1 is preliminary support signed patches.
StGit now respects Git's commit.gpgsign
configuration option to create
signed patches (commits).
Removed
Added
- StGit GPG-signs patches when
commit.gpgsign
is set (#12) - Support
core.hooksPath
in git config - Add
-C
option forstg import
andstg fold
(#18)
Changed
- Allow importing mail and series from urls (#94)
stg refresh --edit
may also use--diff
and--diff-opts
(#98)stg goto
allows sha1 of a patch instead of patch name (#93)
Fixed
- Repair hang in
stg pull -m
,stg goto -m
, andstg push -m
- Repair
stg mail
to show diffstat of whole series (#104) - Repair MANIFEST.in to include AUTHORS.md and README.md files
Stacked Git 1.0
The 1.0 release has been over a decade in the making. While light on new
features, this release represents a major upgrade in StGit's foundation.
Internally, StGit now maintains all metadata in Git objects. This
enables novel workflows involving StGit stacks to be pushed and pulled
from remote repositories using git push
and git pull
.
And StGit has been fully migrated to Python 3. Dropping compatibility
with Python 2 has allowed StGit's code to become simpler and avoid
error-prone compatibility code. Python 3.5 is the new minimum required
version.
Removed
- Drop support for Python < 3.5
- Remove previously deprecated
stg publish
command - Removed contrib scripts:
stg-swallow
,stg-fold-files-from
,
stg-dispatch
,stg-whatchanged
, andstg-show-old
Added
- The pre-commit hook is now run for
stg refresh
- New
--spill
option forstg refresh
- Add stgit.series.description config option (#88)
- Official support for Python versions up to 3.9
Changed
- Stack metadata format 4. All metadata now kept in Git objects; no more
stack state files in .git/patches. A one-way auto-upgrade to format
version 4 will occur when StGit commands are run on an existing StGit
branch. - Use
python3
in shebangs instead ofpython
contrib/stgbashprompt.sh
is no longer executable- Internal docstrings now use reStructuredText instead of Epytext
Fixed
- Importing large patches is much, much faster (#66)
- Other performance improvements when dealing with large patches
- Repair diffstat when outside work tree root (#62)
- Use encoded (string) environment variables on Windows (#79)
- Fix
stg pull
when no upstream is configured (#83) - Fix
refresh
crash with path limiting and files added to index (#85) - Repair
new
with patchdescr.template crash (#87) - Repair
log
from worktree subdir with patches specified - Repair
import
allowing/generating duplicate patch names (#64) - Repair
mail --auto
to strip comments after addrs (#91)
Stacked Git 0.23
Stacked Git v0.23 is primarily a bug fix release that corrects
several bugs found in v0.22 along with several other longstanding
issues.
Removed
- Drop support for Python 3.3; Python 2 (2.6 and 2.7) remain deprecated, but supported for one last release
- Tutorial is removed; it now exists as part of the website
Deprecated
- Python 2.x support is deprecated and will be removed in a future release
Added
- Support html5 output of docs from asciidoc
- Add
--expose
option forstg pick
to allow picked commit message to be customized
Changed
- Limit mail diffstat to 72 columns
- Added pyproject.toml file for black configuration
- Minimum Git version is 2.2.0
- Quote stg and subcommand in man page synopsis
- Replaced RELEASENOTES with this CHANGELOG.md
- Replaces Documentation/SubmittingPatches with CONTRIBUTING.md
Fixed
- Repair MANIFEST.in and generated source dist
- Repair importing mail with ": " (colon space) in subject
- Fix mail cover letter shortlog
- Fix mail cover letter diffstat
stg series
now only outputs colors whenisatty()
- Repair mail SSL check (#57)
- Repair
stg mail
with both-a
and-e
options (#58) - Remove empty short-opt for
--no-submodules
ofstg refresh
- Repair build.py for Python 2 with explicit
flush()
stgit.refreshsubmodules
added to sample gitconfig
Internal
- Update docs build system from upstream Git docs
- Use coverage contexts to map commands to covered lines
- Improve mail tests
- Use GitHub Actions instead of TravisCI
- Format StGit source using black formatter
v0.22
Stacked Git 0.22 released
StGit is a Python application providing functionality similar to Quilt
(i.e. pushing/popping patches to/from a stack) on top of Git. These
operations are performed using Git commands, and the patches are
stored as Git commit objects, allowing easy merging of the StGit
patches into other repositories using standard Git functionality.
Download: https://github.com/ctmarinas/stgit/releases/download/v0.22/stgit-0.22.tar.gz
Main repository: https://github.com/ctmarinas/stgit
Project homepage: http://www.procode.org/stgit/
Issue tracker: https://github.com/ctmarinas/stgit/issues
Changes since 0.21:
- Python 2.x support is deprecated and will be removed in the next StGit release
stg publish
is deprecated and will be removed in the next StGit releasestg new
now includes patch name in log messagestg branch --create
inherits remote correctly from parent commitishstg branch --rename
can now rename the current branchstg branch --create
now works even if the workspace is dirty, consistent withgit checkout
stg branch --description
now works on both regular and stgit branchesstg import
has new --keep-cr option, likegit mailsplit
stg refresh
andstg edit
now reset the commiter information, consistent withstg push
stg edit --diff
now implies--edit
- git notes are now preserved when patches are modified
- Patch names are checked earlier to avoid inconsistent stack states
- Improved commit data parsing and handling of non-UTF8 encodings
- Repair git error messages when checking stgit version from outside a git repo
- Tutorial improvements
- Many additional tests and test improvements
- Remove debian packaging; downstream Debian uses its own anyway
- All stgit commands now use "new" git library infrastructure
v0.21
Stacked Git 0.21 released
StGit is a Python application providing functionality similar to Quilt
(i.e. pushing/popping patches to/from a stack) on top of Git. These
operations are performed using Git commands, and the patches are
stored as Git commit objects, allowing easy merging of the StGit
patches into other repositories using standard Git functionality.
Download: https://github.com/ctmarinas/stgit/releases/download/v0.21/stgit-0.21.tar.gz
Main repository: https://github.com/ctmarinas/stgit
Project homepage: http://www.procode.org/stgit/
Issue tracker: https://github.com/ctmarinas/stgit/issues
Changes since 0.20:
- Build reproducibility repairs (Thanks reproducible-builds.org team!)
- Faster handling of large patches (#44)
- Python can now be run with optimizations (
python -O
) stg log
now prints trailing newline- Improved command line option parsing for
stg log
v0.20
Stacked Git 0.20 released
StGit is a Python application providing functionality similar to Quilt
(i.e. pushing/popping patches to/from a stack) on top of Git. These
operations are performed using Git commands, and the patches are
stored as Git commit objects, allowing easy merging of the StGit
patches into other repositories using standard Git functionality.
Download: https://github.com/ctmarinas/stgit/releases/download/v0.20/stgit-0.20.tar.gz
Main repository: https://repo.or.cz/stgit.git
Project homepage: http://www.procode.org/stgit/
Issue tracker: https://github.com/ctmarinas/stgit/issues
Changes since 0.19:
Features:
stg patches -d
can now output colored diffs.stg publish --overwrite
allows branch to be overwritten instead of creating
new commits.stg log --clear
deletes the stack's log history. Use with caution.- Fish shell completions for stg.
- Zsh completions for stg.
- Branch protection metadata now captured in config instead of
.git/patches/protect file. This updates stgit's metadata format from
v2 to v3. stg mail --domain
option overrides the host's domain in the message ID.
Bug fixes:
stg show
detects conflicting --applied and --unapplied options.stg show --stat
now shows commit headers.stg patches --diff
now shows proper diff instead ofb'...'
repr of diff.stg diff --range
detects some invalid values (e.g.-r ..
).stg diff
no longer shows binary diffs by default. Use-O--binary
or add
--binary
to stgit.diff-opts in config.- Date parsing is now more portable, only use platform specific
date
as last
parsing option. Affects, e.g.,stg refresh --authdate
. - Repaired seach path for templates to avoid looking in Python site-packages
directory. - Ensure stdout and stderr are flushed. Rarely affected
stg diff
. stg repair
will now fail if extra command line arguments are provided.- Bash completions are now generated in a reproducible manner.
stg edit --diff
on an empty patch no longer crashes.- Diagnostic output is now routed to stderr instead of stdout. Diagnostic output
is also now sent to stderr unconditionally, i.e. no more isatty() test (#35). stg pick
no longer fails when picked commit has empty message (#39).stg rebase
no longer crashes when there are conflicts (#34).stg pick
no longer crashes if --name is not provided when picking a regular
commit object.
Code quality:
- Converted to "new" lib infrastructure: show, patches, diff, pick, pull,
rebase, and fold. - Improved test coverage for: branch, diff, pick, sync,
- New tests for: files, patches, fold, series
- Portable use of iconv, sort, and sed in tests.
- Linting using flake8 and isort.
- All Python code now conforms to PEP-8.
- Updated test infrastructure from git 2.20.
- Parallel tests with coverage (
make -j4 coverage
) now works. - Documentation build is not included in code coverage.
- Repaired log end messages when using STGIT_SUBPROCESS_LOG=debug.
- Renamed "dunder" instance attributes to improve debugging.
- Fail faster when patch name has slash ('/') (#24).
v0.19
Stacked Git 0.19 released
StGit is a Python application providing functionality similar to Quilt
(i.e. pushing/popping patches to/from a stack) on top of Git. These
operations are performed using Git commands, and the patches are
stored as Git commit objects, allowing easy merging of the StGit
patches into other repositories using standard Git functionality.
Download: https://github.com/ctmarinas/stgit/archive/v0.19.tar.gz
Main repository: https://github.com/ctmarinas/stgit
Project homepage: http://www.procode.org/stgit/
Issue tracker: https://github.com/ctmarinas/stgit/issues
The main changes since release 0.18:
-
Python 3 support. StGit supports Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6,
and 3.7. PyPy interpreters are also supported. -
Submodules are now ignored when checking if working tree is clean. Submodules
are also not included by default when refreshing a patch. -
Config booleans are now parsed similarly to git-config.
-
contrib/stgit.el is now licenced with GPLv2.
-
Repair handling of emails with utf-8 bodies containing latin-1 characters.
Also correctly decode email headers containing quoted encoded words. -
StGit's version is now correct/available the release archive.
-
Add continuous integration (travis-ci) and code coverage (coveralls) support.
-
Many new test cases were added.