git: Fix panic on duplicate status entries in git status parsing (#49191)
morgankrey
and
factory-droid[bot]
created
## Summary
Fixes **ZED-2XA** — "Unexpected duplicated status entries: Untracked and
Untracked" crash.
**Impact:** 22 occurrences, 3 users affected (Sentry). The panic was
introduced in #23483 (2025-01-22) which added the `dedup_by` logic for
handling deleted-in-index + untracked file combinations.
No related GitHub issues were found filed against this crash.
## Root Cause
`GitStatus::from_str` sorts entries by path and then calls `dedup_by` to
merge duplicate entries. The only handled case was `(INDEX_DELETED,
Untracked)` — all other duplicates hit a catch-all `panic!`. In
practice, git can produce duplicate `??` (untracked) entries for the
same path, which triggered this crash.
## Fix
- Identical duplicate statuses (e.g., `Untracked, Untracked`) are now
silently deduplicated (keep one)
- Other unexpected duplicate combinations log a warning instead of
crashing
- Added a regression test that parses `"?? file.txt\0?? file.txt"` and
verifies it produces a single entry
## Verification
- Reproduction test passes: `cargo test -p git --
test_duplicate_untracked_entries`
- Full crate tests pass: `cargo test -p git` (20/20)
- Clippy clean: `./script/clippy`
Release Notes:
- Fixed a crash when git produces duplicate status entries for the same
file path
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>