Skip to content

Releases: mroth/scmpuff

v0.6.3

02 Mar 15:52

Choose a tag to compare

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/porcelain library to v0.1.1 with minor parser performance improvements

Full Changelog: v0.6.2...v0.6.3

v0.6.2

22 Feb 01:53
aff55c0

Choose a tag to compare

Note: v0.6.1 was retracted due to a critical bug where scmpuff init -s wrote to stderr instead of stdout, silently breaking eval "$(scmpuff init -s)" shell initialization. This release contains that fix plus all v0.6.1 changes listed below.

Bug fixes

  • 🐞 Fix init -s writing to stderr instead of stdout — Cobra's cmd.Println() falls back to stderr when no output writer is configured, which caused eval "$(scmpuff init -s)" to silently capture nothing. Replaced with explicit fmt.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 .R and .C git status codes (unstaged renames and copies)
  • 🐞 Intent-to-add support (#141) — Added handling for .A git status code (files added with git 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 /docs folder for new contributors (and bots)
  • 🧪 Removed SetOut/SetErr workaround 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/cobra to 1.10.2, github.com/caarlos0/go-version to 0.2.2

Full Changelog: v0.6.0...v0.6.2

v0.6.1

21 Feb 21:30
aaf8e52

Choose a tag to compare

v0.6.1 Pre-release
Pre-release

⚠️ RETRACTED: This release has a critical bug where scmpuff init -s writes to stderr instead of stdout, causing eval "$(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 .R and .C git status codes (unstaged renames and copies)
  • 🐞 Intent-to-add support (#141) - Added handling for .A git status code (files added with git 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 /docs folder for new contributors (and bots)

Dependencies

  • Bumped github.com/spf13/cobra to 1.10.2, github.com/caarlos0/go-version to 0.2.2

Full Changelog: v0.6.0...v0.6.1

v0.6.0

30 Jul 19:49

Choose a tag to compare

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 dump command 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

Full Changelog: v0.5.0...v0.6.0

v0.6.0-rc.1

30 Jul 18:49

Choose a tag to compare

v0.6.0-rc.1 Pre-release
Pre-release

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

Full Changelog: v0.5.0...v0.6.0-rc.1

v0.5.0

26 Feb 02:28
8a7a651

Choose a tag to compare

Features

🐠 At long last, Fish shell support is now fully implemented! (thanks to @jdelStrother, via #65)

Changelog

v0.4.0...v0.5.0

v0.4.0

17 Dec 02:08

Choose a tag to compare

Primary features

  • New plumbing command scmpuff exec should 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:embed removing 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 hub installed 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_CMD in 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

  • fix(expand): -r only converts to relative path on special vars (#63) 8de7498

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...v0.4.0

v0.3.0

24 May 19:37

Choose a tag to compare

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)

v0.2.1...v0.3.0

0.2.1

17 Feb 21:13

Choose a tag to compare

Fixed

  • Fix for expanding filenames containing a | character. (#21)
  • Allow scmpuff_status to handle detached git states. (#24, thx @bikezilla)
  • Rebuilt binaries with more recent Go to avoid macOS errors. (fixes #23)

0.2.0

27 Feb 19:54

Choose a tag to compare

Changed

  • Updated build toolchain for compiling in Go 1.6 and beyond.

Fixed

  • Fix for truncated branch names containing periods (issue #12)
  • Allow for semicolons in commit messages (PR #7, thx @creature)