Bug Fixes
-
distinguish aggregate causes from genuine error chains
ein t organisecould report seven independentDirectory not empty
failures exactly like a seven-step causal chain. All seven also pointed
at the aggregation site inorganize.rs, hiding where they originated.
The errors and their original locations were still stored; the report
lost their relationships while traversing nestedErrorboundaries.Show hierarchy guides at root forks as well as nested forks. Traverse
nested boundaries through their logical children, reusing the graph
already used for cause selection, rather than treating their entire
breadth-first diagnostic list as a single chain. Pair each displayed
root diagnostic with its original caller location. Genuine single-child
paths retain their compact numbered layout.When
auto-chain-errorflattens an aggregate, label its report
Caused by (flattened):. Genuine chains keepCaused by:even with that
feature enabled. This keeps thesource()representation and traversal
semantics intact while making the loss of hierarchy visible.For example, the same three failures now differ visibly:
Failed to handle 3 repositories Caused by: ├─0: Directory not empty, repository="a" ├─1: Directory not empty, repository="b" └─2: Directory not empty, repository="c"Failed to handle 3 repositories Caused by (flattened): 0: Directory not empty, repository="a" 1: Directory not empty, repository="b" 2: Directory not empty, repository="c"A genuine chain describes successive causes instead:
Organizing failed Caused by: 0: Failed to handle repository, repository="a" 1: Failed to rename repository 2: Directory not emptyorganisenow retains a per-repository context withrepositorypath
metadata, so the final aggregate identifies every failed repository even
when progress output is unavailable. Keep classifications and original
I/O causes beneath that context. A disposable three-repository fixture
checks that occupied destinations preserve both source and destination
contents while retaining all three failures.Document the three layouts, add regression checks for aggregate/chain
distinctions and original locations, and update affected snapshots in
gix-error, revision parsing, and organization tests.Reduce singleton noise below the root causes: print
└─ Causeinstead
of└─0: Causewhen that displayed level contains only one cause. Keep
root causes, sibling groups, and multi-cause chains numbered. A mixed
three-repository example checks a lone cause, a lone context leading to
a nested fork, and a two-cause chain; the existing long-chain test keeps
coverage of indices through10.
Commit Statistics
- 3 commits contributed to the release over the course of 11 calendar days.
- 11 days passed between releases.
- 1 commit was understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages