feat: filter source tree by git-diff-branch changed files#313
Open
majiayu000 wants to merge 1 commit intomufeedvh:mainfrom
Open
feat: filter source tree by git-diff-branch changed files#313majiayu000 wants to merge 1 commit intomufeedvh:mainfrom
majiayu000 wants to merge 1 commit intomufeedvh:mainfrom
Conversation
When --git-diff-branch is used, only files that actually changed between the two branches are now included in the source tree and file list. This cuts token consumption by excluding unchanged files from the prompt. Closes mufeedvh#176 Signed-off-by: majiayu000 <[email protected]>
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.
Fixes #176
When
--git-diff-branchis set,source_treeand the collected file list now only include files that actually changed between the two branches. This cuts token count significantly for large repos where only a few files differ.What changed:
git.rs— addedget_git_diff_file_paths()which extracts changed file paths fromdiff.deltas(), covering both sides of renames.configuration.rs— addeddiff_files: Option<HashSet<PathBuf>>toCode2PromptConfigso the changed-path set can flow through to traversal.session.rs—load_codebase()now computesdiff_filesbefore callingtraverse_directory()whendiff_branchesis set.path.rs—discover_files()intersects each entry againstdiff_fileswhen present, filtering both the tree display and the file content list.full_directory_treestill overrides tree filtering as before.git_test.rs— test that creates a two-branch repo with modify/add/delete operations and verifies the returned paths.Tested with
cargo test --verbose, all existing + new tests pass.