Releases: mroth/scmpuff
v0.6.3
What's Changed
- Fix numeric arguments being incorrectly expanded when used as flag values or branch names (#145)
- Fix $@ quoting in shell scripts to handle filenames with spaces, and localize leaked variables (#147)
- Fix init tests to be shell-independent and verify embedded scripts (#150)
- Bump
github.com/mroth/porcelainlibrary to v0.1.1 with minor parser performance improvements
Full Changelog: v0.6.2...v0.6.3
v0.6.2
Note: v0.6.1 was retracted due to a critical bug where
scmpuff init -swrote to stderr instead of stdout, silently breakingeval "$(scmpuff init -s)"shell initialization. This release contains that fix plus all v0.6.1 changes listed below.
Bug fixes
- 🐞 Fix
init -swriting to stderr instead of stdout — Cobra'scmd.Println()falls back to stderr when no output writer is configured, which causedeval "$(scmpuff init -s)"to silently capture nothing. Replaced with explicitfmt.Fprintln(cmd.OutOrStdout(), ...). - 🐞 Fix "argument list too long" with gigantic file lists (#144) — Cap numeric shortcuts at 250 files to prevent "Argument list too long" errors in repos with hundreds of thousands of untracked files
- 🐞 Unstaged rename/copy support (#142) — Added handling for
.Rand.Cgit status codes (unstaged renames and copies) - 🐞 Intent-to-add support (#141) — Added handling for
.Agit status code (files added withgit add -N)
Internal / testing
- 🥒 Replaced Aruba test suite with Go testscript (#140) — Migrated the Ruby/Cucumber integration tests to native Go testscript, removing the Ruby test dependency from the development and CI environment entirely 🎉
- 🔎 Added periodic govulncheck scanning to CI (#143)
- 📚 Contributor docs: Added extensive documentation in the
/docsfolder for new contributors (and bots) - 🧪 Removed
SetOut/SetErrworkaround from testscript harness so integration tests exercise real cobra defaults and catch stdout/stderr regressions - Retracted v0.6.1 in
go.mod
Dependencies
- Bumped
github.com/spf13/cobrato 1.10.2,github.com/caarlos0/go-versionto 0.2.2
Full Changelog: v0.6.0...v0.6.2
v0.6.1
⚠️ RETRACTED: This release has a critical bug wherescmpuff init -swrites to stderr instead of stdout, causingeval "$(scmpuff init -s)"to silently fail. Use v0.6.0 or wait for v0.6.2. See details below.
Bug fixes
- 🐞 Fix "argument list too long" with gigantic file lists (#144) - Cap numeric shortcuts at 250 files to prevent "Argument list too long" errors in repos with hundreds of thousands of untracked files
- 🐞 Unstaged rename/copy support (#142) - Added handling for
.Rand.Cgit status codes (unstaged renames and copies) - 🐞 Intent-to-add support (#141) - Added handling for
.Agit status code (files added withgit add -N)
Internal / testing
- 🥒 Replaced Aruba test suite with Go testscript (#140) — Migrated the Ruby/Cucumber integration tests to native Go testscript, removing the Ruby test dependency from the development and CI environment entirely 🎉
- 🔎 Added periodic govulncheck scanning to CI (#143)
- 📚 Contributor docs: Added extensive documentation in the
/docsfolder for new contributors (and bots)
Dependencies
- Bumped
github.com/spf13/cobrato 1.10.2,github.com/caarlos0/go-versionto 0.2.2
Full Changelog: v0.6.0...v0.6.1
v0.6.0
v0.6.0 includes major under the hood changes to make scmpuff more maintainable and pave the way for future feature enhancements. While the typical user won't notice much change, the highlights include:
- 🏗️ A significant under the hood refactoring of the status command. Git parsing is now handled by an external library (written by the same author), paving the way for a future migration to porcelain=v2 support. Output rendering has a robust test framework that will enable much easier iteration on the UI in the future.
- 🧼 Maintenance of the decade+ old code structure and build system to make it easier for future iteration and new contributors.
- 🥟A new
scmpuff debug dumpcommand that makes it easy for end users to create an archive of debug files that will make it easy to create reproducible test cases of git repository state. The user will be prompted to run this command and file an issue if a parsing error is encountered. With this data, I expect it will also be significantly easier to address some longstanding edge-case issues related to repository state in a robust and reliable manner.
This is a good time as any to say that I am very actively looking for new blood to work on the scmpuff project: I have not been super actively developing it for the past 7-8 years as I work on other projects, and my renewed efforts now are primarily to get it into a good state to welcome new contributors to help polish things up for a roadmap to v1.0 (#93). I am happy and excited to provide any guidance or mentorship for someone who wants to get involved.
What's Changed
- docs: Remove duplicated fish flag from README by @howardburgess in #80
- fix(status): Handle symbolic links correctly by @basil in #94
- ci: cleanup build toolchain for 2025 by @mroth in #95
- refactor: make all modules internal by @mroth in #97
- refactor: status command by @mroth in #99
- refactor: adopt github.com/mroth/porcelain/statusv1 for status parsing by @mroth in #100
- feat: integrate new debug dump cmd (previously dumptool) by @mroth in #101
- refactor: Cobra integration cleanup by @mroth in #102
New Contributors
- @howardburgess made their first contribution in #80
- @basil made their first contribution in #94
Full Changelog: v0.5.0...v0.6.0
v0.6.0-rc.1
rc.1 is a pre-release build to make sure the new build system refinements perform as expected for automated releases.
What's Changed
- docs: Remove duplicated fish flag from README by @howardburgess in #80
- fix(status): Handle symbolic links correctly by @basil in #94
- ci: cleanup build toolchain for 2025 by @mroth in #95
- refactor: make all modules internal by @mroth in #97
- refactor: status command by @mroth in #99
- refactor: adopt github.com/mroth/porcelain/statusv1 for status parsing by @mroth in #100
- feat: integrate new debug dump cmd (previously dumptool) by @mroth in #101
- refactor: Cobra integration cleanup by @mroth in #102
New Contributors
- @howardburgess made their first contribution in #80
- @basil made their first contribution in #94
Full Changelog: v0.5.0...v0.6.0-rc.1
v0.5.0
Features
🐠 At long last, Fish shell support is now fully implemented! (thanks to @jdelStrother, via #65)
Changelog
v0.4.0
Primary features
- New plumbing command
scmpuff execshould eliminate the need for shell escaping in the git wrappers, for greater reliability. (Thanks to @jdelStrother! PR #49) - Support for git restore (Thanks to @creature! PR #51)
- The build and test process for scmpuff has been modernized, and now relies on less dependencies. In one example, we use the newer built-in
//go:embedremoving the need for generated source shell files with go-bindata. This should hopefully make it a bit easier for new contributors to get involved. - Updated dependencies, etc.
Changes
- scmpuff no longer makes assumptions that just because you have
hubinstalled that you definitely want to use it. So if you want to use a different git binary than what is in your PATH, for example if you typically alias git to hub, you must now set$SCMPUFF_GIT_CMDin your shell to the path of the alternate binary, for example,export SCMPUFF_GIT_CMD=/usr/local/bin/hub. This may be an unexpected change for a tiny subset of users, but should increase reliability and reproducibility for everyone. See #62.
Bug fixes
Other changes
- chore: basic vscode devcontainer environment de534d9
- chore(ci): update goreleaser for arm64 builds 5886633
- don't force hub usage in git-wrapper if installed (#62) ffe12a6
- chore(docs): remove unnecessary install instructions c540b6b
- chore: rename old benchmark script 59c60ae
- chore: remove CHANGELOG file in favor of GH release notes 4ebcd04
- build(ci): go mod=readonly 0a9db7e
- build(ci): disable go caching on runners a975a8b
- build: deprecate shell buildscript 0c18592
- chore: move intro command into subpackage for consistency eacc8bd
- Merge pull request #60 from mroth/dependabot/go_modules/github.com/spf13/cobra-1.2.1 f4a76b8
- chores(deps): disable built-in completions from cobra >=v1.2.x 0564334
- Bump github.com/spf13/cobra from 0.0.5 to 1.2.1 379a265
- Create codeql-analysis.yml 5a771f8
- chore(ci): add dependabot for dependency updates f32ccdf
- refactor: use go:embed to remove dependency on bindata 16ec545
- Merge pull request #49 from jdelStrother/exec b3407b3
- feat(exec): add help text and example usage a5994d7
- Migrate CI to GitHub Actions (#56) 92aa7ea
- remove default community health files e280626
- integration tests via aruba 2.0 (#55) 13cbd56
- Support for git restore (#51) ab65b2a
- Add a test for shell expansion 93dc4a4
- Move arguments to internal/arguments c7c6582
- Refactor shared code into a 'arguments' package 38698d3
- Introduce scmpuff exec ffb3fc0
- bump cobra dep (#50) 2233a2c
- Create FUNDING.yml b7ad561
v0.3.0
Small fixes and no real feature changes, but enough build tooling was changed that this is being considered a minor release instead of patch.
Changed
- Build tooling updated to more modern Go toolchain, removing some legacy/deprecated tools so that this actually can be maintained in 2019.
- Switch from Godep to go modules (and removed vendored modules).
- Switch release build cross-compile tool from goxc to goreleaser.
- go-bindata updates.
- CLI library updated to recent version of Cobra.
Fixed
- Fix processing statuses with very complex changesets (#45)
- scmpuff expand should escape '*' (#44, thx @jdelStrother)
- scmpuff status works on naked zero commit repo (#37, thx @zommerfelds)