Fix CI failure: refresh git index before working tree conflict check #513
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
CI test
test_list_full_working_tree_conflictswas failing with snapshot mismatch:+ feature ! ✗ +1 -1 ↓1(conflict symbol✗)+ feature ! ↓ +1 -1 ↓1(behind symbol↓)The test creates uncommitted changes that conflict with main, but in CI the
WorkingTreeConflictsTaskwas seeing the working tree as clean and falling back to commit-based conflict detection.Root Cause
"Racy git" timing issue: when files are modified within git's timestamp granularity, git's index may not detect them as dirty until
git update-index --refreshis run. TheWorkingTreeConflictsTaskwas checkinggit status --porcelainwithout refreshing the index first, causing intermittent failures in CI where commands run in quick succession.Solution
Added
git update-index --refreshbefore thegit status --porcelaincheck inWorkingTreeConflictsTask::compute(). This ensures git's index is refreshed before checking if the working tree is dirty. Errors are ignored since status will still work even if refresh fails.Testing
Related
🤖 This is an automated fix for CI failure. Please review before merging.