New Features
-
make trace output independently configurable
Quick review only, as it's mostly about tracing and
gixwhich both aren't super
important, and are seemingly working well. An extra agent-review couldn't
find anything either.Replace the old boolean trace switch with a bounded
-t/--tracecounter:
forest INFO and DEBUG at one or two occurrences, then flat DEBUG and TRACE at
three or four. Keep--threadslong-only and route tracing independently of
verbose and progress rendering, including commands with bespoke execution paths
and corpus runs.Initialize display tracing once before repository discovery, buffer it outside
prodash, and emit it after command and progress teardown. Format forest and
flat output with ANSI, then adapt the final stderr write so terminals get color
while pipes andNO_COLORremain plain.Corpus worker subscribers share that sink while retaining their complete
JSON trace storage, and flat modes include completed spans.gix tixremains
delegated to Tix so it installs only one subscriber.
Bug Fixes
-
confine organized repositories to their destination
ein tool organize --executeused a repository's origin URL to construct a
move destination without resolving parent components or checking containment.
It was demonstrated percent-decoded path traversal moving a repository
outside the user-selected root.Resolve the completed destination with the existing
gix::path::realpath()
helper, which handles existing symlinks and missing leaf components, then reject
paths outside the canonical destination before creating directories or moving
anything. The subsequent self-nesting check now also receives a resolved path.Disposable isolated repositories reproduce HTTP percent-encoded traversal, a
parent-directory hostname, SSH traversal, and an existing symlink escaping the
destination. A control retains the ordinary host/owner/repository layout and
.gitsuffix handling. Both escape regressions fail before the fix.Git reference:
urlmatch.c::url_normalize()atd38352cd43abalso normalizes dot
segments; organizing repositories is gitoxide-specific and additionally needs
filesystem confinement.
Validation: all three focused organizer tests pass with theorganizefeature. -
support SHA-256 in query path tracing
ein tool query . trace-path filefailed on SHA-256 repositories because
path history rows were decoded as[u8; 20], although SQLite stores the
full 32-byte commit IDs.Decode the blob into
Vec<u8>and useObjectId::try_from()to select the
hash kind from its length while rejecting unsupported lengths. Add an
isolated journey test for SHA-1 and SHA-256 that checks the traced path,
diff statistics, and full commit ID against Git.
Commit Statistics
- 15 commits contributed to the release over the course of 13 calendar days.
- 13 days passed between releases.
- 3 commits were understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Prepare changelogs prior to release (794eeef)
- Merge pull request #3032 from GitoxideLabs/sec-audit (1d7bac7)
- Confine organized repositories to their destination (159fc31)
- Merge pull request #3033 from GitoxideLabs/gix-cli-progress-cleanup (80f4b03)
- Make trace output independently configurable (bc278ac)
- Merge pull request #3022 from GitoxideLabs/release-testtools (f819565)
- Use existing error helpers for guards and conversions (1c25831)
- Use
or_error()at public exception boundaries (535672e) - Merge pull request #3029 from cruessler/fix-minor-sha-256-issues-in-cli (6c12f2d)
- Support SHA-256 in query path tracing (f3225e9)
- Don't hardcode hash in
gix free index(a8e3143) - Merge pull request #3025 from GitoxideLabs/worktree-create (acf906f)
- Merge pull request #3027 from cruessler/remove-sha-1-default-in-pipeline (06b0098)
- Merge pull request #2977 from GitoxideLabs/worktree-create (d9f7c85)
- Merge pull request #3020 from GitoxideLabs/report-september (5fb3dcf)