fix(DiffScreen): Reduce git commands by 60% when opening diff view #429
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.
When opening a diff view, vgit runs several git commands to gather file state. Two of these can be optimized:
First,
git rev-parse --show-toplevel(repo discovery) is called frequently but the result never changes for a given directory during a session. This is now cached per-directory. Edge case: if a user runsgit initin a new location during a session, the cache would be stale - rare enough that we accept it rather than add invalidation complexity.Second, the per-file conflict checks (
git ls-files -uandgit status) are only relevant during merge/rebase/cherry-pick operations. We now gate these withgit_conflict.status(), which only checks for files like.git/MERGE_HEAD- fast filesystem checks, no git commands. In the common case (no active merge), this skips 2 git commands.Together these reduce git commands from 5 to 2 when opening a diff view (60% reduction).