You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fix unnecessary server reindexing and Git-internal indexing - #165
Addresses server logs reporting source-file modifications during an otherwise unchanged initial build, processing .git/objects files, and reporting zero delta changes before saving live mutations.
Exclude .git directory subtrees from default index builds and server refreshes using the shared exclusion list. Preserve --no-ignore opt-in, normal filesystem-scan behavior, and Git metadata monitoring for ignore rules and tracked paths.
Preserve indexed content fingerprints when withholding startup metadata evidence. Deferred notifications still force content verification, but unchanged files no longer produce redundant overlay mutations or saves.
Distinguish filesystem notifications, binary classification, and content-index updates in trace messages. Report unique delta candidates alongside separate scan and live-overlay counts.
Document the behavior in README and the agent guide.
Regression coverage
Covers both index-build strategies, explicit opt-in, nested Git directories, binary filename membership, native watcher subscriptions, fresh and pre-existing indexes, .git/info/exclude updates, reload persistence, and unchanged versus changed startup replay (including directory notifications and preserved modification times).
--hidden no longer admits .git directories into the default indexed corpus. Use --no-ignore consistently on index and serve to include them, or --no-index --hidden for explicit filesystem inspection. Startup reconciliation removes Git-internal entries from older indexes.
Preserve indexed content fingerprints during deferred-event replay, exclude Git metadata directories from the default indexed corpus, and clarify watcher and save diagnostics. Add regression coverage and document the behavior.
Co-authored-by: Copilot App <[email protected]>
Keep native per-directory subscriptions for ordinary ignore sources such as .git/info/exclude, while retaining Git-internal indexing filters and in-root containment. Cover regular, missing, and symlinked sources.
Co-authored-by: Copilot App <[email protected]>
Resolve the candidate ignore-file location separately from existing sources, retain its contained parent watch, and recognize newly created exclude files during events and recovery. Cover absent startup and delete-refresh-recreate on native watchers.
Co-authored-by: Copilot App <[email protected]>
Seed a historical exclude file so the exact corrective-pass assertion is not affected by the independent ignore-source recovery window.
Co-authored-by: Copilot App <[email protected]>
Honor filesystem case semantics for implicit .git exclusion
tgrep-core/src/builder.rs:119
The implicit exclusion is matched through the existing case-sensitive directory-name checks (walker.rs:72 and serve.rs:3014). On a case-insensitive filesystem, Git accepts a repository metadata directory whose preserved spelling is .GIT, but DirEntry::file_name()/the watcher path retain that spelling, so the injected lowercase .git does not match and its objects are still indexed. Please make the implicit Git-directory check follow filesystem case semantics without changing explicit --exclude matching, and cover mixed-case metadata on Windows.
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
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.
Summary
Addresses server logs reporting source-file modifications during an otherwise unchanged initial build, processing
.git/objectsfiles, and reporting zero delta changes before saving live mutations..gitdirectory subtrees from default index builds and server refreshes using the shared exclusion list. Preserve--no-ignoreopt-in, normal filesystem-scan behavior, and Git metadata monitoring for ignore rules and tracked paths.Regression coverage
Covers both index-build strategies, explicit opt-in, nested Git directories, binary filename membership, native watcher subscriptions, fresh and pre-existing indexes,
.git/info/excludeupdates, reload persistence, and unchanged versus changed startup replay (including directory notifications and preserved modification times).Validation
Executed on Windows:
cargo test --workspace --lib --bins --locked --quiet— 524 passed, 1 ignored.cargo test -p tgrep-cli --test indexed_hidden --test indexed_files --test watcher_dot_ignore --test warm_start_gitignore --test watcher_watch_registration --locked --quiet— 25 passed.cargo clippy --workspace --benches --locked --quiet -- -D warnings— passed.cargo fmt --all -- --checkandgit diff --check— passed.Compatibility
--hiddenno longer admits.gitdirectories into the default indexed corpus. Use--no-ignoreconsistently onindexandserveto include them, or--no-index --hiddenfor explicit filesystem inspection. Startup reconciliation removes Git-internal entries from older indexes.