chore: cache project root detection to avoid redundant Git operations #282
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.
Optimize project root detection by caching the result of
findProjectRoot()to avoid redundant Git subprocess calls. Previously, this function executed a Git command on every invocation, which could happen multiple times during a single CLI command execution across different modules.This change introduces a module-level cache that stores the project root after the first call, eliminating unnecessary Git operations for subsequent invocations. A
clearProjectRootCache()function is also provided for testing scenarios and edge cases where the repository root might change.Closes #265
Changes
findProjectRoot()inpackages/common/src/os.tsusing module-level variableclearProjectRootCache()utility function to invalidate the cache when neededNotes
The cache is stored at the module level and persists for the lifetime of the process. This is safe for CLI usage since each command invocation is a separate process. For long-running processes (like the VS Code extension),
clearProjectRootCache()can be called when the workspace changes to ensure the cache stays valid.