fix(git): switch ignored files resolver to git-ls-files for consistency#2047
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Commit ea7491e introduced a performance optimization using git-check-ignore to speed up resolving ignored files in large repositories. However, git-check-ignore behaves differently from git-status when dealing with directories that contain only ignored files.
With the previous optimization, such directories would initially be displayed (due to check-ignore logic) but would disappear upon reopening neo-tree (which relies on git status results). This inconsistency is confusing for users.
I measured the execution time of the relevant git commands emitted by neo-tree in a large repository (Linux kernel source tree):
(The real command is very long so I only show the git sub command type.)
While git check-ignore is the fastest, git ls-files is still significantly faster than git status while maintaining behavioral consistency with git-status.
This removes check-ignore.lua, and switches the ignored files resolver to use git-ls-files for a simple fix.