This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryBroad release touches Commit Details, Bug Fixes, Commit Statistics, and https://www.conventionalcommits.org.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Bugfix | Medium |
Derives $0 for `sh -c` from the shell's basename, fixing diagnostic mismatches. Derives $0 for `sh -c` from the shell's basename, fixing diagnostic mismatches. Source: llm_adapter@2026-05-26 Confidence: high |
— |
Full changelog
Bug Fixes
-
Derive
$0forsh -cfrom the shell's basename
gix-commandinvokes shells assh -c <script> <command_name> [args...],
where thecommand_nameoperand becomes$0inside the shell. Shells
use$0to prefix their own diagnostic messages (e.g.
sh: line 1: <cmd>: command not found), so the value should identify
the actually-running shell.Derive the value from the shell program itself, using the basename of
the path passed toCommand::newfor the shell:- With the default shell on Unix (
/bin/sh),$0issh. - With the default shell on Windows (
sh.exefrom Git for Windows),
$0issh.exe, matching the launched binary's actual name. - With a customized
shell_program,$0reflects the chosen shell
(e.g.bash,zsh), so its diagnostics correctly identify it.
If the shell path has no extractable basename —
Path::file_name()
returnsNonefor degenerate input like an empty string or/— fall
back to_, the conventional placeholder for an unused$0used in
shell one-liners. This keeps the construction total without claiming a
specific shell name.Using the basename also avoids an MSYS2-specific surprise on Windows:
Cygwin/MSYS2 shells translate some command-line content received via
lpCommandLine, including full Windows paths, so a full shell path
passed as$0would come back from the shell as its translated form.This fixes #1842. (See #1840 and #1842 regarding some of these issues.)
- With the default shell on Unix (
Commit Statistics
- 12 commits contributed to the release over the course of 28 calendar days.
- 28 days passed between releases.
- 1 commit was understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details- Uncategorized
- Merge pull request #2607 from SarthakB11/fix/issue-1842 (faecc23)
- Derive
$0forsh -cfrom the shell's basename (8323858) - Add tests for
$0deriving from the actually-running shell (d62e33c) - Pass sh (not --) as $0 to sh -c (6752a96)
- Merge pull request #2575 from SarthakB11/fix/issue-2316 (4743361)
- Review (1980190)
- Document why each fixture archive is .gitignored (e3d5a04)
- Merge pull request #2568 from GitoxideLabs/dependabot/cargo/cargo-56d6b174d8 (ab2fee1)
- Update crates to Rust 2024 edition (2cb17b2)
- Remove rust_2018_idioms lint declarations (e10d5f6)
- Raise MSRV for hash dependency updates (3675a8d)
- Merge pull request #2546 from GitoxideLabs/fix-2545 (adb8328)
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Earlier breaking changes
- vgix-v0.84.0 Allow checkouts of empty repositories; `destination_must_be_empty` becomes `Option<bool>`
- vgix-worktree-stream-v0.33.0 Changes API of `Stream::add_entry_from_path` to require `hash_kind` argument.
- vgix-object-v0.61.0 Renames `Data::hash_kind` to `Data::object_hash` for consistency.
Beta — feedback welcome: [email protected]