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.
This pull request introduces logic to efficiently handle large files in multi-file diffs by checking file sizes before loading their content, and refactors how file content is read from the filesystem and git objects. The main goal is to avoid loading or diffing files larger than 2MB, treating them as binary for performance and safety. Several helper functions are added for querying file sizes from both the filesystem and git history, and the code is refactored to consistently use these helpers throughout the diffing logic.
Large file handling and binary detection:
MAX_FILE_BYTES) for files inMultiFileDiff; files exceeding this size are treated as binary and their content is not loaded. [1] [2]New helper functions for file size:
get_file_at_commit_sizeandget_staged_content_sizeingit.rsto efficiently query file sizes in git history and index without loading full content. [1] [2]MultiFileDifffor reading file content or treating as binary based on size, for both git and filesystem sources.Refactoring and code simplification:
diff_from_bytesmethod in favor of in-place logic that checks for binary files and computes diffs only for files under the size limit. [1] [2]Minor cleanups:
multi.rs.